一、String字符串
问:笔试题:new String("abc")创建了几个对象?
答:两个对象,一个对象是 位于堆内存,一个对象位于字符串常量池
1 public class Demo1 { 2 public static void main(String[] args) { 3 String str1="hello"; 4 String str2="hello"; 5 String str3=new String("hello"); 6 String str4=new String("hello"); 7 System.out.println("str1==str2?"+(str1==str2)+"+++++++");//true 8 System.out.println("str2==str3?"+(str2==str3)+"-----");//false 9 System.out.println("str3==str4?"+(str3==str4)+"=====");//false 10 System.out.println("str3.equals(str4)?"+(str3.equals(str4)));//true 11 } 12 13 }
结论:
1)对于==:
如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)对于equals方法:
注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
二、Object类
Object类是所有类的终极父类,任何一个类都继承Object类的
java是面向对象的语言,核心思想:找适合的对象做适合的事情
方式一:自定义类,通过自定义类来创建对象.
方式二:sun公司提供了很多类给我使用,我们只需要认识这些类,我们就可以通过这些类创建对象.
toString:返回该对象的字符串表示。返回字符串用于描述该对象
疑问:toString有何作用? 答:重写toString子后,我们就可以直接输出一个新对象.
equals(Object obj) 用于比较两个对象的内存地址,判断两个对象是否为同一个对象.
hashCode(): 返回该对象的哈希码值。(大家现在可以把哈希码当作内存地址)
2、查看源码的方式
方式一:按住 ctrl键,单击需要看的源码
方式二:把光标移到你需要查看代码处F3
看源代码最忌讳的一点:不要每行代码都弄懂是什么意思,能看懂大概,猜出意思足以.
1 public class Person{ 2 3 int id; 4 String name; 5 6 public Person(int id,String name) { 7 this.id=id; 8 this.name=name; 9 } 10 //目前我们需要直接输出一个对象的时候,输出的格式:编号:110 姓名:狗娃 这个格式.目前Object 11 //toString方法无法满足子类的需求,那么这时候就应该从写object类的toString进行从写. 12 @Override 13 public String toString() { 14 return "编号:"+this.id+"姓名+"+this.name; 15 } 16 //为啥要从写呢:object的equals方法默认比较的是两个对象的内存地址,我们目前需要比较的是两个对象的身份证,所有object类的equals方法不符合我们现在的需求 17 @Override 18 public boolean equals(Object obj) { 19 Person p=(Person)obj; 20 return this.id==p.id; 21 } 22 public Person() { 23 24 } 25 public static void main(String[] args) { 26 Person p=new Person(110,"狗娃"); 27 Person p1=new Person(110,"陈富斌"); 28 System.out.println(p.hashCode()); 29 System.out.println(p);//[email protected] 完整类名[email protected]+对象的哈希码 输出结果:编号:110 姓名:狗娃 30 31 } 32 }
原创作者:DSHORE 出自:http://www.cnblogs.com/dshore123/ 欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!) |
原文地址:https://www.cnblogs.com/dshore123/p/8947289.html