005Java学习--数据类型及拓展

数据类型

强类型语言(安全性高,速度慢)

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

弱类型语言

Java的数据类型分为两大类

  • 基本类型(primitive type)---------------八大基本数据类型

    • 数值类型
      • 整数类型
        • byte占一个字节范围

        • short占两个字节范围

        • int占四个字节范围(最常用)

        • long占八个字节范围(long类型要在数字后面加个L)

          byte num1 = 127;
          short num2 = 32767;
          int num3 = 2147483647;
          long num4 = 30L;
          long num5 = 9223372036854775807L;
          

          ps:范围可以只记大概,具体可以通过各自对应的包装类名Crtl+左键,点击查看int–>Integer,char–>character,其他的包装类都是把原始类中的首字母大写…
          在这里插入图片描述

      • 浮点类型
        • float占四个字节(浮点数默认double类型,float类型要在数字后面加个F)

          float num6 = 30.2F;
          
        • double占八个字节

      • 字节类型 char占两个字节(字符!!!不是字符串)
        char name1 = 'A';
        char name2 = '张';
        //字符串,String不是关键字,是  类
        String name3 = "张三"
        
        
    • boolean类型:占一位,其值只有true和false两个
      //布尔值
      boolean flag = true;
      //boolean flag = false;
      

      字节(byte)计算机数据处理的基本单位,用大写B来表示’

      位(bit)是计算机内部数据存储的最小单位`,1B = 8b


  • 引用类型(reference type)

    • 接口

    • 数组

拓展

整数进制

二进制0b,八进制0,十六进制0x

public class Demo01 {
    public static void main(String[] args) {
        int i = 10;  //十进制
        int i2 = 010;  //八进制0
        int i3 = 0x10;  //十六进制0x
        int i4 = 0b10;  //二进制0b

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
    }
}

运行结果

10
8
16
2

浮点数

银行业务怎么表示?

public class Demo02 {
    public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0/10;

        System.out.println(f == d);
        System.out.println(f);
        System.out.println(d);

        System.out.println("========================================");

        float d1 = 233333333333333333F;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);
    }
}

float 和double 是有精度问题的,上面代码中,我们直接计算的话,预期fd为true,d1d2为false,然而结果恰恰相反

输出结果

false
0.1
0.1
=============================================
true

最好完全避免使用浮点数进行比较

最好完全避免使用浮点数进行比较

最好完全避免使用浮点数进行比较

所以银行业务与钱有关的用BigDecimal(数学工具类)。

字符

public class Demo03 {
    public static void main(String[] args) {
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);  //强制转换
        System.out.println(c2);
        System.out.println((int)c2);   //强制转换
    }
}

输出结果

a
9720013

所有的字符本质还是数字

Unicode编码

如果有一种编码,将世界上所有的符号都纳入其中,无论是英文、日文、还是中文等,大家都使用这个编码表,就不会出现编码不匹配现象。每个符号对应一个唯一的编码,乱码问题就不存在了。这就是Unicode编码。

Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,“汉”这个字的Unicode编码是U+6C49。

Unicode固然统一了编码方式,但是它的效率不高,比如UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。

char  = '\u0061';
System.out.printIn(c3);  
//输出结果:a

转义字符

\u :\uxxxx Unicode转义字符,其中xxxx是十六进制数字的字符串表示形式

\n :换行

\t :水平制表符table

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值