整数:byte、short、int、long
byte:8位 有符号 二进制补码表示的整数 默认为0 范围 -128(-2^7)~127(2^7-1)
short:16位 有符号 二进制补码表示的整数 默认为0 范围-23768(-2^15)~23767(2^15-1)
int:32位 有符号 二进制补码表示的整数 默认为0 范围-2,147,483,648(-2^31)~2,147,483,647(2^31 – 1) 包装类:Integer
long:64位 有符号 二进制补码表示的整数 默认为0L
范围-9,223,372,036,854,775,808(-2^63)~9,223,372,036,854,775,807(2^63 -1)用于整数非常大的项目中 定义时默认加上L更加规范:long a = 100000L
小数:float、double
float:32位 单精度 有符号的浮点数 默认值0.0f 范围 ±3.4×10^38 可以表示大概7位小数 精准度并没有那么高
double:64双精度 有符号的浮点数 默认值0.0d 范围 ±1.7×10^308 精准度高 可以表述更大范围的数值 但所占空间大
char类型表示的是一个16 位 Unicode 字符,最小值是 \u0000(十进制为 0);最大值是 \uffff(65535)
char是单个字符 2字节 可修改 string是若干个字符组成的字符串为引用类型(下面有介绍)
true/false
隐式转换:范围大的类型可兼容范围小的类型 小可以隐式转换为大
int a = 10;
long b = a
强制转换:大转小 但可能会出现溢出或丢失精度
int a = 127;
byte b = (byte) a; // b为127
int a = 128;
byte b = (byte) a // -128
// 二进制中的128为 10000000 在二进制补码中 最高位表示符号 1为负数 所以为-128
int a = 129
byte b = (byte) a // -127
// 二进制为 10000001 因为 10000000为负数 所以在后面再+1就为-(2^7 - 1),即-(128 - 1) = -127
引用类型,是指除了基本的变量类型之外的所有类型。所有引用类型的默认值都是null
类:
object 所有类的父类(和vue一样 所有对象的原型对象都指向object function除外) 所有类都可以调用object方法,所有类型的变量都可以赋值给object类型的变量
string 创建时会存储在字符串池中 不能改变其值 修改时只会重新创建对象
接口:使用 interface 关键字定义 接口中的方法都默认是 public 的,而且必须是 public 的 变量默认为公有静态常量 不能被实例化(无法new出实例 无构造函数) 不能继承某各类 但可以继承接口 通过 implements 关键字来实现接口,必须重写接口的所有方法
数组:
int [] arr = {1,2,3};
int [] arr = new int[3] //[0,0,0]
一旦创建就无法修改长度 可以赋值为null