欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java String 引用类型

程序员文章站 2022-07-15 13:41:53
...

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("-----------");  

 Java String 引用类型

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

1. String str3=new String("Tulun");   

2. String str4=new String("Tulun");  

3. System.out.println(str3==str4);  //false 

 Java String 引用类型

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

 

1. String str5="Tulun";  

2. String str6=new String("Tulun");  

3. System.out.println(str5==str6);//false  

 

 Java String 引用类型

 

1. String str7="Tu"+"lun";  

2. String str8=new String("Tulun");  

3. System.out.println(str7==str8);//false  

 Java String 引用类型

 

1. String str7="Tu"+new String("lun");  

2. String str8=new String("Tulun");  

3. System.out.println(str7==str8);//false 

 Java String 引用类型

 

 

 

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  

 

 Java String 引用类型

 

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

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