数据类型
基本数据类型:即int/char等这样的数值类型,共8种
引用类型:除了基本数据类型之外都是引用类型:包括API中的类:如String、File;也包括自定义的类:如Personal、ABC;还包括数组:如int[]、String[]
基本数据类型
类型(八种)
整型:byte(8位)、short(16位)、int(32位)、long(64位)
浮点型:float(32位)、double(64位)
字节型:char(16位)
布尔型:boolean(1位) 备注:返回值为true或false
基本类型的赋值
基本数据类型之间赋值,是将值进行拷贝
例如:int m=10、int m=20、m=n;
基本类型的转换
自动类型转换:也称作隐式类型转换;将一种类型的变量赋值给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换
条件:两种类型之间相互兼容、目标类型大于源类型(即类型提升)
示例:float f = num、double d = f (float型转double) 低类型转高类型会自动发生,无需显式说明
强制类型转换:也称显式类型转换;如果被转换的值的数据类型大于其目标类型,将会损失精度丢失部分信息
示例:int x = 65、char ch = x 这样的语句将报错,因为char类型精度低于int类型,编译器无法将其自动转换,用到强制转换;
int x = 65、char ch = (char)x (int型转char型) 强制转换需要加括号“(类型)”
引用数据类型
作用:引用类型使用的场景与基本数据类型完全一样
作为属性的类型使用;作为方法的形式参数类型使用;作为方法的返回值类型使用
引用类型的赋值
引用类型都是对象,所以赋值都是通过new调用构造方法
例如:Student stu1 = new Student(“张三”,18)、Student stu2 = new Student((“李四”,20)
引用类型之间赋值,是虚地址之间的赋值
例如:stu1=stu2,stu2赋值给stu1,指的是把stu2的虚地址赋值给stu1,也就是二者将指向同一个实际对象李四
例外:new、String类和包装器类可以直接赋值
基本类型和引用类型的区别
基本数据类型 引用数据类型
概念 变量(单纯的值) 对象(引用)
存储位置 在栈中存值 在栈中存引用,在堆中存对象具体的属性值
赋值方法 直接赋值 new、String类和包装器类可以直接赋值
==运算 判断的是数值,二进制一样返回true 判断的是地址,即虚地址一样才返回true
代码示例
1 package summary2; 2 3 class BasicDataType //8种基本数据类型 4 { 5 byte bt; //字节型 位数:8 取值范围:-128~127 6 short sr; //短整型 位数:16 取值范围:-32768~32767 7 int it; //整型 位数:32 取值范围:-231~231-1 8 long lg; //长整型 位数:64 取值范围:-263~263-1 9 float fo; //单精度浮点型 位数:32 取值范围:略 10 double db; //双精度浮点型 位数:64 取值范围:略 11 char ch; //字符型 位数:16 取值范围:'\u0000'/'\uFFFF' 12 boolean bl; //布尔型 位数:1 取值范围:true/false 13 } 14 class ReferenceDataType 15 { 16 ReferenceDataType(String name,Integer age) //自定义带有两个参数的构造方法 17 { 18 String name1 = "李四"; //String类可以直接=赋值 19 Integer age1 = 19; //Integer包装器类也可以=赋值 20 String name2 = name1; //引用类型之间的赋值:将name1的虚地址赋给name2 21 Integer age2 = age1; //此时name1和name2指向同一个对象、值存放在同一个内存里 22 boolean b1=(name == name1); //引用类型的==运算 name和name1的虚地址不同 返回false 23 boolean b2=(name1 == name2); //引用类型的==运算 name1和name2的虚地址相同 返回true 24 System.out.println(name+" "+age+" "+b1+" "+b2); //打印输出传入的参数name和age和返回的布尔值 25 } 26 } 27 public class DataType 28 { 29 public static void main(String[] args) 30 { 31 BasicDataType BDT = new BasicDataType(); //创建对象、实例化基本数据类型类来引用类中的属性 32 BDT.it = 12345; //用对象名来调、进行赋值、基本数据类型是直接赋值 33 BDT.lg = BDT.it; //(int转long)低精度转高精度会自动转换 34 BDT.fo = 12.3f; //注意float类型的赋值后面有个f 35 BDT.sr = (short) BDT.fo; //(short转int)高精度转低精度必须强制转换加(类型) 36 System.out.println(BDT.sr); //注意:强制转换会损失一定的精度值 37 System.out.println(BDT.it==BDT.lg); //基本类型的==运算直接判断数值,二进制一样返回true 38 System.out.println(BDT.fo==BDT.sr); //基本类型的==运算直接判断数值,二进制不一样返回false 39 ReferenceDataType RDT = new ReferenceDataType("张三",18); //自定义引用类型的创建对象、实例化赋值 40 } 41 }
浙公网安备 33010602011771号