《Java开发手册》学习进程之第2章基本数据类型

2.1  数据类型

Java表示整数常量时,默认情况下为int型;若整数常量前面有个0,则表示八进制数;若整数常量前面有个‘0x’或’0X’,则表示十六进制;从Java 7开始,二进制数可以在前面加0b来表示。

long型常量需在后面加个’l’或’L’。用System.out.println()方法输出时,其后缀名并不会输出。

如果某个浮点值没有使用float关键字(’f‘或’L‘)作为后缀名,则系统默认为double型。同long型常量一样,其后缀名也并不会输出。

注意:别把double型的常量赋值给float型的变量,把长度为8字节的double型常量赋值给一个长度为4字节的常量显然是错误的。

Java字符采用Unicode编码,每个字符占两个字节,而ASCII码(0~127)也包含在Unicode码中。

将一个整数赋值给一个字符型变量,则用System.out.println()输出时其会自动转换成字符而不是整数。字符型变量可以进行算术运算。

布尔型在Java里用来表示逻辑值,用System.out.println()输出时该类型的变量会被输出为true或false。

2.2  常量(与C语言不同,Java中并没有无符号数

Java的常量有整型、浮点型、字符型、布尔型和字符串常量五种。

标识符就是用来标识变量名、函数名、数组名、文件名、类名等等的有效字符序列。注意不能以数字来开头。

注意转义字符的使用。特别是在字符串中加入单引号或双引号时,必须在要加入的引号前加个\,这与转义字符的用法相同。即转义字符不仅可以作为字符型常量单独使用,也可放到字符串常量中。

2.3  变量

变量的作用域只对该变量所在的大括号范围有效。

在有变量参与运算的表达式中,因为其中间值可能会超过任何一个操作数类型的表示范围,为了一防万一,Java就自动对参与运算的数值类型进行了提升。例如:

public class Sample2_14
{

    public static void main(String[] args)
    {
        short a = 200;
        short b = 10;
        short c = a *  b;     // 无法将一个4字节的整数赋值给一个2字节的常量
        System.out.println(c);

    }

}

a和b 的数据类型被提升为int,故该表达式会输出一个int型而不是short型。

Java定义了表达式的类型提升规则:

  • 若表达式中有一个操作数为byte或short,该表达式的结果为int;
  • 若表达式中有一个操作数为long,该表达式的结果为long;
  • 若表达式中有一个操作数为float,该表达式的结果为float;
  • 若表达式中有一个操作数为double,该表达式的结果为double;

将一个整数赋值给一个float型变量或double型变量后,再将浮点类型的变量以System.out.println()方法输出时,其值将会在整数值之后再加个.0。

2.4  数据类型之间的转换

自动类型转换又称隐性类型转换,即不需要用户指定目标数据类型,系统自己进行转换。这种转换须满足以下条件:

  • 两种类型互相兼容
  • 目标数据类型值的范围大于被转换数据类型值的范围

若无法满足上述两条件时,这就需要强制类型转换了。例如,将一个int类型变量的值300赋给byte类型变量时,需将int类型的变量强制转换为byte类型变量,此时int类型变量的值与byte类型值的变化范围取模,即300 Mod 256 = 44,转换完成。浮点数转换为整数时,小数部分将被舍弃,整数部分的转换与上述相同。

 

posted @ 2014-11-08 11:33  WeekeyJanelan  阅读(170)  评论(0编辑  收藏  举报