网站首页 > 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
猜你喜欢
- 2024-11-17 java基本数据类型四类八种,快来看看
- 2024-11-17 Java,基本类型和引用类型,强引用、软引用、弱引用、虚引用
- 2024-11-17 三石说:java基础之 基本数类型(java基本类型数据)
- 2024-11-17 java中基本类型_boolean(java中基本类型的字节数)
- 2024-11-17 Java语言提供了八种基本类型(java语言的八种基本类型)
- 2024-11-17 java基本类型部分理解(java基本类型部分理解是什么)
- 2024-11-17 Java数据类型系列之八大基本数据类型
- 2024-11-17 Java 里的基本类型和引用类型(java 里的基本类型和引用类型一样吗)
- 2024-11-17 java面试题:java有哪几种基本类型,分别占多少字节?
- 2024-11-17 java基础-8种基本类型介绍(java有几种基础类型)
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)