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

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

猜你喜欢

转载自blog.csdn.net/qq_37937537/article/details/79861729