网站首页 > 技术文章 正文
编者按
数据类型是语言的基础,任何语言都离不开内置数据类型;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
猜你喜欢
- 2025-09-06 特气系统设计工程中常用的中英文对照表
- 2025-09-06 大数据_Flink_Java版_数据处理_Watermark(7)在代码中的设置
- 2025-09-06 第三篇:数据类型——1基本数据类型
- 2025-09-06 Java语言基础(一)-java主类结构_java的主类结构
- 2025-09-06 @程序员,你真的了解内存吗?_程序员内存重要还是cpu重要
- 2025-09-06 【C语言·003】基本数据类型的字节表示与取值范围边界
- 2025-09-06 如何选择自己喜欢的颜色,这个VBA颜色选择器一定要学会
- 2025-09-06 Spring Boot3 中解决返回接口 Long 类型数据精度损失问题全解析
- 2025-09-06 C语言入门:数据类型_c语言数据类型总结
- 2025-06-24 C语言的数据类型(c语言的数据类型说明保留字)
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)