目录
1.引言
2.整形
3.浮点型
4.字符型
5.布尔类型
6.强制类型转换
类型提升
结语:
在Java学习中,我们会遇到八种用来定义变量的数据类型。变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据。而类型则对变量的种类进行了划分。下面我们来介绍一下这八种数据类型。这八种数据类型分别是 byte,short,int,long,float,double,boolean,char,还有字符串类型string也属于变量。
在以上的数据类型中,byte,short,int,long属于整形数据。以下是每个类型在内存中所占的空间大小和取值范围。
类型 | 所占字节大小 | 取值范围 |
byte | 1 | -128~127 |
short | 2 |
-2^15~2^15-1
|
int | 4 | -2^31~2^31-1 |
long | 8 | -2^63~2^63-1 |
一个字节有八个比特位。因为在内存中,这些数据类型是以二进制的形式储存的,第一位是符号位,即0是正数,1是负数。所以他们的取值范围是-2^(每个类型所占比特位-1)~+2^(每个类型所占比特位-1)。
基本的语法格式:
int 变量名=初始值;
浮点型分为双精度浮点型和单精度浮点型,分别是double类型和float类型。他们所占的内存大小分别是八个字节和四个字节。虽然也是占了这么多字节,但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范围。因为它尝试使用有限的空间来表示无限的小数,所以势必会产生一定的精度误差。
基本的语法格式:
double 变量名=初始值;
注意,在日常使用中,一般用到的浮点数优先考虑double,不太推荐使用float。
与c语言不同,Java的字符型char类型占2个字节,所以它可以表示更多的字符,采用char字符信息基于 Unicode 标准。但是学习char类型的时候,可以把Ascii编码的整形字符直接赋值给char,打印出来Ascii表对应的字符。这是为什么呢?其实Unicode包含了所有Ascii字符,同时对应方式也没发生改变。可以理解为Unicode是Ascii的超集。自然可以使用Ascii表对应的字符。
char ch='a';
Java中使用单引号加单个字母的形式来表示字符字面值。
布尔类型(boolean)的变量只有两种取值,即为false和true,其中true表示真,false表示假。
在jvm的实现时,占一个字节,有时候占一个比特位,所以布尔类型所占内存空间的大小没有明确规定。
java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有严格的校验。可以看看下面的代码场景。
int a = 10;
long b = 20;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过
int a = 10;
double b = 1.0;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过
int a=10;
long b=20L;
a=(int)b; //此处将b的类型强制转化为int形
不同数据类型之间相互运算时,数据类型小的会被提升到数据类型大的。
自动类型转换(隐式):当范围更小的数据类型转化为较大的数据大的范围的时候,代码不需要任何处理,在代码编译的时候,编译器会自动处理。
感谢大家的观看,如有任何问题可以在评论区留言。