String类型不属于八种基本类型

String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。

new String()和new String(”")都是申明一个新的空字符串,是空串不是null;

一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。

一种是先在栈中创建一个对String类的对象引用变量str,然后通过符号引用去字符串常量池 里找有没有""中的值,如果没有,则将""中的值存放进字符串常量池 ,并令str指向””中的值,如果已经有则直接令str指向。

代码为两者的区别。

还能看出一点,

简单理解:==比较的是引用位置是否相同,而equals()比较的是数值是否相等。

equals()就是比较两字符串的Unicode序列是否相当,如果相等返回true;而==是 比较两字符串的地址是否相同,也就是是否是同一个字符串的引用。

 1         String str ="hello";
 2         String str1="he"+new String("llo");
 3         String str2= new String("hello");
 4         System.out.println(str==str1);//false;
 5         System.out.println(str.endsWith(str1));//true;
 6         System.out.println(str1==str2);//false;
 7         System.out.println(str1.equals(str2));//true;
 8         System.out.println("-----------");
 9         System.out.println(str==str2);//false;
10         System.out.println("-----------");    
11         System.out.println(str.equals(str2));//true;
12         System.out.println("-----------");
13         str2 = str2.intern();
14         System.out.println(str==str2);//true;
15         System.out.println("-----------");

 

posted @ 2015-06-02 14:28  Fury_Fox  阅读(1004)  评论(0)    收藏  举报