目录
变量的数据类型
Java是一种强类型语言,每个变量都必须声明其数据类型。
Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
整数类型变量
1. 作用:整数类型变量用来存储整数数值,即没有小数部分的值。
2.分类
![]()
在java中,为了给不同大小范围内的整数合理的分配存储空间,整数类型分为4种不同的类型。
- 整数类型默认就是int类型的。
- 在为一个long类型的变量赋值时,所赋值的后面要加上一个字母L(或小写l),说明赋值为lonh类型。
如果赋的值未超出int类型的取值范围,则可以省略字母L(或小写l)。
如:long num=2200000000L; //所赋值超出int型的取值范围,后面必须加上字母L
long num=189L; //所赋值未超出int型的取值范围,后面可以加上字母L
long num=189 ; //所赋值超出int型的取值范围,后面可以省略字母L
实例1:不同数制(进制)类型使用方式
public class TestVar1{ public static void main(String[] args){ //定义整数类型的变量 //给变量赋值时,值可以为不同进制的 int num1=12; //默认情况下赋值就是十进制数 System.out.println("num1"+"="+num1); int num2=0b10; //前面加上0b或0B,这个值就是二进制数 System.out.println("num2"+"="+num2); int num3=012; //前面加上0,这个值就是八进制数 System.out.println("num3"+"="+num3); int num4=0x12; //前面加上0x或0X,这个值就是十六进制数 System.out.println("num4"+"="+num4); } }
运行结果:输出都为十进制类型
实例2:不同整数类型使用方式
public class TestVar2{ public static void main(String[] args){ //定义byte类型的变量 byte b=12; //定义了一个byte类型的变量,名字叫b,赋值为12 System.out.println("b"+"="+b); short s=30000; //定义了一个short类型的变量,名字叫s,赋值为30000 System.out.println("s"+"="+s); int i=1234; //定义了一个int类型的变量,名字叫i,赋值为1234 System.out.println("i"+"="+i); long l=12; //定义了一个long类型的变量,名字叫l,赋值为12 System.out.println("l"+"="+l); //整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了 //要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了 long L = 12345678910L; System.out.println("L"+"="+L); } }
运行结果:
浮点数类型变量
1. 作用:浮点数类型变量用来存储小数数值。
2. 分类:
在 java中,浮点数 类型分为两种:单精度浮点型(float)和多精度浮点型(double)。
PS:有效数字指的是从左开始第一个不为0的数到最后一个数
- 在java中,一个小数会被默认为double。
因此,在为一个float类型的变量赋值时,需要在所赋值后面加上字母F(或小写f);
而double类型的变量赋值时,可以在所赋值后面加上字母D(或小写d),也可不加。
如:float f=123.4F; //为一个float类型的变量赋值,后面必须加上字母F(或小写f)
double=110.1D; //为一个double类型的变量赋值,后面可以加上字母D(或小写d)
double=112.5; //为一个double类型的变量赋值,后面可以不加上字母D(或小写d)
- 在程序中也可以为一个浮点数类型变量赋予一个整数数值,例如下面的写法也可以。
float f=100; //声明一个float类型的变量并赋整数值
double=100; //声明一个double类型的变量并赋整数值
实例1:浮点数两种表示形式的使用
public class TestVar3{ public static void main(String[] args){ //浮点数类型常量的两种形式 //十进制小数法 double num1=2.14; System.out.println("num1"+"="+num1); //科学计数法 double num2=214E-2; System.out.println("num2"+"="+num2); } }
运行结果:
实例2:浮点数两种类型的声明、赋值方式
public class TestVar4{ public static void main(String[] args){ /*浮点数类型的变量 注意:浮点数类型默认是double类型,要想将一个double类型的数赋给 float类型后面必须加上F(或小写f) */ //声明并赋值一个float类型变量,后面必须加上F(或小写f) float f1=3.1415926784F; System.out.println("f1"+"="+f1); //声明并赋值一个double类型变量,后面的D或者d一般省略不写 double d1=3.1415926784; System.out.println("d1"+"="+d1); //注意:最好不要进行不同浮点数类型的比较 float f2=0.3F; double d2=0.3D; System.out.println(f2==d2); } }
运行结果:
字符类型变量
字符类型变量用于存储一个单一字符,Java中用char表示,每个char类型的字符变量占用2个字节。
- char 类型用来表示在Unicode编码表中的字符。 (Unicode兼容了ASCII码,Unicode的前128位置ASCII)
- 在给char类型的变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来。
- 也可将char类型的变量赋值为0~65535范围内的整数(不需要加单引号),计算机会自动将这些数字转化为所对应的字符。如数值97对应的字符为'a'。
- char类型底层在进行计算的时候,实际上是按照ASCII进行计算的
布尔类型变量
boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。
变量的类型转换
在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。根据类型转换方式可分为两种:自动类型转换和强制类型转换。
不同变量的取值范围大小排序:double>float>long> int>short>char>byte
兼容性:char不能赋值给short和byte。
boolean与其他数据类型没有兼容性。
自动类型转换
自动类型转换也叫隐式类型转换,指的是两种数据类型在转换过程中不需要显示的进行声明。
要实现自动类型转换,必须同时满足两个条件:第一是两种数据类型彼此兼容,第二是目标类型的取值范围大于源类型的取值范围。
- 格式: 源类型 源类型变量名=值1;
目标类型 目标类型变量=源类型变量名;
例如:byte b=6;
int i=b; //程序把byte类型的变量b转换成了int类型,无须特殊声明
强制类型转换
强制类型转换也叫显式类型转换,指的是两种数据类型在转换过程中需要显示的进行声明。
需要进行强制转换的要求:两种数据类型彼此不兼容,或者目标类型取值范围小于源类型。
- 声明格式:目标类型 变量名=(目标类型)值;
例如:byte b=(byte)值;
- 注:在进行强制类型转换时,当源类型的值大于目标类型的取值范围时会造成数据精确的丢失。
byte的取值范围为-128~127
补充
1. 表达式类型自动提升
所谓表达式是指由变量和运算符组成的一个算式。变量表达式在进行运算时,也有可能发生自动类型转换,这就是表达式数据类型的自动提升。
如一个byte型的变量在运算期间类型会自动提升为int型。
原因:表达式b1+b2运算期间,变量b1和b2都被自动提升为int型,表达式的结果也就成了int型,这时如果将结果赋值给byte型的变量就会报错,需要进行强制类型转换。
解决办法:将第五行代码改为byte b3=(byte)b1+b2;
2. 在同一个表达式中,有多个数据类型的时候,按照当前表达式中级别最高的类型进行计算。