Student类 (重写toString() ,equals())
package com.ITheima.API_Object; import java.util.Objects; public class Student { private String name; private char sex; private int age; public Student() { } public Student(String name, char sex, int age) { this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } //重写toString() @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", sex=" + sex + ", age=" + age + '}'; } /** * 定制相等规则 * 两个对象的内容一样 旧认为是相等的 * s1.equals(s2) * 比较者 s1==this * 被比较者 s2==>o */ // //重写equals // @Override // public boolean equals(Object o){ // //判断传入的是否是Student类型的实例 // if(o instanceof Student){ // // 多态转换类型 // Student s2=(Student)o; // return this.name==s2.name&&this.age==s2.age&&this.sex==s2.sex; // }else{ // return true; // } // }; @Override public boolean equals(Object o) { //1 判断是否是同一个对象比较, 如果是 返回true if (this == o) return true; //2 如果a 是null 则返回false 如果a 不是学生类型 则返回false ...Student !=...Pig if (o == null || getClass() != o.getClass()) return false; //3 说明o 一定是学生类型 且不为null Student student = (Student) o; return sex == student.sex && age == student.age && Objects.equals(name, student.name); } }
Test类 toString()
package com.ITheima.API_Object; /** * 目标:掌握Object类中toString 方法的使用 */ public class Test { public static void main(String[] args) { /** * *Object.toString()方法 返回对象的引用地址 * 存在的意义是 为了让我们在类中重写该方法用来查看 对象的内容 */ Student s = new Student("张三", '男', 18); String rs=s.toString(); System.out.println(rs); System.out.println(s.toString()); //直接输入对象变量,默认可以省略toString调用不屑 System.out.println(s); } }
Test1 equals()
package com.ITheima.API_Object; public class Test1 { public static void main(String[] args) { Student s1=new Student("张三",'男',11); Student s2=new Student("张三",'男',11); //Object.equals(object1) 比较两个对象的地址是否相等 重写Object.equals(obj1) System.out.println(s1.equals(s2));//true System.out.println(s1==s2);//false == 也是比较两个对象的地址 } }
package com.ITheima.API_Object; import java.util.Objects; public class Test2 { public static void main(String[] args) { String s1 = null; String s2 = new String("itheima"); String s3 = new String("itheima"); //System.out.println(s1.equals(s2));//留下了应还,可能会出现空指针异常 //Objects.equals(s1,s2) System.out.println(Objects.equals(s1, s2)); /** * public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); } */ /** * Objects.isNull(s1) 与 s1==null 等同 */ System.out.println(s1==null);//true System.out.println(Objects.isNull(s1));//true System.out.println(s2 == null);//false System.out.println(Objects.isNull(s2));//false } }
package com.ITheima.API_Object; /** * 目标:学会使用StringBuilder操作字符串 ,最终还需要知道它性能好的原因 */ public class Test3 { public static void main(String[] args) { StringBuilder sb=new StringBuilder();//"" sb.append("a"); sb.append("b"); sb.append("c"); sb.append("d"); sb.append("1"); sb.append("false"); sb.append("3.3"); System.out.println(sb);//abcd1false3.3 StringBuilder sb1=new StringBuilder(); //支持链式编程 sb1.append("a").append("b").append("c").append("信"); System.out.println(sb1);//abc信 //反转 reverse sb1.reverse().append(19); System.out.println(sb1); //注意 StringBuilder只是拼接字符串的手段:效率好 StringBuilder sb2=new StringBuilder(); //最终的目的还是要恢复成String类型 String str=sb2.toString(); check(str); } public static void check(String str){ System.out.println(str); } }
案例
package com.ITheima.API_Object; public class Test5 { public static void main(String[] args) { int [] arr={1,2,3,4,5,6,9}; int [] arr1=null; System.out.println(showArr(arr)); System.out.println(showArr(arr1)); } /* public static String showArr(int[] arr) { StringBuilder str = new StringBuilder(""); if (arr != null) { if (arr.length == 0) { String code = str.append("[]").toString(); return code; } else { str.append("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { str.append(arr[i] ); } else { str.append(arr[i] + ","); } } str.append("]"); String str1 = str.toString(); return str1; } } else { return null; } } ;*/ //黑马代码 public static String showArr(int [] arr){ if(arr!=null){ StringBuilder str=new StringBuilder("["); for (int i = 0; i < arr.length; i++) { str.append(i==arr.length-1?(arr[i]):(arr[i]+",")); } str.append("]"); return str.toString(); }else{ return null; } } }