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

文章目录

  • 数据类型
    • 强类型语言(安全性高,速度慢)
    • 弱类型语言
    • Java的数据类型分为两大类
      • 基本类型(primitive type)---------------**八大基本数据类型**
        • 数值类型
          • 整数类型
          • 浮点类型
          • 字节类型 char占两个字节(字符!!!不是字符串)
        • boolean类型:占一位,其值只有true和false两个
      • 引用类型(reference type)
  • 拓展
    • 整数进制
    • 浮点数
    • 字符
      • 转义字符

数据类型

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

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

弱类型语言

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,其他的包装类都是把原始类中的首字母大写…
          005Java学习--数据类型及拓展_第1张图片

      • 浮点类型
        • 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

你可能感兴趣的:(Java学习之旅)