Java的数据类型

Java的数据类型分为两大块,一个是基本数据类型,一个是引用类型,如下:

 

实际编程中,应当要注意下变量的范围,如byte的范围是-128~127,如果初始赋值超过范围,那么就会报错,如下aa=128赋值,超过127,就出现报错

改成在范围之内,就可以了,如下:

 

一、整数类型

int 的范围大概在 -21亿~21亿, java目前支持二进制、八进制、十进制、十六进制的表示

二进制的表示,在数字前加0b

八进制的表示,在数字前加0

十六进制的表示,在数字前0x

例如:

public class Demo05 {
    public static void main(String[] args) {
        //基本类型
        byte num1 = 10;
        short num2 = 20;
        int num3 = 23;
        long num4 = 988L;

        //整型扩展表示
        int num5 = 0b0011;//二进制表示,0~1
        int num6 = 010;//八进制表示,0~7
        int num7 = 0x9A;//十六进制表示,0~9,A~F
        System.out.println(num5);
        System.out.println(num6);
        System.out.println(num7);
    }
}

运行结果:

 

 

 二进制计算规则:逢二进一,如num5=0011,计算1*2^0+1*2^1=3

八进制计算规则:逢八进一,如num6=10,计算0*8^0+1*8^1=8

十六进制计算规则:逢16进一,如num7=9A,A表示10,计算 10*16^0+9*16^1=154

 

二、浮点数

 浮点数为float和double表示,用float表示的时候,需要在数字最后增加一个f,如下:

float num1 = 0.1f;//浮点型的数字复制后面要加f
double num2 = 0.1;

浮点数在计算里的表示是个接近值,而不是一个精确值,比如我看一个神奇的例子:

public class Demo05 {
    public static void main(String[] args) {
        float num1 = 0.1f;//浮点型的数字复制后面要加f
        double num2 = 0.1;
        System.out.println(num1==num2);
    }
}

按照正常理解,num1 和 num2都是0.1,应该是相等,但是我们看下程序运行结果,是否为true呢?

 

是个false,说明num1 和num2不相等,原因就是 我们刚才提到的浮点数不是一个精确数,而是一个接近数,因此

不用要浮点数去做比较判断!

 思考:

public class Demo05 {
    public static void main(String[] args) {
        float num3 = 66782382738273283728f;
        float num4 = num3 + 1;
        System.out.println(num3==num4);
    }
}

运行结果:

 

 三、字符型

字符型用char表示

字符串用String表示,String不是数据类型,是一个类,可以引用这个类来操作字符串。

public class Demo05 {
    public static void main(String[] args) {
        char s1 = 'a';
        char s2 = '中';
        String s3 = "我爱学Java!";
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);

    }
}

运行结果:

 

每个字符占用2个字节,背后对应一个uicode编码数字,我们可以对字符进行数值转换,如

public class Demo05 {
    public static void main(String[] args) {
        char s1 = 'a';
        char s2 = '中';
        String s3 = "我爱学Java!";
        System.out.println((int)s1);
        System.out.println(s2);
        System.out.println(s3);

    }
}

运行结果:

 

我们看到在输出的s1前 增加int类型转换,那么就把字符a对应的uicode编码值97打印出来。

在字符输出的时候,也会碰到需要对字符进行格式输出,如空格,回车等,这个时候需要用到转义字符,

在字母前面加上捺斜线"\"来表示常见的那些不能显示的ASCII字符.常见的转义字符有\t,\n等

 

 四、布尔类型

布尔类型用boolean来定义,赋值是true或false,一般用于比较判断,if语句、while语句中

public class Demo05 {
    public static void main(String[] args) {
        boolean flag = true;
        if(flag){
            System.out.println("真");
        }

    }
}

Java语言讲究代码精简,即less is more,像以上的if语句,初学者一般这样写

if(flag == true){}  这个一般是新手这样写的

if(flag){} ,这个是Java推荐,也是一般老手的程序员推荐的。

当然,以上两种都可以编译通过。

 

posted @ 2020-10-01 12:39  Danny·茄子  阅读(183)  评论(0)    收藏  举报