数据类型、装箱、拆箱以及引用类型String

数据类型

数据类型分为两大类:
(1)基本类型
这里写图片描述
范围大小:
byte < ( short = char) < int < long < float < double
(2)引用类型
String array etc…

装箱

Integer i  = 10;            //valueOf方法 装箱
Integer i2 = (Integer)10;   //显示装箱

这里写图片描述

拆箱

int i2 = i;                 //intvalue方法拆箱
int i3 = new Integer(20);   //显示拆箱

这里写图片描述

基本类型之间的转化的两个方法:

自动转化

byte b=10;
int a=b;
long l = a;

强制转化

 byte b=10;
 char ch = (char)b;   // 必须强转 byte------>int----->char

 short sh = 10;
 char ch2 = (char)sh;  // 必须强转 (short有符号位)

 int ii = 10; 
 char ch3 = (char)ii;

 byte b2 = (byte)128;
 System.out.println(b2);  //(b2的值为-128;127+1=-128)

 byte b3 = 10;
 byte b4 = 10;
 //byte b5 = b3+b4;(转化错误原因:byte----->int---->  )
 byte b5 = byte(b3+b4);

String

JVM可以分为如图几个部分:
这里写图片描述
1.

String str3 = new String("Tulun");
String str4 = new String("Tulun");
System.out.println(str3 == str4);
System.out.println("======");
//结果:False  

Tulun是在堆中新建的两个不同的,但在常量池中是一样的,但是在堆中是不一样的
这里写图片描述
2.

String str1 = "Tulun";
String str2 = "Tulun";
System.out.println(str1 == str2);
System.out.println("======");
//结果:True    

没有新建,在常量池中是一个东西
这里写图片描述
3.

String str5 = new String("Tulun");
String str6 = "Tulun";
System.out.println(str5 == str6);
System.out.println("======");
//结果:False     

这里写图片描述
4.

String str7 = new String("Tulun");
String str8 = "Tu"+"lun";
System.out.println(str7 == str8);
System.out.println("======");
//结果:False

这里写图片描述
5.

String str9 = new String("Tulun");
String str10 = "Tu"+new String("lun");
System.out.println(str9 == str10);
System.out.println("======");
//结果:False

因为new了一个新的,所以和3的错误原因一样
6.

char[] array = {'T','u','l','u','n'};
String str11 = new String(array);
String str12 = "Tulun";
System.out.println(str11 == str12);
//结果:False

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_39475906/article/details/79778400