关于Java的八种数据类型

 

目录

 

1.引言

2.整形

3.浮点型

4.字符型

5.布尔类型

6.强制类型转换

类型提升

结语:

1.引言

  在Java学习中,我们会遇到八种用来定义变量的数据类型。变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据。而类型则对变量的种类进行了划分。下面我们来介绍一下这八种数据类型。这八种数据类型分别是 byte,short,int,long,float,double,boolean,char,还有字符串类型string也属于变量。

2.整形

  在以上的数据类型中,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 变量名=初始值;

3.浮点型

  浮点型分为双精度浮点型和单精度浮点型,分别是double类型和float类型。他们所占的内存大小分别是八个字节和四个字节。虽然也是占了这么多字节,但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范围。因为它尝试使用有限的空间来表示无限的小数,所以势必会产生一定的精度误差。

基本的语法格式:

double 变量名=初始值;

注意,在日常使用中,一般用到的浮点数优先考虑double,不太推荐使用float。

4.字符型

  与c语言不同,Java的字符型char类型占2个字节,所以它可以表示更多的字符,采用char字符信息基于 Unicode 标准。但是学习char类型的时候,可以把Ascii编码的整形字符直接赋值给char,打印出来Ascii表对应的字符。这是为什么呢?其实Unicode包含了所有Ascii字符,同时对应方式也没发生改变。可以理解为Unicode是Ascii的超集。自然可以使用Ascii表对应的字符。

char ch='a';

Java中使用单引号加单个字母的形式来表示字符字面值。

5.布尔类型

  布尔类型(boolean)的变量只有两种取值,即为false和true,其中true表示真,false表示假。

在jvm的实现时,占一个字节,有时候占一个比特位,所以布尔类型所占内存空间的大小没有明确规定。

6.强制类型转换

    java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有严格的校验。可以看看下面的代码场景。

int a = 10; 
long b = 20; 
a = b; // 编译出错, 提示可能会损失精度. 
b = a; // 编译通过



int a = 10; 
double b = 1.0; 
a = b; // 编译出错, 提示可能会损失精度. 
b = a; // 编译通过
  long 表示的范围更大 , 可以将 int 赋值给 long, 但是不能将 long 赋值给 int.
double 表示的范围更大 , 可以将 int 赋值给 double, 但是不能将 double 赋值给 int.
结论 : 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型 , 反之则不行 .
  例子:
int a=10;
long b=20L;
a=(int)b; //此处将b的类型强制转化为int形

类型提升

    不同数据类型之间相互运算时,数据类型小的会被提升到数据类型大的。

   自动类型转换(隐式):当范围更小的数据类型转化为较大的数据大的范围的时候,代码不需要任何处理,在代码编译的时候,编译器会自动处理。

结语:

  感谢大家的观看,如有任何问题可以在评论区留言。

你可能感兴趣的:(java,开发语言)