String类解析
String类内存解析
字符串不变,他们的值在创建之后不能改变
1.==比较运算符,基本数据类型是进行值比较,引用类型是地址比较
2.equals:Object类中的一个方法,比较对象的地址;String类对这个方法实现了重写,对字符串进行比较
Object类
面试题:finalize() final finally区别
finalize():当垃圾收集器确定不再有对该对象的引用时,垃圾收集器在对象上调用该方法;
final:关键字,修饰常量
finally:作为异常的一个块
1.重写equals()方法
1 public class TestObject { 2 public static void main(String[] args) { 3 Person p1 = new Person(); 4 p1.name="abc"; 5 Person p2 = new Person(); 6 p2.name="abc"; 7 System.out.println(p1==p2); // false 8 System.out.println("@:"+p1.equals(p2)); //没有重写前false /重写equals方法后就可按照自己的规则 实现 结果 true 9 System.out.println("=================================="); 10 System.out.println(p1); //com.aura.java2.Person@15db9742 11 //如果重写了Object为中的toSting(),可按照自己的规则 实现 结果 12 System.out.println(p1.toString()); //com.aura.java2.Person@15db9742 13 14 // String s1 = new String("Hello"); 15 // System.out.println(s1.toString()); //Hello 16 17 18 } 19 } 20 21 class Person{ 22 String name; 23 //重写equals() 24 //当对象的属性值 如果一致的话,是同一个对象 25 // @Override 26 // public boolean equals(Object obj) { 27 // if(this==obj) { 28 // return true; 29 // }else if(obj instanceof Person){ 30 // Person per = (Person)obj; 31 // if(per.name.equals(this.name)) { 32 // return true; 33 // } 34 // } 35 // 36 // return false; 37 // } 38 @Override 39 public boolean equals(Object obj) { 40 if (this == obj) 41 return true; 42 if (obj == null) 43 return false; 44 if (this.getClass() != obj.getClass()) 45 return false; 46 Person other = (Person) obj; 47 if (name == null) { 48 if (other.name != null) 49 return false; 50 } else if (!name.equals(other.name)) 51 return false; 52 return true; 53 } 54 55 // @Override 56 // public String toString() { 57 // return "Person: name="+this.name; 58 // } 59 @Override 60 public String toString() { 61 return "Person [name=" + name + "]"; 62 } 63 64 }
2.重写toString()方法
Junit测试
1 public void test() { 2 System.out.println("Hello"); 3 show(); 4 } 5 6 public void show() { 7 System.out.println("实现功能!"); 8 } 9 @Test 10 public void test2() { 11 System.out.println("其他测试任务!"); 12 }
包装类
特点:具有类的特点,可以调用类中的方法
针对于基本类型,系统帮我们封装了8个对象的包装类,
基本类型 包装类型 String类型
Boolean包装类型比较特殊,除了true,其他的都是false
装箱:基本类型转换成包装类型
拆箱:包装类型转换基本类型,可以自动类型转换,也可以使用方法。
Integer in3=9;//装箱 int i3=in3;//拆箱
基本类型和String类型的转换