微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2EE >

对Java字符类型的深入了解(转贴) .

时间:2017-01-16 04:01  浏览:努力统计中...
Java 的1.1 版 本 引 入了 许 多 处 理 字 符(char 型 数 据) 的 类。 这些 新 的 类 能 够 使 得 某 些 具 体 平 台 上 的字 符 转 换 成 为 符 合Unicode 标 准 的 字 符。 文章 主 要 关 注 增
Java 的1.1 版 本 引 入了 许 多 处 理 字 符(char 型 数 据) 的 类。 这些 新 的 类 能 够 使 得 某 些 具 体 平 台 上 的字 符 转 换 成 为 符 合Unicode 标 准 的 字 符。 文章 主 要 关 注 增 加 了 哪 些 类, 以 及 增 加这 些 字 符 处 理 类 的 动 机。

char类型

---- 或 许 在C 语 言 中,最 常 被 滥 用 的 基 本 数 据 类 型 就 是char 类型。 这 一 类 型 常 被 滥 用, 部 分 原 因 是 因为 它 被 定 义 为8 位, 而 在 最 近 的25 年 里,8 个 位 也 就 是 计 算 机 内 存 中, 最 小 的 数据 存 储 单 元。 我 们 把 后 者(8 位 是 计 算 机内 存 中 最 小 的 数 据 存 储 单 元) 和 将ASCII 字符 集 定 义 为7 位 的 情 况 联 系 在 一 起, 就可 以 看 到,char 类 型 俨 然 已 是 一 个 非 常方 便 的“ 通 用 的” 数 据 类 型。 而 且 在C 语言 中, 一 个 指 向char 型 变 量 的 指 针 也 成了 通 用 指 针 类 型, 因 为 所 有 能 够 被 指引 为char 型 的 数 据, 都 可 通 过 计 算, 被 指引 成 为 其 它 类 型 的 数 据。

---- C 语 言 中,char 类 型数 据 的 利 用 和 滥 用, 引 来 了 各 个 编 译工 具 之 间 的 不 兼 容, 因 而ASNI 标 准C 语 言曾 在 两 个 方 面 作 出 过 特 别 改 动: 通 用的 指 针 类 型 被 重 新 定 义 为void 型, 因 此需 要 开 发 者 最 终 对 其 给 出 精 确 的 声明; 字 符 型 数 据 的 值 被 认 为 是 带 符 号的, 它 决 定 了 在 数 值 计 算 中, 字 符 将 被进 行 怎 样 的 处 理。 接 下 来, 在80 年 代 中期, 工 程 师 及 用 户 认 识 到,8 个bit 不 足 以描 述 世 界 上 的 所 有 字 符。 然 而 不 幸 的是, 到 了 那 时,C 语 言 的 某 些 特 性 是 如此 的 根 深 蒂 固, 以 至 于 人 们 不 愿 意, 或许 甚 至 是 不 可 能 改 变 对char 型 数 据 的 定义。 时 光 如 梭, 转 眼 就 到 了90 年 代, 人们 开 始 了Java 的 早 期 探 索。 许 多 的 原 则都 被 制 定 了 出 来, 其 中 一 条 就 是,Java 语言 中 的 字 符 应 该 被 定 义 成16 位。 这 一 决策 支 持 了Unicode 标 准 的 利 用( 该 标 准 描 述了 许 多 语 言 的 各 种 不 同 字 符), 然 而,它 也 为 许 多 问 题 的 出 现 设 置 了 舞 台,这 些 问 题 只 有 留 到 现 在 才 能 改 正。

究竟什么是字符?

---- 众 所 周 知, 一 个字 符(character) 就 是 一 个 字 母(letter), 一 串 字母 组 成 一 个 单 词, 一 组 单 词 组 成 句 子,以 此 类 推。 然 而, 事 实 上, 在 计 算 机中, 在 屏 幕 上 描 述 的 字 符( 被 称 为 字 符的 图 符), 和 为 这 个 字 符 指 定 的 数 值( 被称 为 代 码 值), 并 不 是 直 接 对 应 的。

