基本数据类型

java中的基本数据类型可以分为两大类:boolean和数值类型。而数值类型又可以分为整数类型和浮点类型,我们也常把java里的基本数据类型分为四类
type.jpg

整型

byte:一个byte类型整数在内存中占8位,范围是-128~127
short:一个short类型整数在内存中占16位,范围是-32768~32767
int:一个int类型整数在内存中占32位,范围是-2147483648~2147483647
long:一个long类型整数在内存里占64位,范围是-2^63~2^63-1
值得注意的是:

  • 如果直接将一个较小的整数值赋给一个byte或short变量,系统会自动把这个整数值当成byte或者short类型来处理
  • 如果使用一个巨大的整数值,超出了int的范围,java不会自动把这个整数值当成long类型处理,如何要把一个整数当
    成long类型来处理,应该在这个整数后增加l或者L作为后缀。

在java中整数值有4种表示方式:十进制,二进制,八进制和十六进制,其中二进制的整数以0b或0B开头;八进制的整数以0开头;十六进制的整数以0x或者0X开头,其中0~12分别以a~f来表示,示例代码如下

public class IntegerValTest {
    public static void main(String[] args) {
        int num = 013; /* 八进制*/
        System.out.println(num);
        int num1 = 0x13;/*十六进制*/
        System.out.println(num1);
        int num3 = 0b11010100;
        System.out.println(num3);
        int num4 = 0B01101001;
        System.out.println(num4);
        int num5 = 0B10000000000000000000000000000011;
        System.out.println(num5);
    }
}

字符型

字符型通常用于表示单个字符,字符型值必须使用单引号括起来,java语言使用16位的Unicode字符集作为编码方式,而Unicode被设计成支持世界上所以书面语言的字符,包括中文字符,因此java程序支持各种语言的字符。
字符型值有如下三种表示形式。

  • 直接通过单个字符指定字符型值,例如'A'、'9'和'0'等。
  • 通过转义字符表示特殊字符型值,例如'n'、't'等。
  • 直接使用Unicode值来表示字符型值,格式是'uXXXX',其中XXXX表示一个十六进制的整数。java语言中常用的转义字符如下图所示
    char.jpg

用法示例如下

public class CharTest {
    
    public static void main(String[] args) {
        char aChar = 'a';
        System.out.println(aChar);
        char enterChar = '\r';
        System.out.println(enterChar);
        char ch = '\u9999';
        System.out.println(ch);
        char zhong = '疯';
        int zhongValue = zhong;
        System.out.println(zhongValue);
    }

}

浮点型

Java的浮点类型分别有float和double两种类型。Java的浮点数遵循IEEE754标准(详解)。double类型代表双精度浮点数,float类型代表单精度浮点数。一个double类型的数值占8字节、64位,一个float类型的数值占4字节、32位。浮点数有以下两种方式表示:

  • 十进制数形式:例如 5.12、512.0、.512。浮点数必须包含一个小数点,不然会当做int类型处理
  • 科学计数法形式:例如5.12e2(即5.1210^2),5.12E2(也是5.1210^2)。

其中值得注意的是,只有浮点类型才可以使用科学计数法形式表示,例如:512000是一个int类型,但是512E2则是浮点类型数值

public class FloatTest {
    public static void main(String[] agrs) {
        float num1 = 5.2345556f;
        System.out.println(num1);
        double a = 0.0;
        double b = Double.NEGATIVE_INFINITY; //负无穷大
        double c = Float.NEGATIVE_INFINITY;
        System.out.println(b == c); //负无穷大是相等的
        System.out.println(a / a);  //非数相除得非数
        System.out.println(a / a == Float.NaN);
        System.out.println(6.0 / 0 == 555.0 / 0); //正无穷大是相等的
        System.out.println(-8 / a); //负数除以0.0得到负无穷大
        System.out.println(0 / 0);
    }
    
}

布尔类型

对于布尔类型来说,结果只有False和True两个值,其中字符串"true"和"false"不会直接转换成boolean类型

boolean isGreater = 5 > 3; //true
int age = 12;
boolean isZero = ago == 0; //false
boolean isNonZero = !isZero; //true
boolean isAdult = arg >= 18; //false
boolean isTeenager = age > 6 && age < 18; //true

布尔运算有一个重要的特点是短路运算。

public class Main {
    public static void main(String[] args) {
        boolean b = 5 < 3;
        boolean result = b && (5 / 0 > 0);
        System.out.println(result);
    }
}

如果没有短路运算,&&后面的表达式会由于除数为0而报错,但实际上该语句并未报错,原因在于与运算是短路运算符,提前计算出了结果false
如果变量b的值为true,则表达式变为true && (5 / 0 > 0)。因为无法进行短路运算,该表达式必定会由于除数为0而报错,可以自行测试。

最后修改:2021 年 07 月 21 日 07 : 45 PM
如果觉得我的文章对你有用,请随意赞赏