BBS水木清华站∶精华区

发信人: FrankCH (小花花), 信区: Java 
标  题: Java教程(三) 
发信站: BBS 水木清华站 (Sun Jul 27 12:08:04 1997) 
 
 
JAVA程序设计语言讲座(第3讲)  
 
 
 
                                王 克 宏   郁 欣   孙 元   王 曦 东  
 
 
 
                             第 一 部 分 Java入 门  
 
F3:第 二 章   数 据 类 型 (续 )  
 
     int类 型 是 最 常 使 用 的 一 种 整 数 类 型 。 它 所 表 示 的 数 据 范 围  
64位 处 理 器 。 但 对 于 大 型 计 算 ,常 会 遇 到 很 大 的 整 数 ,超 出 int类  
 
 所 表 示 的 范 围 ,这 时 要 使 用 
long类 型 。  
 
     由 于 不 同 的 机 器 对 于 多 字 节 数 据 的 存 储 方 式 不 同 ,可 能 是 ?  
低 字 节 向 高 字 节 存 储 ,也 
可 能 是 从 高 字 节 向 低 字 节 存 储 ,这 样 ,在 分 析 网 络 协 议 或 文 件 格  
? 时 ,为 了 解 决 不 同 机 器 上 
的 字 节 存 储 顺 序 问 题 ,用 byte类 型 来 表 示 数 据 是 合 适 的 。 而 通 常  
? 况 下 ,由 于 其 表 示 的 数 据 
范 围 很 小 ,容 易 造 成 溢 出 ,应 避 免 使 用 。  
 
     short类 型 则 很 少 使 用 ,它 限 制 数 据 的 存 储 为 先 高 字 节 ,后 低 ?  
节 ,这 样 在 某 些 机 器 中 会 出 
错 。  
 
     三 、 整 型 变 量 的 定 义 ,如 : 
 
    byte b;     //指定变量b为byte型 
    short s;    //指定变量s为short型 
    int i;       //指定变量i为int型 
    long l;     //指定变量l为long型 
 
 
                                     § 2.4浮 点 型 (实 型 )数 据  
 
     一 、 实 型 常 量  
 
     与 C,C++相 同 ,Java的 实 常 数 有 两 种 表 示 形 式 :  
 
     ① 十 进 制 数 形 式 ,由 数 字 和 小 数 点 组 成 ,且 必 须 有 小 数 点 ,如0 
.123, .123, 123.,123.0  
 
     ② 科 学 计 数 法 形 式 。 如 :123e3或 123E3,其 中 e或 E之 前 必 须 有 数  
 ,且 e或 E后 面 的 指 数 必 须 
为 整 数 。  
 
     实 常 数 在 机 器 中 占 64位 ,具 有 double型 的 值 。 对 于 float型 的 值 , 
? 要 在 数 字 后 加 f或 F,如 
12.3F,它 在 机 器 中 占 32位 ,且 表 示 精 度 较 低 。  
 
     二 、 实 型 变 量  
 
     实 型 变 量 的 类 型 有 float和 double两 种 ,下 表 列 出 这 两 种 类 型 所  
? 内 存 的 位 数 和 其 表 示 范 
围 。  
 
    数据类型        所占位数       数的范围 
    float             32           3.4e-038~3.4e+038 
    double            64           1.7e-308~1.7e+308 
 
 
     双 精 度 类 型 double比 单 精 度 类 型 float具 有 更 高 的 精 度 和 更 大  
 表 示 范 围 ,常 常 使 用 。  
 
     三 、 实 型 变 量 定 义 ,如  
 
     float f; //指 定 变 量 f为 float型  
 
     double d; //指 定 变 量 d为 double型  
 
     [注 ]与 C、 C++不 同 ,Java中 没 有 无 符 号 型 整 数 ,而 且 明 确 规 定 了  
? 型 和 浮 点 型 数 据 所 占 的 
内 存 字 节 数 ,这 样 就 保 证 了 安 全 性 、 鲁 棒 性 和 平 台 无 关 性 。  
 
                                        § 2.5字 符 型 数 据  
 
     一 、 字 符 常 量  
 
     字 符 常 量 是 用 单 引 号 括 起 来 的 一 个 字 符 ,如 ‘ a’ ,‘ A’ 。 ?  
外 ,与 C、 C++相 同 ,Java也 提 供 转 
义 字 符 ,以 反 斜 杠 (\)开 头 ,将 其 后 的 字 符 转 变 为 另 外 的 含 义 ,下 ?  
列 出 了 Java中 的 转 义 字 符 。  
 
     与 C、 C++不 同 ,Java中 的 字 符 型 数 据 是 16位 无 符 号 型 数 据 ,它 表  
? Unicode集 ,而 不 仅 仅 是 
ASCII集 ,例 如 \u0061表 示 ISO拉 丁 码 的 ‘ a’ 。  
 
    转义字符             描述 
    \ddd                1到3位8进制数据所表示的字符(ddd) 
    \uxxxx              1到4位16进制数所表示的字符(xxxx) 
    \'                  单引号字符 
    \\                  反斜杠字符 
    \r                  回车 
    \n                  换行 
    \f                  走纸换页 
    \t                  横向跳格 
    \b                  退格 
 
 
     二 、 字 符 型 变 量  
 
     字 符 型 变 量 的 类 型 为 char,它 在 机 器 中 占 16位 ,其 范 围 为 0~ 655 
