Java第1课-数据类型

1. 八个基本数据类型

  1. 整数类型

    byte num1 = 1;//byte占1个字节
    short num2 = 2;//shot占2个字节
    int num3 = 3;//int占4个字节
    long num4 = 4L;//long占8个字节,数字后面要加L
    
  2. 浮点类型

    float num5 = 5F;//float占4个字节,数字后面要加F
    double num6 = 6;//double占8个字节
    
  3. 字符类型

    char ch = 'A';//char占2个字节,定义的是字符,用''。
    String str = "中国"; //String不是关键字而是类,定义的是字符串,用""。
    
  4. 布尔类型

    boolean flag = true;//boolean占1位				
    

2. 八进制、十进制、十六进制表示

int i1 = 010;//八进制
int i2 = 10;//十进制
int i3 = 0x10;//十六进制
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);

输出结果:

8
10
16

3. 浮点数注意事项

避免浮点数进行比较!!!可用BigDecimal

double d = 0.1;
float f = 0.1f;
System.out.println( d == f );//输出结果为0,因为浮点数无法精确表示0.1

输出结果:

false

4. c++和java的字符类型占用内存不同

java字符编码是Unicode编码,2字节,可表示65536个字符
c语言字符编码是ASCII编码,1字节,可表示128个字符

char c1 = 'a';
char c2 = '国';
System.out.println( (int)c1 );
System.out.println( (int)c2 );

输出结果:

97
22269

5. 布尔值的判断语句

boolean FLAG = true;
if (FLAG == true){}
if (FLAG){}
//两个语句等价,但后者更简洁

6.类型转换

  1. 自动类型转换

    (1) 自动类型转换的优先级

    byte, short, char -> int -> long -> float -> double由低到高会触发自动类型转换,而由高到低必须人为地使用强制类型转换

    int number1 = 1;
    double number2 = 1.0;
    System.out.println(number1);
    System.out.println(number1+number2);//int类型自动转换成了double类型
    

    输出结果:

    1

    2.0

    char ch1 = 'a';
    int g = 1;
    System.out.println(ch1);
    System.out.println(ch1+g);//char类型自动转换成了int类型
    

    输出结果:

    a
    98

    (2) 自动转换类型的时机

    int money = 10_0000_0000;//运行时计算机会无视下划线_,它的存在意义是增加了程序的可读性
    int year = 20;
    int total1 = money * year;
    long total2 = money * year;
    long total3 = money * (long) year;
    System.out.println(total1);//发生内存溢出
    System.out.println(total2);//int类型*int类型,得到的还是int类型,然而此时已经发生了内存溢出。然后再把int类型的值赋给long类型的变量,得到的还是溢出的结果
    System.out.println(total3);//int类型*long类型,得到的是long类型,因此不会发生内存溢出
    

    输出结果:

    -1474836480
    -1474836480
    20000000000

  2. 强制类型转换

    (1) 强制类型转换的使用

    char ch1 = 'a';
    int g = ch1 + 1;
    System.out.println(ch1 + 1);
    System.out.println((char)(ch1 + 1));
    //char类型本来会自动转换成了int类型,但可通过强制类型转换来避免自动类型转换
    

    输出结果:

    98
    b

    (2) 强制类型转换可能导致内存溢出

    int number3 = 128;
    byte number4 = (byte) number3;
    System.out.println(number3);
    System.out.println(number4);//出现了内存溢出
    

    输出结果:

    128
    -128

    (3) 强制类型转换可能导致精度损失

    double number5 = 56.22;
    int number6 = (int)number5;
    System.out.println(number5);
    System.out.println(number6);//出现了精度损失
    

    输出结果:

    56.22
    56

7. 同时初始化多个变量

正确写法:

double a = 5.0, b = 7.0;//既声明和初始化了a,又声明和初始化了b

double a, b;//先声明a,b
a = b = 7;//在初始化a,b

错误写法:

double a = b = 7;//此为错误语句

此语句只声明了a但没有声明b,编译器从右到左扫描,要把7赋值给b,但b未被声明,所以错误

posted @ 2021-11-27 09:30  以学愈愚  阅读(46)  评论(0)    收藏  举报