java中数据类型主要分为两类
{基本数据类型 引用数据类型}
基本数据类型四类八种
{整型 浮点型 字符型 布尔型}
{数据类型 关键字 内存占用 范围
字节型 byte 1字节 -128~127
短整型 short 2字节 -32768~32767
整型 int 4字节 2^31~(2^31)-1
长整型 long 8字节 -2^63~(2^63)-1
单精度浮点数 float 4字节 有范围不关注
双精度浮点数 double 8字节 有范围不关注
字符型 char 2字节 0~65535
布尔型 boolean 没有明确规定 true和flase}
关于boolean内存占用:
JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。
//int 4个字节 32个比特位 符号位占1位 数值位占31位
//最小的数 符号位1 数值位31
//最大的数 符号位0 数值位31
System.out.println(Integer.MAX_VALUE);//int类型的最大值 2147483647
System.out.println(Integer.MIN_VALUE);//int类型的最小值 -2147483648
//Integer 包装类 可以暂时理解为int类型的plus版
//长整型 8字节 64比特位
long b = 10L;
System.out.println(b);// 10
System.out.println(Long.MAX_VALUE);// 9223372036854775807
System.out.println(Long.MIN_VALUE);// -9223372036854775808
//封装类型 Long
//短整型 2字节 16比特位
short e = 10;
System.out.println(e);// 10
System.out.println(Short.MAX_VALUE);// 32767
System.out.println(Short.MIN_VALUE);// -32768
//封装类型 Short
//字节类型 1字节8比特位
byte c = 10;
System.out.println(c);// 10
System.out.println(Byte.MAX_VALUE);// 127
System.out.println(Byte.MIN_VALUE);// -128
//0 111 1111 -- 127 -- (2^7)-1
//1 111 1111 -- -128 -- -2^7
/*byte d = 128;
System.out.println(d);*/ //安全性 当给定的数据超过当前数据类型给定的最大值时 编译器报错
//封装类型 Byte
//单精度浮点数
float o = 1.2f;
System.out.println(o);// 1.2
//指定float数据要加f或者进行强转
//不进行以上操作会报错,编译器默认为double类型
//封装类型 Float
//双精度浮点型
double f = 3.14;
System.out.println(f);// 3.14
//封装类型 Double
一些神奇的代码:
//*1
int g = 1;
int h = 2;
System.out.println(g/h);// 0
//int除以int的值仍是int 直接舍弃小数部分
//*2
double l = 1.0;
double m = 2.0;
System.out.println(l/m);// 0.5
//*3
double n = 1.1;
System.out.println(n*n);// 1.2100000000000002
//1.1 * 1.1 = 1.21
//输出的值为什么不一致?
//小数在计算机中 没有非常完全的表示 只能说是精确到某一位
//浮点数与整数在内存中的存储方式不同,不能单纯使用2的n次方进行计算
//double类型的内存布局遵循IEEE 754标准(和c一样),尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值
//字符类型 2字节
char p = 'A';
System.out.println(p);// A
char ch = ‘中’;
System.out.println(ch);// 中
//可以表示中文
//使用unicode编码
//计算机中 字符本质上是一个整数 c中使用ASCII表示字符 Java中使用Unicode表示字符
//一个字符占用2个字节 表示的字符种类更多
//封装类型 Character
//布尔类型
boolean flag = false;
System.out.println(flag);
//布尔类型 只有true false 不能与int类型互换
//1不能表示true 0也不能表示false
//未明确规定boolean占几个字节
//封装类型Boolean
//字符串类型
String s1 = "hello";
String s2 = "world";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2);//s1+s2 拼接s1和s2
注意
不论16位系统还是32位系统 int都占用4个字节 long都占用8个字节
整型和浮点型都是带有符号的
整型默认为int型 浮点型默认为double
字符串属于引用类型
Java中不区分有符号无符号