black-watch

Java基本的程序设计结构

注释

注释有两种。

一种是行注释:

//这是注释

另一种是块注释

/**
* 这是块注释
*/

数据类型

java中一共有8种基本数据类型:整型、浮点型、布尔型、字符类型。

整型

类型 大小(字节) 取值
byte 1 -27~27-1
short 2 -215~215-1
int 4 -231~231-1
long 8 -263~263-1
  1. 长整数类型后面跟有一个后缀L,如:1234424242L。
  2. 十六进制数值有一个前缀0x,如:0x123。
  3. java没有任何无符号类型。
  4. 不加后缀的数字(即便有0x前缀)默认为int类型。

浮点类型

类型 大小(字节) 取值
float 4 有效数字6-7位
double 8 有效数字15位
  1. double类型后缀为D。
  2. float类型后缀为F。
  3. 浮点值默认为double。
  4. 可以用“尾数e指数”或“尾数p指数”形式表达浮点数。
    1. 尾数e指数:指数基数是10;用于十进制尾数。
    2. 尾数p指数:指数基数是2;用于十六进制尾数。
  5. 浮点运算遵循IEEE 754规范,用正无穷、负无穷、NaN来表示溢出和出错。
    1. 在Float和Double类型中用常量POSITIVE_INFINITY、NEGATIVE_INFINITY、NaN表示上述三个值。
    2. 对NaN值的判定不应用“==”,而要用isNaN等静态方法;但是对无穷的判定可以用“==”;如下。
    //验证java中浮点值NaN和无穷值
    public static void verifyNaN() {
        //NaN
        System.out.println(Double.NaN == Double.NaN);
        System.out.println(Double.isNaN(Double.NaN));
        //POSITIVE_INFINITY
        System.out.println(Double.POSITIVE_INFINITY == Double.POSITIVE_INFINITY);
        System.out.println(Double.POSITIVE_INFINITY + 1 == Double.POSITIVE_INFINITY);
    }

调用结果:

false
true
true
true

字符类型

java中的字符类型和C中的字符类型不同。

  1. C中字符大小为单字节,而java中字符大小为双字节。

  2. C的字符类型表示Ascii字符。java的字符类型表示Unicode字符类型(可以表示中文)。

  3. java中字符的三种形式:字符本身、转义字符、Unicode编码;如下。

    //java字符的三种表示
    public static void charFormat() {
        //字符本身
        System.out.println("字符本身:");
        System.out.println(\'哈\');
        System.out.println(\'A\');
        //转义字符
        System.out.println("转义字符:");
        System.out.print(\'A\');
        System.out.print(\'\t\');
        System.out.println(\'B\');
        //Unicode编码
        System.out.println("Unicode编码:");
        System.out.println(\'\u03C0\');//pai
    }

调用结果:

字符本身:
哈
A
转义字符:
A	B
Unicode编码:
π
  1. Unicode编码的目的是统一各种编码格式,由于最初的Unicode字符集并不大,因此java采用了双字节字符类型。然而后来Unicode字符集急剧扩充,双字节已经不够用了,下面解释java解决这个问题的办法。
    1. Unicode将所有字符编码,将这个编码值称为代码点(codePoint)。
    2. 对于0x0000-0xffff直接的字符,可以用双字节的char表示,因此对应字符集合称为基本多语言平面(BMP),而0xffff以上的成为增补字符集,增补字符集无法用char表示,需要用String类、char[]等表示。
    3. 代码点是指一个Unicode字符,而代码单元是指一个内存中的双字节char,对于bmp字符,一个代码点对应一个代码单元,而对于增补字符,一个代码点对应两个代码单元。
    4. String.length(),返回的是代码单元的数量,而不是代码点的数量。
    //java中的代码点、代码单元
    public static void codePoint() {
        char ch = \'\u0041\';//bmp字符
        //ch = \'\u1d56b\';//增补字符,这样写会报错,因为增补字符超出了char的表示范围

        String str = new String(Character.toChars(0x1d56b));//增补字符
        //length()方法返回的是代码单元(char)数量,一个增补字符占据两个代码单元;
        System.out.println(str + ":" + str.length());
    }

调用结果:

分类:

技术点:

相关文章: