Java String 引用类型

String 引用类型

1,String类型是引用类型。

1. String s = "aaa";  

这段代码,JVM创建了一个变量引用S,在堆中创建了一个对象aaa,aaa放进常量池中,s指向aaa.

2,“==”和equals的区别

 

1. ==可以用来比较基本类型和引用类型,判断内容和内存地址

2. equals只能用来比较引用类型,它只判断内容。该函数存在于老祖宗类 java.lang.Object

3java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
  他们之间的比较,应用双等号(==,比较的是他们的值。 
2.复合数据类型(
  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,

 

JVM中代码表示

 

1. String str1="Tulun";  2. String str2="Tulun";  3. System.out.println(str1==str2);//true  4. System.out.println("-----------");  

 

因为Str1str2 指向的是同一个地址,所以该代码输出true

1. String str3=new String("Tulun");   2. String str4=new String("Tulun");  3. System.out.println(str3==str4);  //false 

 

因为str3str4指向的不是同一个地址

 

1. String str5="Tulun";  2. String str6=new String("Tulun");  3. System.out.println(str5==str6);//false  

 

 

 

1. String str7="Tu"+"lun";  2. String str8=new String("Tulun");  3. System.out.println(str7==str8);//false  

 

 

1. String str7="Tu"+new String("lun");  2. String str8=new String("Tulun");  3. System.out.println(str7==str8);//false 

 

 

 

 

1. char[] array={'T','u','l','u','n'};  2. String str9=new String(array);  3. String str10="Tulun";  4. System.out.println(str11==str22);//false  

 

 

 

equals方法原码1. public boolean equals(Object anObject) {  2.         if (this == anObject) {  //判断是不是同一个引用3.             return true;  4.         }  5.         if (anObject instanceof String) {  //判断类型是否相同6.             String anotherString = (String)anObject;  7.             int n = value.length;  8.             if (n == anotherString.value.length) { //判断长度是否相同 9.                 char v1[] = value;  10.                 char v2[] = anotherString.value;  11.                 int i = 0;  12.                 while (n-- != 0) {  //判断每个字符是不是一样13.                     if (v1[i] != v2[i])  14.                         return false;  15.                     i++;  16.                 }  17.                 return true;  18.             }  19.         }  20.         return false;  21.     }

 

1.先比较引用,引用相等直接true

否则的话:

1.比较类型

2.比较长度

3.string转成char[], 依次比较每一个字符,全部相等则为true,否则为false

 

 

1. 假设有以下代码           ----腾讯  2. String s = "hello";  3. String t = "hello";  4. char c[] = {'h', 'e', 'l', 'l', 'o'};  5.   6. s.equals(t);  7. t.equals(c);//false  8. s==t;  9. t.equals(new String ("hello")) 

t.equals(c)输出的值为负数

1t,c的引用地址不同

   则判断其类型是否相同,因为一个是String一个是char[]数组。所以输出为false

 

 

类型转换面试题

 

选:B

 

A:99后面不用加S,因为这句话要执行自动装箱,调用shortValue()方法,这个方法显然不能或者99S的值

C:1.0后面需要加上f   因为系统默认的浮点数是double

D:17后面不用加c

 

选:D

8进制不能有8

 

选:A

S+1int,不能直接赋值给short

+=它会先把后面的转化为和前面的同一个类型后再求和


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部