数据类型、装箱、拆箱以及引用类型String
程序员文章站
2022-05-06 09:33:26
...
数据类型
数据类型分为两大类:
(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