跟着猿人学Java-001-八大基本数据类型

  • Post author:
  • Post category:java


大家好,我是猿人(猿码天地创始人),今天给码农们或即将成为码农或想成为码农的朋友讲讲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

然后是强制类型转换

  1. 条件是转换的数据类型必须是兼容的。

  2. 格式:(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根,今天没有掉头发,持续记录头发根数,加油!


你多学一样本事,就少说一句求人的话,现在的努力,是为了以后的不求别人,实力是最强的底气。记住,活着不是靠泪水博得同情,而是靠汗水赢得掌声。


——《写给程序员朋友》

点赞&在看是最大的支持



版权声明:本文为zbw125原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。