目录
- 1.变量与常量
- 2.Java中的数据类型
- 3.整型
- 3.1 字节型byte
- 3.2 短整型short
- 3.3 整型int
- 3.4 长整型long
- 4.浮点型
- 4.1 单精度浮点型float
- 4.2 双精度浮点型double
- 5.字符型
- 6.布尔型
- 7.类型转换
- 7.1 隐式类型转换
- 7.2 显示类型转换(强制类型转换)
- 8.类型提升
大家好,我是你们的Vampire-wpre(也可以叫我鬼鬼!),是一位正在努力学习编程的大学生,为了能够让自己巩固知识,也为了能让大家更好地理解Java相关知识,我开了这个Java宝典的新坑~今天我们要学习的是Java当中的数据类型话不多说我们直接开始吧!
1.变量与常量
在程序当中,有些数据可能会发生改变,例如年龄/身高等,这些经常发生改变的内容,在Java中称为变量;在程序中也会有固定不变的量,不管程序运行到何处,它都是固定不变的量,例如一周有7天/一年有12个月等,这些称之为常量,也叫字面常量.
字面常量可以分为以下几类:
- 字符串常 量:用双引号" " 括起来的,如"123"和"abcd"
- 整型常量:在程序中直接写的数字,如1,100
- 浮点数常量:程序中直接写的小数,如1.1,0.2
- 字符常量:用单引号括起来的,如 ‘a’
- 布尔常量:ture和false
- 空常量:null
2.Java中的数据类型
Java中数据类型分为基本数据类型和引用数据类型.
基本数据类型包括:
- 整数类型:
整数类型包含:字节型(byte),短整型(short),整型(int),长整型(long) - 浮点数类型:
浮点数类型包含:单精度浮点型(float),双精度浮点型(double) - 布尔类型
布尔类型表示真或假,关键字是boolean,true表示真,false表示假 - 字符类型:
字符型关键字为char,用于表示一个字符
以下是这些数据类型的特点
划重点:
1.数据类型所占字节数与操作系统无关
2.整型和浮点型是带符号的,没有所谓的无符号数(与C语言不同!)
3.在程序中,一个整数默认是int型,小数默认是double型
4.定义变量时,使用前如果没有赋值,编译器会报错
3.整型
3.1 字节型byte
byte类型的变量占1个字节(与操作系统无关),byte的取值范围是:-128~127;包装类型为Byte,可以用包装类中的MAX_VALUE和MIN_VALUE输出byte类型的最大值和最小值
byte b = 1;
System.out.println(b);
//输出byte类型的最大值
System.out.println(Byte.MAX_VALUE);
//输出byte类型的最小值
System.out.println(Byte.MIN_VALUE);
3.2 短整型short
short类型的变量占2个字节(与操作系统无关),short取值范围是:-32768~32767;包装类型为Short,可以用包装类中的MAX_VALUE和MIN_VALUE输出short类型的最大值和最小值
short s = 10;
System.out.println(s);
//输出short类型的最大值
System.out.println(Short.MAX_VALUE);
//输出short类型的最小值
System.out.println(Short.MIN_VALUE);
3.3 整型int
int类型的变量占4个字节(与操作系统无关),int取值范围是:-2147483648~2147483647;包装类型为Integer,可以用包装类中的MAX_VALUE和MIN_VALUE输出int类型的最大值和最小值
int i = 20;
System.out.println(i);
//输出int类型的最大值
System.out.println(Integer.MAX_VALUE);
//输出int类型的最小值
System.out.println(Integer.MIN_VALUE);
3.4 长整型long
long类型的变量占8个字节(与操作系统无关),long取值范围是:-2^ 63~2 ^63-1;包装类型为Long,可以用包装类中的MAX_VALUE和MIN_VALUE输出long类型的最大值和最小值
long l = 100;
System.out.println(l);
//输出long类型的最大值
System.out.println(Long.MAX_VALUE);
//输出long类型的最小值
System.out.println(Long.MIN_VALUE);
4.浮点型
4.1 单精度浮点型float
float类型的变量占4个字节,包装类型为Float
4.2 双精度浮点型double
double类型的变量占8个字节,包装类型为Double
浮点型平时使用较多的是double,浮点数在内存中存储方式与整型不一样,浮点数的存储准寻IEE754标准,如果不了解可以看我之前写的文章:整数与浮点数在内存中的存储
5.字符型
字符型关键字为char,字符型变量占2个字节,我们学习过C语言知道,字符可以用ASCII码表示,而在Java中使用的是Unicode表示字符,两个字节能表示的字符数量更多,char的包装类型为Character
6.布尔型
布尔类型(boolean)是用来表示真假的,它的取值只有true和false,Java中,真假只能用布尔类型表示,不存在1表示真,0表示假这种说法.Java虚拟机规范中没有明确规定boolean占多少字节
7.类型转换
在Java中,如果参与运算的数据不是同一类型,则会进行类型转换,包括隐式类型转换(自动)和显示类型转换(强制)
7.1 隐式类型转换
隐式类型转换意味着:代码编译时,编译器会自动进行类型转换处理.看下面的例子
System.out.println(10);//10默认是Int
System.out.println(3.14);//默认是double
int a = 10;
long b = a;//a是int类型,范围小,long类型范围大,范围小的类型(a)赋值给范围大的类型(b)时,编译器会自动将a转换成long类型
double d = 3.14;
// float f = d;代码无法编译,d是double类型的变量,范围比float大,将范围大的赋值给范围小的,不安全
7.2 显示类型转换(强制类型转换)
当范围小的变量赋给范围大的变量时,编译器无法通过,此时我们可以进行强制类型转换.
转换语法:
(转换后的类型)变量;
如:
long a = 10;
int b =(int)a;
double d = 3.14;
float f = (float)d;
注意事项:
- 如果不进行强制类型转换,数据类型不同的变量进行赋值时,范围大的变量不能赋值给范围小的变量
- 范围大的变量赋值给范围小的变量时,需要强制类型转换,但是可能会丢失精度
- 类型不相干的不能相互转化,如:布尔类型不能转换成其他类型
8.类型提升
一般情况下,不同类型的数据进行运算时,类型小的数据会提升为类型大的,小于4字节的类型(short,byte)会提升为int
int a = 10;
long b =20;
long c =a+b;//编译成功
int d =a+b;//编译失败
//a+b的值会提示为long类型,将long类型的值赋给int类型的变量无法编译成功
byte a =10;
byte b =20;
byte c =a+b;//编译失败
int d =a+b;//编译成功
//虽然a和b类型一样,都是byte,但是byte小于4字节,所以运算时,a和b会先提升为int,结果为int,将范围大的值赋值给范围小的变量,编译无法通过
以上就是关于Java数据类型的全部内容啦,如果老铁们认为文章对你有帮助的话别忘了一键三连~