数据类型

数据类型

Java的数据类型分为两大类

  • 基本类型(primitive type)

    1. 数值类型

      1. 整数类型

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

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

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

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

      2. 浮点类型

        • float占4个字节

        • double占8个字节

      3. 字符类型char占2个字节

    2. boolean类型:占1位其值只有true和false两个

  • 引用类型(reference type)

    • 接口

    • 数组

八大基本数据类型

public class Demo02 {
    public static void main(String[] args) {
        //八大基本数据类型
//整数
        int num1 = 10; //最常用
        byte num2 = 20;
        short num3 = 30;
        long num4 = 30L; //long类型要在数字后面加l
//小数:浮点数
        float num5 = 50.1F; //float类型要在数字后面加F
        double num6 = 3.141592653589793238462643;
​
        //字符
        char name = 'A';
        //字符串,String不是关键字,类
        //String name = "五毛";
//布尔值: 是非 只有这两个值
        boolean flag = true;
        //boolean flag = false;
    }
}

 

字节

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

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

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

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

 

  • 1bit表示1位

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

  • 1024B=1KB

  • 1024KB=1M

  • 1024M=1G

拓展

public class Demo3 {
  public
static void main(String[] args) { //整数拓展 进制 二进制0b 十进制 八进制0 十六进制0x int i = 10; int i1 = 0b10; //二进制0b 2 int i2 = 010; //八进制0 8 int i3 = 0x10; //十六进制0x 0~9 A~F 16 ​ System.out.println(i); System.out.println(i1); System.out.println(i2); System.out.println(i3); ​ //浮点数拓展 银行业务怎么表示? //BigDecimal 数学工具类 //float 有限 离散 舍入误差 大约 接近但不等于 //double float f = 0.1f; //0.1 double d = 1.0/10; //0.1 ​ System.out.println(f==d); //false System.out.println(f); System.out.println(d); ​ float d1 = 23232323232f; float d2 = d1 +1; ​ System.out.println(d1==d2); //true //================================== //字符拓展 //================================== char c1 = 'a'; char c2 = '中'; ​ System.out.println(c1); ​ System.out.println((int)c1); //强制转换 ​ System.out.println(c2); ​ System.out.println((int)c2); //强制转换 //所有的字符本质还是数字 //编码 Unicode 表: (97 = a 65 = A)2字节 0 - 65536 Excel 2 16 = 65536 // U0000 UFFFF char c3 = '\u0061'; ​ System.out.println(c3); //a //转义字符 // \t 制表符 // \n 换行 ​ System.out.println("Hello\nWorld"); ​ System.out.println("===================================="); String sa = new String("hello world"); String sb = new String("hello world"); System.out.println(sa==sb);//false ​ String sc = "hello world"; String sd = "hello world"; System.out.println(sc==sd);//true //对象 从内存分析 第一个是分配的堆内存中,第二个是常量池中 //布尔值扩展 boolean flag =true; ​ if(flag==true){} //新手 if (flag){} //老手 默认为ture //Less is More! 代码要精简易读 ​ }
}

 

类型转换

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

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

public class Demo04 {
  public
static void main(String[] args) { int i = 128; byte b = (byte)i; //符号是内存溢出 //强制转换 (类型)变量名 高--低 System.out.println(i); System.out.println(b); //自动转换 低--高 就不需要转换 int l = 128; double c = i; System.out.println(l); System.out.println(c); /* 注意点: 1. 不能对布尔值进行装换 2. 不能把对象类型转换为不相干的类型 3. 在把高容量转换到低容量的时候,强制转换 4. 转换的时候可能存在内存溢出,或者精度问题! */ System.out.println("========================="); System.out.println((int)23.7); //23 System.out.println((int)-45.89f); //-45 System.out.println("========================="); char v = 'a'; int d = v+1; System.out.println(d); //98 System.out.println((char)d); //b a后面就是b }
}
public class Demo05 {
  public static void main(String[] args) { //操作比较大的数的时候,注意溢出问题 //JDK7新特性,整数之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total = money*years; //-1474836480,计算的时候溢出了 long total2 = money*years; //默认是int,转换之前已经存在问题 System.out.println(total); System.out.println(total2); long total3 = money*((long)years); //先把一个数转换为long System.out.println(total3); //L 习惯用大写 }
}

 

 

posted @ 2021-05-06 18:57  闲着的大叔  阅读(78)  评论(0)    收藏  举报