1 类型、变量与运算符

Java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型、变量、运算符、流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础。

1.1 类型

在Java的世界中,并非每个东西都抽象化为对象,你还是要面对系统的一些特性。例如,你还是要意会到内存长度有限的问题,所以程序执行时遇到123这个整数时,还是要想一下,用多少长度的内存来储存它会比较经济。基本上,Java可区分为基本类型(Primitive type)和类类型(Class type)两大类型系统。

在Java中的基本类型主要可区分为整数、字节、浮点数、字符与布尔。

■ 整数:可细分为short整数(占2个字节)、int整数(占4个字节)与long整数(占8个字节)。不同长度的整数,可储存的整数范围也不同。long整数占的内存长度比int整数来得多,可表示的整数范围也就比int整数大。同样的,int整数可表示的整数范围也比短整数来得大。

■ 字节:byte类型顾名思义,长度就是一个字节,在需要逐字节处理数据时(如图像处理、编码处理等),就会使用byte类型,若用于表示整数,byte可表示-128~127的整数。

■ 浮点数:主要用来储存小数数值,可分为float浮点数(占4个字节)与double浮点数(占8个字节),double浮点数使用的内存空间比float浮点数来得多,可表示的精确度也比较大。

■ 字符:char类型用来储存'A'、'B'、'林'等字符符号。在JDK7中,Java的字符采用Unicode 6.0编码,JVM结果采用UTF-16 Big Endian,所以每个字符类型占两个字节,汉字字符与英文字符在Java中同样都是用两个字节储存。

■ 布尔:boolean类型可表示true与false,分别代表逻辑的“真”与“假”。在Java中不用在意boolean类型的长度,因为你也无法将boolean类型与其他类型做运算。

每种类型占有的内存长度不同,可储存的数值范围也就不同。例如,int类型的内存空间是4个字节,所以可储存的整数范围为-2147483648~2147483647,如果储存值超出类型范围,称为溢值(Overflow),会造成程序不可预期的结果。不用记忆各种类型可储存的数值范围,可以通过API来得知。例如

public class Range {
    public static void main(String[] args) {
        // byte、short、int、long 范围
        System.out.printf("%d ~ %d%n", 
                Byte.MIN_VALUE, Byte.MAX_VALUE);
        System.out.printf("%d ~ %d%n", 
                Short.MIN_VALUE, Short.MAX_VALUE);
        System.out.printf("%d ~ %d%n", 
                Integer.MIN_VALUE, Integer.MAX_VALUE);
        System.out.printf("%d ~ %d%n", 
                Long.MIN_VALUE, Long.MAX_VALUE);
        // float、double 范围
        System.out.printf("%d ~ %d%n", 
                Float.MIN_EXPONENT, Float.MAX_EXPONENT);
        System.out.printf("%d ~ %d%n", 
                Double.MIN_EXPONENT, Double.MAX_EXPONENT);
        // char 可表示的 Unicode 范围
        System.out.printf("%h ~ %h%n", 
                Character.MIN_VALUE, Character.MAX_VALUE);
        // boolean 的两个值
        System.out.printf("%b ~ %b%n", 
                Boolean.TRUE, Boolean.FALSE);
        
    }    
}

首先,你在程序中看到“//”符号,这是Java程序中的单行批注。

如果我们要使用多行注解的话。就需要使用/**/

// 单行注解
/* 
	多行注解1
	多行注解2
*/

然后在看一下System.out.printf()

System.out.printf()是标准API,在第一个Java程序显示Hello World时,使用了System.out.println(),这会在标准输出中显示文字后换行,如果使用System.out.print(),则输出文字后不会换行。那么,System.out.printf()是什么?

printf()是JDK5之后才有API,f就是format的意思,也就是格式化,用在System.out上,就是对输出文字做格式化后再显示在文本模式中。printf()的第一个自变量(Argument)是字符串,其中%d、%h、%b等是格式控制符号。