35。 字 符 型 变 量 的 定 义 如 
  
 
     char c='a'; //指 定 变 量 c为 char型 ,且 赋 初 值 为 'a'  
 
     与 C、 C++不 同 ,Java中 的 字 符 型 数 据 不 能 用 作 整 数 ,因 为 Java不  
 供 无 符 号 整 数 类 型 。 但 
是 同 样 可 以 把 它 当 作 整 数 数 据 来 操 作 。  
 
     例 如 :  
 
     int three=3;  
 
     char one='1';  
 
     char four=(char)(three+one);//four='4'  
 
     上 例 中 ,在 计 算 加 法 时 ,字 符 型 变 量 one被 转 化 为 整 数 ,进 行 相 ? ,最 后 把 结 果 又 转 化 为 字 
符 型 。  
 
     三 、 字 符 串 常 量  
 
     与 C、 C++相 同 ,Java的 字 符 串 常 量 是 用 双 引 号 ("")括 起 来 的 一 ?  
字 符 ,如 "This is a string.\n"。 但 
不 同 的 是 ,Java中 的 字 符 串 常 量 是 作 为 String类 的 一 个 对 象 来 处 理  
? ,而 不 是 一 个 数 据 。 有 关 
类 String,我 们 将 在 第 七 章 讲 述 。  
 
                                        § 2.6布 尔 型 数 据  
 
     布 尔 型 数 据 只 有 两 个 值 ,true和 false,且 它 们 不 对 应 于 任 何 整  
 值 。 在 流 控 制 中 常 用 到 它 
。  
 
     布 尔 型 变 量 的 定 义 如 :  
 
     boolean b=true; //定 义 b为 布 尔 型 变 量 ,且 初 值 为 true 
 
                                            § 2.7举 例  
 
     例 2.1.下 例 中 用 到 了 前 面 提 到 的 数 据 类 型 ,并 通 过 屏 幕 显 示  
 们 的 值 。  
 
    public class SimpleTypes{ 
     public static void main( String args[] ){ 
            byte  b=0x55; 
            short       s=0x55ff; 
            int   i=1000000; 
            long  l=0xfffL; 
            char  c='c'; 
            float       f=0.23F; 
            double      d=0.7E-3; 
            boolean bool=true; 
            System.out.println("b = "+b); 
            System.out.println("s = "+s); 
            System.out.println("i = "+i); 
            System.out.println("l = "+l); 
            System.out.println("c = "+c); 
            System.out.println("f = "+f); 
            System.out.println("d = "+d); 
            System.out.println("bool = "+bool); 
        } 
    } 
    编译并运行该程序,输出结果为: 
    C:\>java SimpleTypes 
    b = 85 
    s = 22015 
    i = 1000000 
    l = 4095 
    c = c 
    f = 0.23 
    d = 0.0007 
    bool = true 
 
 
                              § 2.8 各 类 数 值 型 数 据 间 的 混 合 运 算  
 
     一 、 自 动 类 型 转 换  
 
     整 型 、 实 型 、 字 符 型 数 据 可 以 混 合 运 算 。 运 算 中 ,不 同 类 ?  
的 数 据 先 转 化 为 同 一 类 型 
,然 后 进 行 运 算 。 转 换 从 低 级 到 高 级 ,如 下 图 :  
 
     转 换 规 则 为 :  
 
     ① (byte或 short) op int→ int  
 
     ② (byte或 short或 int) op long→ long  
 
     ③ (byte或 short或 int或 long) op float→ float  
 
     ④ (byte或 short或 int或 long或 float) op double→ double  
 
     ⑤ char op int→ int  
 
     其 中 ,箭 头 左 边 表 示 参 与 运 算 的 数 据 类 型 ,op为 运 算 符 (如 加  
 减 、 乘 、 除 等 ),右 边 表 示 
转 换 成 的 进 行 运 算 的 数 据 类 型 。  
 
    例2.2 
    public class Promotion{ 
    public static void main( String args[ ] ){ 
    byte b=10; 
    char c='a'; 
    int i=90; 
    long l=555L; 
    float f=3.5f; 
    double d=1.234; 
    float f1=f*b; 
    // float * byte -> float 
    int i1=c+i; 
    // char + int -> int 
    long l1=l+i1; 
    // long + int ->ling 
    double d1=f1/i1-d; 
           // float / int ->float, float - double -> double} 
    } 
 
 
     二 、 强 制 类 型 转 换  
 
     高 级 数 据 要 转 换 成 低 级 数 据 ,需 用 到 强 制 类 型 转 换 ,如 :  
 
     int i;  
 
     byte b=(byte)i; //把 int型 变 量 i强 制 转 换 为 byte型  
 
     这 种 使 用 可 能 会 导 致 溢 出 或 精 度 的 下 降 ,最 好 不 要 使 用 。 ?  
(未 完 待 续 )  
 
-- 
           ^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^ 
^_^ ^_^ ^_^ ^_^ ^_^ ^_^ [s[4;65HO[3;66HO[3;67HO[3;68HO[4;69HO[5;69HO[6;68HO[7;67HO[8;65HO[7;63HO[6;62HO[5;61HO[4;61HO[3;62HO[3;63HO[3;64HO[u 
              Welcome EveryOne! 
 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.74.158] 

BBS水木清华站∶精华区