---- 在ASCII 中, 定 义 了96 个 可 印 刷 的 字 符, 就 可 以 用 来 书 写 英语。 这 与 定 义 了2 万 多 个 图 符 还 不 足 以表 述 其 所 有 文 字 的 中 文 相 比, 简 直 是天 差 地 别。 从 早 期 的 摩 尔 斯 码 和 波 多码 开 始, 英 语 整 体 的 简 单 性( 较 少 的 图符, 按 统 计 频 率 出 现) 就 使 其 成 为 了 数字 化 时 代 的 一 门 通 用 语 言。 但 是 随 着更 多 的 人 进 入 到 数 字 化 时 代, 随 着 非英 语 国 家 更 多 地 使 用 计 算 机, 越 来 越多 的 人 们 遂 渐 不 能 容 忍 计 算 机 只 能 用ASCII 码 和 只 能 表 述 英 语。 这 极 大 地 增 加 了计 算 机 能 够 理 解 的“ 字 符” 的 数 量。 由此, 人 们 意 识 到, 计 算 机 所 用 的 字 符 编码 位 数 必 须 翻 倍。

---- 当 受 人 尊 敬 的7 位ASCII 码 被 合 并 成 为8 位 的 被 称 为ISO latin-1( 或ISO 8859_1,ISO 表 示 国 际 标 准 化 组 织) 字 符 编 码之 后, 可 利 用 的 字 符 数 量 翻 了 一 倍。 正如 你 可 能 从 这 一 编 码 的 名 字 中 想 到 的一 样, 这 个 标 准 保 证 了 在 计 算 机 上, 许多 的 欧 洲 国 家 可 以 描 述 它 们 的 语 言。然 而, 仅 仅 是 标 准 的 确 立, 还 不 能 意 味着 标 准 的 利 用。 那 时, 许 多 的 计 算 机 产商 为 了 某 些 利 益, 已 经 开 始 利 用 了8 位字 符 中 的 其 它128 个“ 字 符”。 目 前 还 能看 到 的 利 用 这 些 额 外 字 符 的 例 子 有IBM 的 个 人 计 算 机(PC), 和 曾 一 度 最 为 流 行的 计 算 机 终 端,DEC 公 司 的VT-100。 后 者 在终 端 仿 真 软 件 上 继 续 存 在。

---- 究 竟 何 时 停 止 八位 字 符 的 使 用, 这 一 问 题 将 会 在 以 后的 数 十 年 内 一 直 争 论 下 去, 但 是 何 时提 出 这 一 问 题 却 可 以 做 出 回 答。 我 认为, 从1984 年 引 入Macintosh 计 算 机 时 起, 这一 问 题 就 已 开 始 提 出。Macintosh 为 主 流 计算 机 引 入 了 两 个 革 命 性 的 概 念: 存 储于RAM 中 的 字 符 字 体; 和 可 以 描 述 所 有 语言 所 用 字 符 的 世 界 文 字 体 系(WorldScript)。当 然, 这 其 实 也 只 是Xerox 公 司 所 做 所 为的 一 个 翻 版, 在 它 的 蒲 公 英(Dandelion) 系 列机 器 上, 就 以Star 字 处 理 系 统 的 形 式, 利用 了 这 些 技 术。 然 而, 是Macintosh 把 这 些新 的 字 符 集 和 字 体 带 给 了 还 在 利 用“ 哑” 终 端 的 用 户。 一 旦 有 人 开 了 头, 利用 不 同 字 体 的 做 法 就 无 法 被 终 断 ─ ─ 因 为 许 许 多 多 的 人 们 对 其 爱 不 释 手。到80 年 代 后 期, 为 了 合 理 而 标 准 地 使 用这 些 字 符, 一 个 名 为Unicode 协 会(Unicode Consortium) 的 组 织 应 运 而 生, 并 于1990 年, 发布 了 它 的 第 一 个Unicode 规 范。 然 而 不 幸 的是, 在80 年 代 甚 至 在 进 入90 年 代 之 后, 字符 集 的 数 量 在 成 倍 的 增 长, 在 那 时, 几乎 正 在 从 事 新 字 符 编 码 的 所 有 工 程师, 都 认 为 刚 刚 上 步 的Unicode 标 准 不 会 长久, 因 而, 他 们 为 各 种 文 字, 创 建 了 与他 人 各 不 相 同 的 编 码。 然 而, 即 使 是 在Unicode 不 被 广 泛 采 纳 的 情 况 下, 那 种 认 为 只有128 个 或 最 多256 个 字 符 能 被 采 用 的 观 念已 不 复 存 在。 在Macintosh 之 后, 对 不 同 字体 的 支 持 已 成 为 字 处 理 系 统 中 不 可 缺少 的 功 能。 八 位 字 符 正 在 消 褪, 遂 渐 消亡。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------
栏目列表
推荐内容