1、整数类型
在Java中,整数类型包括以下几个:
- byte 字节型 (8个bit,也就是1个字节)范围:-128~+127
- short 短整形(16个bit,也就是2个字节)范围:-32768~+32767
- int 整形(32个bit,也就是4个字节)最常用的类型:-2147483648 ~ +2147483647
- long 长整形(64个bit,也就是8个字节)范围:-9223372036854775808 ~ +9223372036854775807
public class Main {public static void main(String[] args) {byte a=1;short b=10;int c=100;long d=1000;System.out.println(a+b+c+d);}}
隐式类型转换:
小的类型转大的类型会有隐式类型转换。
byte->short->int->long
而为变量赋值时也是会将数转为int类型
我们可以采用强制类型转换实现大转小
可以前面加这个类型名称也可以末尾加提示。
public class Main {public static void main(String[] args) {byte a=1;short b=10;int c=100;long d=1000;b=c; c=d;//ERROR 大的不能隐式转为小的c=b;//True 小的可以隐式转为大的b=(short)c;//True 强制类型转换可以实现大转小a=(byte)d; //Trued=9999999999999999;//ERROR 整数过大,超过int上限d=9999999999999999L;//True 常量转为long,没超上限System.out.println(a); //输出为-24} }
但是强制类型转换没有考虑是否溢出,比如上述程序若要输出a则为-24。
因为long里存的值超过byte的范围会发生截断
特殊知识点:
(1)下划线分割
(2)八进制,十六进制表示
数字前有0为八进制,有0x为十六进制(x大小写均可)
public class Main {public static void main(String[] args) {int a=1_000_00_0000; //Trueint b=016; //True 8进制int c=0x1a; //True 16进制System.out.println(b); //输出14,8+6System.out.println(c); //输出26,16+10}}
(3)整数类型均为有符号整型
底层存储第一位均为符号位。
public class Main {public static void main(String[] args) {int a=2147483647; a=a+1;byte b=127; b=(byte)(b+1); //TrueSystem.out.println(a); //输出-2147483648System.out.println(b); //输出-128}}
2、浮点类型
首先来看看Java中的小数类型包含哪些:
- float 单精度浮点型 (32bit,4字节)
- double 双精度浮点型(64bit,8字节)
赋值与初始化:
浮点常量默认为double,需要强制转换。
public class Main {public static void main(String[] args) {float a=3.0; //ERROR ,常量默认为doubledouble b=18.6;System.out.println(a); System.out.println(b); }}
public class Main {public static void main(String[] args) {float a=3.0F; // Truedouble b=18.6;System.out.println(a);System.out.println(b);}}
double可以隐式转换为float
public class Main {public static void main(String[] args) {float a=3.0F; // Truedouble b=a; //TrueSystem.out.println(a);System.out.println(b);}}
3、字符类型
- char 字符型(16个bit,也就是2字节,它不带符号)范围是0 ~ 65535
- 采用Unicode字符集
- 编码规则有GBK、UTF-8、UTF-16
赋值与初始化:
用字符赋值或用ACSCII码赋值均可
public class Main {public static void main(String[] args) {char a='A';char b=67;System.out.println(a);System.out.println(b);}}
public class Main {public static void main(String[] args) {char a='我';int b=a;System.out.println(a); //输出我System.out.println(b);//输出25105}}
4、布尔类型
赋值与初始化:
public class Main {public static void main(String[] args) {boolean a=true;boolean b=false;System.out.println(a); System.out.println(b);}}
5、类型转换总结
该图含义为下面可以隐式转上面,就是满足两条线的小到大都可以转
short、char、byte可以转为int、long、float、double
short与char不能互相隐式转换,byte与char不能互相转,byte可以转short
但7种数据类型之间可以强转
boolean类型不能与其它7种类型相互转换(强转也不行)