Java基本数据类型
编者按
数据类型是语言的基础,任何语言都离不开内置数据类型;Java内置数据类型有八种,内置数据类型之间可以进行转换。同学们不要着急,赶紧坐好,开始今天的Java自学之旅:第4讲 Java基本数据类型!
内容提要
无论何种计算机编程语言,内置基本数据类型是最基本、最为核心的内容。Java语言是一种强类型语言,强的表现就在无论任何变量都需要有对应的数据类型。
本讲我们将重点讲解以下内容:
- 内置数据类型
- 内置数据类型强制转换
内容数据类型
八种内置数据类型
如表所示,Java提供了八种内置的数据类型,其中,四种整数类型,两种浮点数类型,一种字符类型,一种布尔类型。
类型 | 默认值 | 位数 | 最小值 | 最大值 |
byte | 0 | 8位 | -128 | 127 |
short | 0 | 16位 | -32768 | 32767 |
int | 0 | 32位 | -2147483648 | 2147483647 |
long | 0L | 64位 | -9223372036854775808L | 9223372036854775807L |
float | 0.0f | 32位 | -1.4E-45 | 3.4028235E+38 |
double | 0.0d | 64位 | -4.9E-234 | 1.79769313486231570e+308 |
boolean | false | 8位 | 不涉及 | 不涉及 |
char | 0 | 16位 | \u0000(十进制整数0) | \uffff(十进制整数65535) |
boolean只有两种取值,true和false。其中,true表示逻辑为真,false表示逻辑假。整数和浮点数类型的取值范围太大,难以记住,如何是好?大家不用强行记忆,Java语言提供便于人类记忆的方式:
- MIN_VALUE表示数据类型的最小值
- MAX_VALUE表示数据类型的最大值
我们来看一段具体代码:
public class Main {
public static void main(String[] args) {
// 打印byte的默认值、最小值与最大值
byte by = 0;
System.out.println("byte default value:" + by);
System.out.println("byte min value:" + Byte.MIN_VALUE);
System.out.println("byte max value:" + Byte.MAX_VALUE);
// 打印short的默认值、最小值与最大值
short sh = 0;
System.out.println("short default value:" + sh);
System.out.println("short min value:" + Short.MIN_VALUE);
System.out.println("short max value:" + Short.MAX_VALUE);
// 打印int的默认值、最小值与最大值
int in = 0;
System.out.println("int default value:" + in);
System.out.println("int min value:" + Integer.MIN_VALUE);
System.out.println("int max value:" + Integer.MAX_VALUE);
// 打印long的默认值、最小值与最大值
long lo = 0L;
System.out.println("long default value:" + lo);
System.out.println("long min value:" + Long.MIN_VALUE);
System.out.println("long max value:" + Long.MAX_VALUE);
// 打印float的默认值、最小值与最大值
float fl = 0.0f;
System.out.println("float default value:" + fl);
System.out.println("float min value:" + Float.MIN_VALUE);
System.out.println("float max value:" + Float.MAX_VALUE);
// 打印double的默认值、最小值与最大值
double d = 0.0d;
System.out.println("double default value:" + d);
System.out.println("double min value:" + Double.MIN_VALUE);
System.out.println("double max value:" + Double.MAX_VALUE);
// 打印boolean
boolean right = true;
System.out.println("current boolean value:" + right);
// 打印char
char ch = '国';
System.out.println("current char value:" + ch);
}
}
内置数据类型强制转换
(1)自动类型转换
数学中我们学习过混合运算,同样,我们的代码中也存在混合运算,多个数的求和,如下代码:
public class Main {
public static void main(String[] args) {
byte x = 15;
short y = 50;
int z = 100;
// 求和
long sum = x + y + z;
System.out.println("the sum:" + sum);
}
}
这段代码中,有不同的Java内置数据类型,混合运算过程中,实际是先将位数小的数据转成位数最大的类型;然后,进行混合运算。针对这段代码,进行以下分解:
byte x = 15; ---> long x = 15L;
short y = 50; ---> long y = 50L;
int z = 100; ---> long z = 100L;
long sum = x + y + Z = 15L + 50L + 100L = 165L;
这种位数小的数据转成位数大的转换,我们可以称之为自动类型转换方式。这种方式是计算机自动处理完成,无需人为干预。Java内置数据类型自动转换的遵循以下规则:
byte, short, char ---> int ---> long ---> float ---> double
注意:boolean类型是不能进行自动类型转换的。
(2)强制类型转换
public class Main {
public static void main(String[] args) {
long x = 100L;
int y = x;
System.out.println("Integer y:" + y);
}
}
这段代码编译时,编译器提示:
Main.java:4: error: incompatible types: possible lossy conversion from long to int
int y = x;
^
1 error
Java支持数据从位数小的内置类型自动转换成位数大的内置类型,但是,不支持反向转换。因此,为了支持反向转换操作,需要我们对数据进行强制类型转换。我们对上述程序做点简单的修改;
public class Main {
public static void main(String[] args) {
long x = 100L;
int y = (int)x;
System.out.println("Integer y:" + y);
}
}
这段程序可以正常运行了!从上述程序示例中,我们可以得出这样的结论:
如果位数大的Java内置数据类型赋值给位数小的Java内置数据类型时,需要对位数大的Java数据类型按照位数小的Java内置数据类型进行强制转换。
假设位数高的Java内置数据类型T1的变量是num1,位数低的Java内置数据类型T2的变量是num2且其值为value1,我们采用公式化的表述方式:
公式化表述:
T2 num2 = value1;
T1 num1 = (T1)num2;
举例:
long x = 100L;
int y = (int) x;
总结
本讲内容是基础知识点,Java支持8种内置数据类型;这种8种类型分为4类:
- 整形,byte、short、int、long
- 字符型,char
- 布尔型,boolean
- 浮点型,float、double
基本数据类型之间可以进行转换,转换需要遵循一定的规则。
往期回顾
- 第1讲 Java前世今生
https://www.toutiao.com/article/7306394115615294006/?log_from=70c615ccdd79d_1701223389682
- 第2讲 Java开发环境配置
https://www.toutiao.com/article/7306698955294196287/?log_from=73070f7d6bc4e_1701410469896