Java零基础16-Java的字符类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shilishili/article/details/88382886

阅读完后:

  • 什么是字符类型【掌握】
  • 字符与整数之间的转换【掌握】
  • 什么是转义字符【掌握】

前言

我们开始学习 Java 的基本数据类型:字符类型,字符类型表示单个字符的数值,字符常量必须使用单引号(’ ')括起来的单个字符。例如:字母、数字、标点和其他符号。

Java 语言可以把字符作为整数对待,由于 Unicode 编码采用整型无符号编码,可以存储65536个字符(0x0000~0xffff),可以使用 char 类型显示转换,得到 Unicode 表中相对应字符的位置。

Unicode 可以使用整数值来表示。

字符类型可以存储 Unicode 数值,所以它可以与 int 等数值类型进行数学计算或进行转换,后面会对 Unicode 详细介绍。

Java 的字符采用 16 位(2个字节) Unicode 编码,占两个字节,所以可用十六进制(无符号的)编码形式表示,它们的表现形式是 \un,其中 n 为16位十六进制数。

字符型值使用 Unicode 方式表示,其范围是:’\u0000’~’\uFFFF’, 字符型值使用整数值方式表示,其范围是:0~65536。

Unicode 的存储范围在 “\u0000~\uFFFF”,char 类型的取值范围 0~65536,所以 ‘A’ 字符也可以用对应的 Unicode 编码 ‘\u0041’ 表示。

定义字符类型

字符类型有 5 种不同的赋值方式,

char c1 = '小';  		// 第一种,给 c1 赋值 '小' 字符类型
char c2 = 056017;  		// 第二种,给 c2 赋值 '小' 八进制所对应的 unicode 编码
char c3 = 23567;  		// 第三种,给 c2 赋值 '小' 十进制所对应的 unicode 编码
char c4 = '\u5C0F';		// 第二种,给 c2 赋值 '小' 十六进制所对应的 unicode 编码
char c5 = '\n';			// 换行符

‘\u5C0F’ 与 ‘\n’ 都为转义字符

单字符、整数、Unicode 之间的转换

整数值可以由 十进制、八进制、十六进制表示。
可以这样理解,Unicode 可以由十进制、八进制、十六进制来表示。
通常情况下,Unicode 常用十进制和十六进制来表示,如下图:

单字符、整数值、Unicode之间的转换图解
单字符、整数值、Unicode之间的转换图解

字符转换

  • 方式1:字符——>十进制整数值(通过 Unicode 十进制排序编号)
int c1 = '小';  // 23567
int c2 = '石';  // 30707
  • 方式2:字符——>十六进制 Unicode 排序编号
char c1 = '小';  // 小
char c2 = '石';  // 石
String str1 = "\\u" + Integer.toHexString(c1).toUpperCase();  // \u5C0F
String str2 = "\\u" + Integer.toHexString(c2).toUpperCase();  // \u77F3
  • 方式3:十进制 Unicode 排序编号——>字符(通过 Unicode 十进制排序编号)
char c1 = 23567;  // 小
char c2 = 30707;  // 石
  • 方式4:十进制 Unicode 排序编号——>十六进制 Unicode 排序编号
char c1 = 23567;  // 小
char c2 = 30707;  // 石
String str1 = "\\u" + Integer.toHexString(c1).toUpperCase();  // \u5C0F
String str2 = "\\u" + Integer.toHexString(c2).toUpperCase();  // \u77F3
  • 方式5:十六进制 Unicode 排序编号——>字符
char c1 = '\u5C0F';	  // 小
char c2 = '\u77F3';	  // 石
  • 方式6:十六进制 Unicode 排序编号——>十进制 Unicode 排序编号
int c1 = '\u5C0F';  // 23567
int c2 = '\u77F3';	// 30707
  • 替换:通过转移字符表示特殊字符型值:
char c1 = '\n';			// 换行符
char c2 = '\t';			// 制表符

字符与字符串的区别

前面我们使用过 “HelloWorld” 字符串,我们来学习字符与字符串的区别。

‘a’ 表示一个字符,“a” 表示一个字符串。字符要以单引号表示:‘a’; 且只能表示一个字符。字符串要以双引号表示:“a”; 字符串是多个字符的集合,例如:“abc”

转义字符

转义字符具有特定的含义,不同于字符原有的意义,所以称为“转义”。转义字符就是一种特殊的字符变量。转义字符以反斜线 “ \ ” 开头,后面加上一个或多个字符或者一些数字位组成。

某些特殊的字符可以采用转义符来表示,例如,有时出现在字符串中的 \n,\n 这就是一个转义字符,主要是“回车换行”的作用。

Unicode 的转义字符

而诸如 \u03b1 的转义字符用于表示一个 Unicode 序列编码。转义字符中的序列编码作为一个整体翻译,而不是分开翻译。一个转义字符被当作一个字符。

当字符串中带有特殊的字符时,如果不使用转义字符,则编译器会报错。
假如你想在输出时显示如下带引号的信息,你能编写如下所示的这条语句吗?

示例代码如下(编译器报错):

System.out.println("你好——>"Hello"");  // 编译器报错

上述代码有语法错误。编译器会认为第二个引号字符就是这个字符串的结束标志,而不知道如何处理剩余的字符。

为了解决这个问题,可以使用转义字符来处理这种双引号“ " ”特殊的字符。
所以,现在可以使用下面的语句输出带引号的消息:

示例代码如下:

System.out.println("你好——>\"Hello\"");  // 输出:你好——>"Hello"

最终输出是:你好——>“Hello”

注意,符号 \ 和 " 一起代表一个字符。

下面是 Java 程序中常见的转义字符:

说明 转移字符 Unicode 值
退格符 \b \u0008
水平制表符 tab \t \u0009
换行符 \n \u000a
回车符 \r \u000d
双引号 \” \u0022
单引号 \’ \u0027
反斜线 \\ \u005c

在本章我们学习了:

  • 字符类型存储单个字符,占用两个字节,必须使用单引号(’)括起来
  • 字符类型值使用 Unicode 方式表示,其范围是:’\u0000’~’\uFFFF’
  • 字符类型值使用整数值方式表示,其范围是:0~65536
  • 字符类型与整数类型之间的转换
  • 转义字符是特殊具有特定意义的字符

接下来,我们开始学习 Unicode 和 ASCII 码:Java零基础17-Unicode 和 ASCII 码

猜你喜欢

转载自blog.csdn.net/shilishili/article/details/88382886