JAVA基本数据类型那些不可告人的秘密

先讲个笑话:String 是JAVA的基本数据类型,相信很多人都看过这个笑话,但是你在笑话别人的同时,真的了解JAVA基本数据类型吗?

首先上一张图:
JAVA基本数据类型那些不可告人的秘密_第1张图片
这张图清晰地展示了JAVA的 8 种数据类型的字节、取值范围、以及默认值。

其中基本数据类型又可以分为三大类

数值型(整数类型:byte、short、int、long;浮点类型:float、double)

字符型(char)

布尔型(boolean)

基本数据类型使用的选择:

相信很多初学者对于基本数据类型的选择都有一定的疑惑,比如我要定义一个 年龄值 我该用 byte ? short ? int ?long ?我定义一个小数用 float ?double ?

默认使用规则:整数用 int ;小数用 double ;逻辑控制用 boolean ;有中文时用 char ;

初始化和赋值:

所有的基本数据类型的初始化和赋值都遵循一个公式:

//数据类型 变量名 = 值(或者是其他变量);  
        int i = 1000;
数据溢出:

从文章开头的表格可以看到,每个基本数据类型都有一个自己的取值范围,那么有的小伙伴就要问了,假如我超出了范围会发生什么?那么这就涉及到一个数据类型溢出的问题了,先来看一小段测试代码:

public static void main(String[] args) {
        int i=128;
        byte b= (byte) i;
        System.out.println(b);
        //输出结果为   -128
    }

首先我们用 int 类型保存了一个超过了 byte(-128~127) 范围的数值,然后把 int 值赋值给 byte(这里需要强制转换类型:把范围大(大容器)的数据类型的数值赋值给范围小(小容器)的数据类型需要进行强制类型转换,反之则不用) ,可以发现输出结果:-128,这不是 byte 的最小范围嘛? YES ! 如果 int 值是129,那么对应的输出结果会是 -127 ,相信聪明的小伙伴已经知道数据溢出会发生什么了!(当然这里建议在写代码的时候就应该预估好数据范围,避免出现这种溢出的情况)

运算时的数据类型:

学过JAVA运算符的小伙伴一定知道,两个 int 值进行一个除法运算后,最终得到的结果会是一个舍弃了小数位的整数,那么我们想要获取到后面的小数应该怎么来写呢?看代码:

public static void main(String[] args) {
        int a = 3;
        int b = 2;
        //输出结果为    1
        System.out.println(a / b);
        //输出结果为    1.5
        System.out.println((double) a / b);
    }

可以看到,只需要把其中一个 int 值强制转换成 浮点型( float 或 double ),就可以得到一个小数。得出结论:计算时如果运算中有 浮点型 的数值参与,那么所得到的结果会也会是 浮点型。

字符型和 ASCII 的孽缘:

在我刚学JAVA的时候,这个 char 类型可把我整得挺懵。。。不多说先看一小段代码:

 public static void main(String[] args) {
        char c = 'A';
        int i = c;
        //输出结果   65
        System.out.println(i);
        //输出结果   A
        System.out.println((char) i);
    }

JAVA 字符编码规则:只需要记住 ‘A’=65、‘a’=97、‘0’=48,然后往后推算即可!

大写字母:65=‘A’、66=‘B’、67=‘C’…

小写字母:97=‘a’、98=‘b’、99=‘c’…

数字:48=‘0’、49=‘1’、50=‘2’…

番外篇:String字符串

问题:String是基本数据类型吗?它可以被继承吗?

答案:String 是 引用类型 而不是基本数据类型,底层是用char数组实现的,并且是 final 类,我们都知道在JAVA中被 final 修饰的类都是不可被继承的。

关于字符串和基本数据类型的连接:

关于字符串(+)号的使用,也是搞懵了很多JAVA初学者,经常会出现一些小错误,就像如下代码,如果照第一种方式输出,那么两个 int 值会一个个自动转化成字符串加到 str 后面,而不是很多时候想要的 先让两个数值进行运算,所以这里我们需要借助一下小括号的帮助,先让两个 int 数值进行运算(这里遵循数学的运算规则)再加到 str 上。

public static void main(String[] args) {
        int chinese = 100;
        int english = 1;
        String str = "我的总成绩是:";
        //输出结果:   我的总成绩是:1001
        System.out.println(str + chinese + english);
        //输出结果:   我的总成绩是:101
        System.out.println(str + (chinese + english));
    }

你可能感兴趣的:(Java)