前言:
数据类型主要包括两大类:基本数据类型(四类八种)和引用数据类型(三种)
基本(内置)数据类型包括:数值型、字符型(char)、布尔型(boolean)
数值型包括:整数类型(byte、short、int、long)、浮点类型(float、double)
引用数据类型包括:类(class)、接口(interface)、数组(array)
基本数据类型的几种静态属性 :
MAX_VALUE(最大值)、MIN_VALUE(最小值)、SIZE(大小)、TYPE(类型)
使用:
Byte.MAX_VALUE = 127
Byte.MIN_VALUE = -128
Byte.SIZE = 8
Byte.TYPE = byte
一、数据类型
1、整数类型
在Java中,有四种不同类型的整型,按照占据空间大小的递增次序,以此为byte(位)、short(短整型)、int(整数)、long(长整数)。
在默认情况下,整数类型是指int型。
1.1byte类型
占据1个字节内存空间,数据的取值范围是 -128~127.
占内存位数8位.
1.2short类型
占据2个字节内存空间,数据的取值范围是-32768~32767.
占内存位数16位
1.3int类型
占据4个字节内存空间,占内存位数32位
注意: 比int最大值还大一的是最小值,比int最小值还小一的是最大值。
数据的最大值、最小值会出现一个循环过程,这种情况被称为数据溢出。
1.4long类型
占据8个字节内存空间,占内存位数64位
注意:可以用long类型解决int类型数据溢出问题
1、直接在数据前增加一个“(long)” integer.MAX_VALUE + (long)1
2、直接在数据后增加一个字母“L” integer.MIN_VALUE + 2L
int型 + lomg型 = long型
2、浮点类型
float类型 和 double类型
float占用4个字节、double占用8个字节
注意:含小数的实数默认位double类型,如果定义的是float类型数据,为其赋值时必须要执行强制转型。
(1)直接加上字母“F”或小写字母"f",例如:“float data = 1.2F”
(2)直接在数字前加强制转型位“float”,例如:"float data2 = (float)1.2;"
3、字符类型(char)
字符字符,顾名思义,就是字母和符号的统称。在内存占用2个字节。
字符要用一对单引号(' ')括起。
注意:
那么我们如何把一个字符变量赋值成一个单引号呢?
这就涉及到了转义字符。
\f 换页 \\ 反斜线
\b 倒退一格 \' 单引号
\r 归位 \" 双引号
\t 跳格 \n 换行
ASCII码:大写字母对应整数65~90;小写字母对应整数97~122;字符0~9对应整数49~57,大小写字母之间差32个长度
4、 布尔类型(boolean)
在JAVA中必须使用关键字Boolean声明布尔类型的变量。只有真假两种结果。
例:boolean Zhang = true;//声明boolean变量Zhang,并赋值为true。
注意:特别注意的是Zhang不能赋值为0或1;
二、数据类型的转换
2.1数据类型的自动转换
在JAVA中下面两个条件皆成立时,自动进行数据类型的转换。
(1)转换前后的数据类型要相互兼容。
在Java中,因为boolean类型中只能存放true和flase,所以与整数和字符不兼容,不可进行转换。
(2)转换后的数据类型的表示范围不小于转换前的类型。
“小转大”为自动转换、“大转小”为强制转换。
操作数1类型 |
操作数2类型 | 转换后类型 |
byte、short、char | int | int |
byte、short、char、int | long | long |
byte、short、char、int、long | float | float |
byte、short、char、int、long、float | double | double |
public class Zidongexchange { public static void main(String[] args) { int a = 156; float b = 24.1f; System.out.println("a = "+a+" ,b = "+b); System.out.println("a/b = "+(a/b)); } }
运行结果:
a = 156 ,b = 24.1
a/b = 6.473029
当两个数有一个为浮点数时,其运算结果直接转换为浮点数。
当表达式中变量的类型不同时,Java会自动把较小的表示范围转换成较大的表示范围后,再做运算。
byte→short→int→long→float→double
2.2数据类型的强制转换
(欲转换的数据类型) 变量名称;
public class Qiangzhi { public static void main(String[] args) { int a = 55; int b = 9; float g,h; System.out.println("a = "+a+", b = "+b); g=a/b; System.out.println("a/b = "+g+"\n"); System.out.println("a = "+a+", b = "+b); h=(float)a/b; System.out.println("a/b = "+h); } }
运行结果:
a/b = 6.0
a/b = 6.111111
注意:
整数相除时,小数点后的数字会被截断,结果仍保持为整数。
想要的到预期的极端结果,就必须将两个整数中的一个或者两个进行强制转换为浮点数。
(float)a/b;
(float)a/(float)b;
a/(float)b;
int x = (int)10.35 → → x=10