第 4 章 基本数据类型

文章由《大牛1对1》书写,保留所有权利,如有转载请注明来源。
如果你对内容有更好的建议,请联系我们。

我们平常所说的汉字、数字等在Java中都是一种数据。Java是一种强数据类型的编程语言,也就是说每种数据的类型是十分确定的,比如“你好”是字符串类型,“123”是数值类型。
在本章我们将学习8个Java的基本数据类型。

4.1 数据存储

在生活中,我们可以把汉字写到纸张上。那么在计算机中,我们把数据写到了硬盘中。纸张上的汉字是以笔画图形展现的,而硬盘中的数据是用“0101”这样的二进制存储的。
计算机的是使用二进制表示信息,其存储单元是位(bit),又称为比特位,用小写字母b表示,每一个位表示0或1,你可以把一位想象成一个小格子。
在这里插入图片描述
如果我们使用1个比特位存储信息,那么只能存储“0”或“1”;如果我们使用2个比特位存储信息,那能存储“00”、“01”“10”“11”四个数据了。也就是说,随着位数的增加所能存储的信息也在增加。
在计算机中,8个比特位组成一个字节(Byte),可理解为8个小格子组成一个字节,字节使用大写字母B表示。
以后我们在存储信息时,可以说1个B的范围,也就是8个比特位,那么能够表示的信息就时2的8次方个数据,这是比较大的了。
在Java中,每种数据类型都分配了不同的空间,也就是说每种数据类型分配的字节数量不同,所以表示数据的大小也不同。
根据表示数据的类型和使用字节的大小,Java设计了8个基本数据类型。
在这里插入图片描述

4.2 整数类型

不同的整数类型被分配了不同的空间,其表示数据的大小也不一样。根据占用内存空间的不同,整数类型分为:byte(字节)、short(短整型)、int(整型)、long(长整型)。
在这里插入图片描述
定义整型数据时默认是int类型。long型的声明要在数值最后加上大写L。

每一种数据类型所占用的字节数和能够表示的范围如上表。对于比如字节型byte,你或许会疑惑,为何表示范围是-128~127,这涉及到了原码、反码、补码的概念,在此我们不做详细叙述,如有兴趣可网上搜索研究。
声明整数类型时,比如你把短整型short类型的一个数据32767,声明成字节型byte,就会出现如下提示:

Type mismatch: cannot convert from 应有范围名 to 现在范围名

下面是各种整数类型的使用示例,代码如下:

package com.chapter4;

public class NumberType {

    public static void main(String[] args) {

        /*
         字节型 范围:-128到127
         */
        byte bt = -128;
        System.out.println(bt);

        /*
         短整型 范围:-32768到32767
         */
        short st = -32768;
        System.out.println(st);

        /*
         整型 范围:-2 147 483 648到2 147 483 647
         */
        int it = -2147483648;
        System.out.println(it);

        /*
         长整型 范围:-9223372036854775808~到9223372036854775807
         */
        long lg = -9223372036854775808L;
        System.out.println(lg);

    }

}

运行结果:

-128
-32768
-2147483648
-9223372036854775808

4.3 浮点类型

你是否看过一个短视频,一位小学生把0.9加0.1的结果写成了1,而老师给了大大的叉号,并且父母也在纠结到底哪儿错了。
0.9是带小数点的,准确的说是浮点类型,0.1也是浮点类型,那么他们的结果也是浮点类型,就是说结果应该是1.0。1和1.0有什么不一样吗,有的,1是字节型byte整数类型,1.0是浮点类型。
浮点类型表示的是带小数的数据类型,有double和float两种,double占8个字节,是双精度数据类型,float占4个字节,是单精度数据类型。
在这里插入图片描述

定义浮点数时默认是双精度类型。
float类型的数值后边应加上后缀F,double类型的数值后边应加上后缀D。
下面就演示一下两种浮点类型的表示范围,代码如下:

package com.chapter4;

public class DoubleFloatType {

    public static void main(String[] args) {

        /*
         double占8个字节,是双精度数据类型
         float占4个字节,是单精度数据类型
         */

        // 定义一个双精度数据类型
        double db = 1.123F;
        System.out.println(db);

        // 定义一个单精度数据类型
        float ft = 1.123F;
        System.out.println(ft);

    }

}

运行结果:

1.1230000257492065
1.123

4.4 字符类型

