Java基础-数据类型

Java数据类型

强类型语言

  • 要求变量的使用要求严格符合规定,所有变量都必须县定义后才能使用

  • 优点:安全性高

  • 缺点:速度比较慢

弱类型语言

  • 要求变量的使用可以不符合规定,所有变量都可以不定义都能使用

Java的数据类型分为两大类

  • 基本类型(primitive type)

  • 引用类型(reference type)

基本类型

  • 数值类型

    • 整数类型

      • byte占1个字节范围:-128-127

      • short占2个字节范围:-32768-32767

      • int占4个字节范围:-2147483648-2147483647

      • long占8个字节范围:-9223372036854775808-9223372036854775807

    • 浮点类型

      • float占4个字节

      • double占8个字节

    • 字符类型char占2个字节

  • boolean类型:占1位字节只有true和false

引用类型

  • 接口

  • 数组

        //八大数据基本类型
​
        //整数
        int num1 = 1000000000; //最常用
        byte num2 = 20;
        short num3 = 30;
        long num4 = 30L; //long类型要在数字后面加个L
​
        //小数:浮点书
        float num5 = 1.1F; //float类型要在数字后面加个F
        double num6 = 3.141592653;
​
        //字符
        char name1 = 'A';
        //字符串,String不是关键字,是一个类
        //String name2 = "aaa";
        //布尔值
        boolean flag = true;
        boolean flag1 = false;

字节

  • 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。

  • 字节(byte):是计算机数据处理的基本单位,习惯上用大写B来表示

  • 1B(byte,字节)=8bit(位)

  • 字符:是指计算机中使用的字母,数字,子和符号

    • 1bit表示1位

    • 1Byte表示一个字节1B=8b

    • 1024B =1KB

    • 1024KB = 1M

    • 1024M = 1G

进制转换

  • 二进制

  • 八进制

  • 十进制

  • 十六进制

        //整数拓展   进制   二进制0b         八进制0       十进制       十六进制0x
        int i = 10;
        int i2 = 0b111; //二进制0b
        //2进制转10进制  2进制: 0b111 十进制:1*2*2+1*2+1=7 = 1*2^2+1*2^1+1
        int i3 = 0121; //八进制0
        //8进制转10进制  8进制: 0x121 十进制:1*8*8+2*8+1=81 = 1*8^2+2*8^1+1
        int i4 = 0x101; //十六进制0x   0~9 A-F 16
        //16进制转10进制   16进制: 0x101 十进制:1*16*16+0*16+1=257 = 1*16^2+0*16^1+1
        /**
         * 十进制转2进制
         * 十进制15  15/2=7余1
         *          尾数部1     :1
         *          7/2=3余1
         *          尾数补1     :11
         *          3/2=1余1    :111
         *          1直接补      :1111
         *十进制50   50/2=25
         *          尾数补0          :0
         *          25/2=12余1      :10
         *          12/2=6          :010
         *          6/2=3           :0010
         *          3/2=1y1         :10010
         *          1               :110010
         *
         */
        /**十进制转8进制
         * 十进制50  50/8=6y2      :2
         *          6             :62
         */
        /**十进制转16进制
         * 十进制50  50/16=3y2      :2
         *          3             :32
         */
​
        /**十进制小数转2进制
         *
         * 十进制0.4
         * 乘二,取整数
         *          0.4*2=0.8       :0.0
         *          0.8*2=1.6       :0.01
         *          0.6*2=1.2       :0.011
         *          0.2*2=0.4       :0.0110 小数后面不够八位继续
         *          0.4*2=0.8       :0.01100
         *          0.8*2=1.6       :0.011001
         *          0.6*2=1.2       :0.0110011
         *          0.2*2=0.4       :0.01100110 小数后面够八位结束
         */
        /**十进制小数转2进制
         *
         * 十进制111.4
         * 整数部分直接转换     111转2进制:1101111
         *小数部分乘二,取整数
         *          0.4*2=0.8       :1101111.0
         *          0.8*2=1.6       :1101111.01
         *          0.6*2=1.2       :1101111.011
         *          0.2*2=0.4       :1101111.0110 小数后面不够八位继续
         *          0.4*2=0.8       :1101111.01100
         *          0.8*2=1.6       :1101111.011001
         *          0.6*2=1.2       :1101111.0110011
         *          0.2*2=0.4       :1101111.01100110 小数后面够八位结束
         */
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);

​

浮点数注意事项-最好避免使用浮点数进行比较

  • float

    • 表示的长度有限的,离散的

    • 有舍入误差

    • 大约接近不等于

  • double

需要比较可以使用BigDecimal-数学工具类

        float f = 0.1f;  //0.1
        double d = 1.0/10;  //0.1
        System.out.println(f==d);  //结果为:false
        float f1 = 12341241241241241f;
        float f2 = f1+1;
        System.out.println(f1==f2);//结果为:true

字符拓展

  • char

    • 字符的本质还是数字

  • 转义字符

  • 对象

​
        /**
         * 字符拓展
         */
        char c1 = 'a';
        char c2 = '中';
        System.out.println((int)c1);//强制转换成int格式
        //输出结果:97
        System.out.println(c1);
        //输出结果:a
        System.out.println((int)c2);//强制转换成int格式
        //输出结果:20013
        System.out.println(c2);
        //输出结果:中
        /**
         * 所有字符本质还是数字
         * 编码表Unicode (97 = a 65 =A) 2字节  0-65536  Excel  2 16 = 65536
         */
        char c3 = '\u0061';//输出结果a
        System.out.println(c3);
        //转义字符
        // \t 制表符,相当于空格
        // \n 换行
        //...
        System.out.println("Hello\tWorld"); //输出结果:Hello    World
        System.out.println("Hello\nWorld");//输出结果:Hello
        //                                           World
​
​
        String sa = new String("hello");
        String sb = new String("hello");
        System.out.println(sa==sb);//输出结果:false
        String sc = "hello";
        String sd = "hello";
        System.out.println(sc==sd);//输出结果:true
        //对象  从内存分析
​
        //布尔值扩展
        boolean flag = true;
        if (flag) {}
        //上下是一个意思
        if (flag == true) {}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值