background image

原来,(

java.lang.String 的 intern()方法 

"abc".intern()方法的返回值还是字符串"abc",表面上看起来好像这个方法没什么用处。但实际上,它做了个小动

作:

 

检查字符串池里是否存在

"abc"这么一个字符串,如果存在,就返回池里的字符串;如果不存在,该方法会

"abc"添加到字符串池中,然后再返回它的引用。

更好的办法:

把所有的

String 都 intern()到缓冲池去吧

最好在用到

new 的时候就进行这个操作

String s2 = new String("Monday").intern();

然后就可以用

==比较两个字符串的值了

二、简单数据类型和封装类中的

equals 和==

Java 为每一个简单数据类型提供了一个封装类,每个基本数据类型可以封装成对象类型。 

int(Integer)和 char(Character),其余类型首字母大写即成封装类类型名。double (Double), 

float(Float),long(Long), short(Short),byte(Byte),boolean(Boolean).

  

int 和 Integer 为例说明 

Java 中 int 和 Integer 区别如下:

1.int 是基本的数据类型,默认值可以为 0;

2.Integer 是 int 的封装类,默认值为 null;

3.int 和 Integer 都可以表示某一个数值;

4.int 和 Integer 不能够互用,因为他们两种不同的数据类型;

int a1=1;

int a2=1;

Integer b1 =new Integer (1);

Integer b2 =new Integer (1);

------------------------------

a1==a2 这个是成立的,很简单,都知道

a1==b1 这个是不成立的.表达式的值为 false ,它们是不同的数据类型

(在

jdk1.5 以上版本中为 true)

b1==b2 这个也是不成立的.表达式的值为 false,虽然是相同的数据类型,但是它们是两个对象,==比较的是 2 个对

象的地址

,它们的地址是不相等的,内容相等都是 1;

b1.equals(b2)==true 这个是成立的,表达式的值为 true. 相同数据类型,两个对象,地址不同,内容相同, quals 比较

的是

2 个对象的内容,所以成立。

(a.equals(b),因为 equals 比较的是两个对象,

所以

a,b 都不能为基本数据类型

,否则会出编译错误。

)

(在

jdk1.5

以上版本中,

b 可以为基本数据类型,a 不可以)

同理

,其它的封装类和基本类型也是这样的.

java 中 equals 和==的区别

==比较的是 2 个对象的地址,而 equals 比较的是 2 个对象的内容。

jdk1.5 以上的版本中,基本类型和封装类能自动转化,与 String 类型的对象和字符串常量类似。

        Integer i1 = 123;