每个国家地区有自己的字符,比如中文“你”、“我”,或是英文的“a”、“z”,或是各种特殊符号“!”、“¥”。随着互联网的发展,科学家们基于各个国家语言可能出现的符号和文字,并将为他们编号,最后形成一种Unicode规则的字库,这就是Unicode编码。它在1990年开始研发,1994年正式公布。
char字符类型占16个比特位,2个字节,采用Unicode编码。最小值是 \u0000(即为0),最大值是 \uffff(即为65,535)。
char可以表示0-65535的数值,每个数值对应一个字符,涵盖了各个国家可能出现的符号和文字,在Java中,这些符号和文字需要使用英文单引号括起来。
示例代码:

package com.chapter4;

public class CharType {

    public static void main(String[] args) {

        // 声明一个字符
        char ch = 'a';
        System.out.println(ch);

        int it = 100;
        //本质是字符a的数值+100
        System.out.println(ch + it);

// 声明一个字符
        char gender = ‘男’;
        System.out.println(gender);
    }

}

运行结果:

a
197

字符a在ASCII 码的数值是97,所以上述加的结果是197。

转义字符
如回车、换行等字符,需要使用转义字符表示,是用斜杠开头的。
部分转义字符:
在这里插入图片描述
示例代码:

package com.chapter4;

public class CharEscape {

    public static void main(String[] args) {

        // 定义字符类型
        char ch = 'a';
        System.out.println(ch);

        // 定义转义字符,回车
        char enter = '\r';
        System.out.println(enter);

        char chr = 'b';
        System.out.println(chr);
    }

}

运行结果:

a

b

可以看到,在a和b之间有一个空行,这个就是转义字符回车的效果。

4.5 布尔类型

布尔boolean这种数据类型其值有两个,即"真"与"假",在Java中使用true或false表示。
布尔类型占8个比特位,1个字节。
示例代码:

package com.chapter4;

public class Boolean {

    public static void main(String[] args) {

        // 定义一个true
        boolean flag = true;
        System.out.println(flag);

    }

}

运行结果:

true

4.6 数据类型转换

在实际编程工作中,常遇到需要对数据类型进行转换。比如两个整数相除,其结果是小数时,而要求是输出其整数部分。
数据类型转换分为自动类型转换、强制类型转换。

自动数据类型转换

两个变量A、B,A的表示表示数据范围小,B的表示范围大,当把A的值赋值给B时,叫做自动类型转换。
数据类型的表示数据范围由小到大如下图:
在这里插入图片描述
示例代码:

package com.chapter4;

public class AutoConversion {

    public static void main(String[] args) {

        int number = 10;

        /*
         int 的数据范围小
         double 的数据范围大
         此时进行的是自动转换
         */
        double db = number;

        System.out.println(db);

    }

}

运行结果:

10.0

强制数据类型转换

两个变量A、B,A的表示数据范围大,B的表示范围小,当把A的值赋值给B时,叫做强制类型转换。强制数据类型转换会出现数据损失问题。强制类型转换的顺序与自动类型转换正好相反。
强制类型转换的格式:

目标数据类型 变量名 = (目标数据类型)需要转换的值

示例代码:

package com.chapter4;

public class ForcedConversion {

    public static void main(String[] args) {

        double number = 10.456;
        System.out.println(number);

        /*
         int 的数据范围小
         double 的数据范围大
         此时进行的是强制转换
         */
        int it = (int) number;

        System.out.println(it);

    }

}

运行结果:

10.456
10

由结果我们可以看出,0.456被丢失了,这就是强制类型转换时的数据丢失问题。

4.7 总结

总结

计算机使用二进制存储数据,存储单元是bit,8bit是一个Byte。
Java有8种基本数据类型,每种使用的存储空间不同,其表示的范围也不同。
整数类型分为:byte、short、int、long。
浮点类型分为:double、float。
字符类型采用Unicode编码,表示0-65535的数值,对应65535个字符。
布尔数据类型在Java中使用true或false表示。
数据类型转换分为自动类型转换、强制类型转换。
数据范围从小到大的转换称为自动类型转换,从大到小的转换称为强制类型转换,强制类型转换存在数据丢失问题。

4.8 思考与作业

思考一:年龄是哪种数据类型,姓名是哪种数据类型,圆周率是哪种数据类型?
思考二:整数类型、浮点类型为何不是一种,而是多种?
作业一:使用字符类型表示性别,并输出。
作业二:寻找一个自动类型转换的场景。
作业三:熟练记住Java的8种基本数据类型和自动转换类型的顺序。

文章由《大牛1对1》书写,保留所有权利,如有转载请注明来源。
如果你对内容有更好的建议,请联系我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值