java中“”和null的区别以及==和equals的区别
2017-09-22 11:23
330 查看
首先先说一下null 和 “” 的区别:
String str1 = null;
String str2 = "";
str1还不是一个实例化的对象,而str2已经实例化了。空字符串("")已经分配了内存,而null没有分配内存。
""是一个空字符串(string),他在内存中是存在的,他可以使用Object对象中的方法("".equals()、"".toString()),null是一个
空对象,他在内存中是不存在的,他不能使用Object对象中的方法。
在比较的时候,必须是str1==null,str2.equals(""),否则就会报错。至于为什么是必须这样来比较,下面来介绍==和equals的不同点。
来说一下==和equals的区别:
==:
对于8种基本数据类型(byte、short、int、long、double、float、boolean、char),变量直接存储的是值的话,比较的就是值本身。
对于非基本数据类型(引用数据类型)的变量,例如:String str = new String("hello"); str 就是指向了一个对象,也可以把str
称为对象的引用,这时变量str中存储的是它指向对象在内存中的存储地址,并不是值本身,也就是说,不是直接存储的"hello"。
String str1 = new String("hello");
String str2 = new String("hello");
用== 比较str1和str2,得到的结果是false,因为他们指向的是不同的对象,也就是说他们的实际存储的内存地址不同。
equals:
equals方法是基类Object中的方法,所有继承Object的类都有此方法。在Object类中,equals方法是用来比较两个引用对象是否相等,即是否指向同一个对象。
String str1 = new String("hello");
String str2 = new String("hello");
在String类中,对equals方法进行了重写,用来比较指向的字符串对象所存储的值是否相等。诸如其他的类,重写了equals法,
就是比较存储对象的内容是否相等。
总结:
==,如果是对于基本数据类型的变量,直接比较的是存储的值是否相等;如果是对于引用数据类型,则比较的是存储的内存地址是否相等。
equals,是不能作用于基本数据类型的变量。如果这个类没有对equals方法重写,则比较的是变量指向对象存储的内存地址是否相等,如果对equals方法进行了重写,则比较的是指向对象的内容。
String str1 = null;
String str2 = "";
str1还不是一个实例化的对象,而str2已经实例化了。空字符串("")已经分配了内存,而null没有分配内存。
""是一个空字符串(string),他在内存中是存在的,他可以使用Object对象中的方法("".equals()、"".toString()),null是一个
空对象,他在内存中是不存在的,他不能使用Object对象中的方法。
在比较的时候,必须是str1==null,str2.equals(""),否则就会报错。至于为什么是必须这样来比较,下面来介绍==和equals的不同点。
来说一下==和equals的区别:
==:
对于8种基本数据类型(byte、short、int、long、double、float、boolean、char),变量直接存储的是值的话,比较的就是值本身。
对于非基本数据类型(引用数据类型)的变量,例如:String str = new String("hello"); str 就是指向了一个对象,也可以把str
称为对象的引用,这时变量str中存储的是它指向对象在内存中的存储地址,并不是值本身,也就是说,不是直接存储的"hello"。
String str1 = new String("hello");
String str2 = new String("hello");
用== 比较str1和str2,得到的结果是false,因为他们指向的是不同的对象,也就是说他们的实际存储的内存地址不同。
equals:
equals方法是基类Object中的方法,所有继承Object的类都有此方法。在Object类中,equals方法是用来比较两个引用对象是否相等,即是否指向同一个对象。
String str1 = new String("hello");
String str2 = new String("hello");
在String类中,对equals方法进行了重写,用来比较指向的字符串对象所存储的值是否相等。诸如其他的类,重写了equals法,
就是比较存储对象的内容是否相等。
总结:
==,如果是对于基本数据类型的变量,直接比较的是存储的值是否相等;如果是对于引用数据类型,则比较的是存储的内存地址是否相等。
equals,是不能作用于基本数据类型的变量。如果这个类没有对equals方法重写,则比较的是变量指向对象存储的内存地址是否相等,如果对equals方法进行了重写,则比较的是指向对象的内容。
相关文章推荐
- Java中的String str="abc"; String str=new String("abc");和String str = new String();的区别以及==与equals()的不同。
- null 与 “” 的区别以及“==”和equals方法比较
- JAVA中isEmpty和null以及""的区别
- JAVA中isEmpty和null以及""的区别
- java核心API之String,StringBuffer和StringBuilder以及equals与==的区别和联系
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- java中的栈、堆以及equals和==的区别
- JAVA中isEmpty和null以及""的区别
- Java基础之hashCode()的作用,以及==、equals()和hashCode()区别
- java关于equals与==号的区别以及与hashCode的关系
- str==null、str.length==0以及''''.equals(str)之间的区别
- Java中isEmpty和null以及“”的区别
- 总结一下java中我认识的哈希码以及equals和==的区别
- Java中数据存储在哪?以及equals和==的区别
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
- JAVA中isEmpty和null以及""的区别
- java笔记equals和==的区别以及intern()方法的优势
- java基础之 “==”和“ equals”以及instanceof的区别
- java中 “==”和“equals”以及instanceof的区别
- java中的栈、堆以及equals和==的区别