java数据类型

java数据类型

一. 数据类型

1.1 强类型语言

需要变量的使用严格符合个规定,所有的变量必须先定义后使用,
强类型语言包括Java、.net 、Python、C++等语言。

1.2 弱类型语言

弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换
弱类型语言包括vb 、PHP、javascript等语言。

1.3 java数据类型分为两大类

1.3.1 基本数据类型

1.3.1.1 boolean类型(占一位其值只有true和false两个)

1.3.1.2 数值类型->整数类型,浮点类型,字符类型

整数类型->

byte(1字节,-128-127,-27-27-1),

short(2字节,-32768-32767,-215-215-1),

int(4字节,-2,147,483,648-2,147,483,647,-231-231-1),

long(8字节,-9,223,372,036,854,775,808-9,223,372,036,854,775,807,-263-263-1)

浮点类型->float(4字节),double(8字节)

字符类型->char(2字节)

1.3.2 引用数据类型

包括类,接口,数组

提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类、Random类。

我们可以把类的类型为两种:

  • 第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。

  • 第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。

1.4 扩展问题

1.4.1 进制问题

        int i = 10;
        int i2 = 010;//8进制
        int i3 = 0x10;//16进制
        System.out.println(i);//10
        System.out.println(i2);//8
        System.out.println(i3);//16

1.4.2 浮点数问题

        float f = 0.1f;//0.1
        double d = 1.0 / 10; //0.1
        System.out.println(f == d); //false
        float d1 = 23131312312312313f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);//true

1.4.3 字符问题

        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int) c1);
        System.out.println(c2);
        System.out.println((int) c2);
        //所有的字符本质还是数字

1.4.4 unicode编码

        //编码unicode:97=a 65=A  2字节 66535 Excel 2^16=66536
        char c3 = '\u0061';
        System.out.println(c3);//a

1.4.5 字符转义

        //转义字符
        /**
         * \' 单引号字符
         * \\ 反斜杠字符
         * \r 回车
         * \n 换行
         * \f 走纸换页
         * \t 横向跳格
         * \b 退格
         */
        System.out.println("Hello\nWorld");

1.5 类型转换

java为强类型语言,所以要进行有些运算的时候需要用到类型转换

低---------------->高

byte,short,char-> int -> long-> float -> double

运算中不同的类型书序先化为同一类型,然后进行运算

  • 不能对布尔值进行转换
  • 不能把对象类型转换成不相干的类型
  • 把高容量转换为低容量,强制转换
  • 转换的时候可能存在内存溢出,或者精度问题

1.5.1 强制类型转换

        int i = 128;
        byte b = (byte) i; //内存溢出
        //强制转换(类型)变量名 高->低
        System.out.println(i);//128
        System.out.println(b);//-128

1.5.2 自动类型转换

        int i2 = 128;
        double b2 = i;
        //自动转换 低->高
        System.out.println(i2);//128
        System.out.println(b2);//128.0
        System.out.println("================");
        char c = 'a';
        int d = c + 1;
        System.out.println(d);//98
        System.out.println((char) d);//b

1.5.3 操作大数溢出问题

        int money = 10_0000_0000;
        int years = 20;
        int total = money * years;//-1474836480 计算的时候溢出了
        System.out.println(total);//-1474836480

        long total2 = money * years; //默认是int,转换之前已经存在问题了?
        long total3 = money * ((long) years); //先把一个数转换为Long
        System.out.println(total3);//20000000000

posted on 2020-10-01 18:57  桌角是小黑  阅读(114)  评论(0)    收藏  举报