大家好,我是猿人(猿码天地创始人),今天给码农们或即将成为码农或想成为码农的朋友讲讲Java八大数据类型,现在是深夜23:28分,猿人最擅长熬夜,就是不怕掉头发!一切都是为了亲爱的粉丝朋友能学到知识,猿人熬夜也是值得的!
我是「
猿码天地
」,一个热爱技术、热爱编程的IT猿。技术是开源的,知识是共享的!
写作是对自己学习的总结和记录,如果您对 Java、分布式、微服务、中间件、Spring Boot、Spring Cloud等技术感兴趣,可以关注我的动态,我们一起学习,一起成长!
用知识改变命运,让家人过上更好的生活,互联网人一家亲!
Java知识学堂
:
https://gitee.com/zhangbw666/it-knowledge
好,废话不多说,直接干,进入正题:Good Good Study,Day Day Up!
1. 分类
自从Java发布以来,基本数据类型就是Java语言的一部分,分别是byte, short, int, long, char, float, double, boolean.
这八种基本类型可以分为四类:整数型、字符型、浮点型、布尔型,其中整数型包括byte、short、int、long,字符型包括char,浮点型包括float、double,布尔型包括boolean
猿人给大家画个思维导图:
在详细介绍之前,先科普一下,Java中最小的计算单元为字节(byte),1字节=8位(bit),是不是有点眉目了!
好,有了上面几种基本类型,我们还有封装类(包装类),那么为什么需要封装类呢?
其实,Java 是号称面向对象的语言,所有的类型都是引用类型。Object 类是所有类的父类,而且是唯一不用指定明确继承的类。但是基本类型如 int 不是引用类型,也不是继承自 Object,所以 Java 需要一个这样的包装类来使其面向对象的完整性。包装类同时也可以实现可空类型,即一个数值是空的。Java 集合中也只能放入包装类型,而不支持基本类型。
2. 整型
-
封装类
基本类型 | 封装器类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
整数类型:byte,1字节,8位,最大存储数据量是255,存放的数据范围是-128~127之间。
整数类型:short,2字节,16位,最大数据存储量是65536,数据范围是-32768~32767之间。
整数类型:int,4字节,32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
整数类型:long,8字节,64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
3. 字符型
-
封装类
基本类型 | 封装器类 |
---|---|
char | Character |
字符型:char,2字节,16位,存储Unicode码,用单引号赋值。
4. 浮点型
-
封装类
基本类型 | 封装器类 |
---|---|
float | Float |
double | Double |
浮点类型:float,4字节,32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
浮点类型:double,8字节,64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
5. 布尔型
-
封装类
基本类型 | 封装器类 |
---|---|
boolean | Boolean |
布尔型:boolean,只有true和false两个取值。
6. 默认值
下表列出了 Java 各个类型的默认值:
数据类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | ‘u0000’ |
String (or any object) | null |
boolean | false |
我们写一个测试程序验证下:
public class Test {
static boolean bool;
static byte by;
static char ch;
static double d;
static float f;
static int i;
static long l;
static short sh;
static String str;
public static void main(String[] args) {
System.out.println("Bool :" + bool);
System.out.println("Byte :" + by);
System.out.println("Character:" + ch);
System.out.println("Double :" + d);
System.out.println("Float :" + f);
System.out.println("Integer :" + i);
System.out.println("Long :" + l);
System.out.println("Short :" + sh);
System.out.println("String :" + str);
}
}
结果:
Bool :false
Byte :0
Character:
Double :0.0
Float :0.0
Integer :0
Long :0
Short :0
String :null
7. 类型转换
类型转换分为自动类型转换和强制类型转换,我们先来看看自动类型转换。
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
byte,short,char—> int —> long—> float —> double(由低到高)
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
public class ZiDongLeiZhuan{
public static void main(String[] args){
char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);
char c2 = 'A';//定义一个char类型
int i2 = c2+1;//char 类型和 int 类型计算
System.out.println("char类型和int计算后的值等于"+i2);
}
}
结果:
char自动类型转换为int后的值等于97
char类型和int计算后的值等于66
然后是强制类型转换
-
条件是转换的数据类型必须是兼容的。
-
格式:(type)value type是要强制类型转换后的数据类型 实例:
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
结果:
int强制类型转换为byte后的值等于123
8. 自动拆箱装箱
装箱就是 Java 将基本类型转换成对应的包装类型,比如将 int 转换成 Integer 对象。反之将 Integer 转换成 int 值,则称为拆箱。
装箱时,调用 valueOf 方法实现,比如 Integer.valueOf(100); 拆箱时,调用对应的 xxxValue 方法,比如 intValue() 方法。
自动装箱拆箱功能是 java1.5 后才有的。自动装箱拆箱时,由 Java 编译器自动实现转换。
赋值操作的时候,当两边类型不同,就会发生自动装箱拆箱。
包装类是一个对象,基本类型不是。
包装类和基本类型可以互相转换,转换的过程称之为装箱拆箱,可以手动转换,也可自动转换。
包装类比较大小的时候有很多坑,比如:
==比较引用,Integer 类型只有在-128 到 127 的范围内,才会持有同一个引用。
equals 方法会先比较类型是否一致,不一致直接 false。
最佳的操作实践是,比较大小的时候,统一先手动拆箱,然后再比较值。
9. 总结
这篇文章主要讲解了八大基本数据类型的分类,以及各自的包装类、默认值以及类型转换,以及为什么需要使用包装类,各个基本数据类型的取值范围等等,认证阅读,相信一定会有所收获!
猿人于2021年3月9日 0点31分 于深圳整理,整理完这篇文章头发还有10万零551根,今天没有掉头发,持续记录头发根数,加油!
你多学一样本事,就少说一句求人的话,现在的努力,是为了以后的不求别人,实力是最强的底气。记住,活着不是靠泪水博得同情,而是靠汗水赢得掌声。
——《写给程序员朋友》
点赞&在看是最大的支持