目录
一、字符型简单介绍
字符型char在Java语言中占用 2 个字节,char类型的字面量必须使用半角的单引号括起来,取值范围为[ 0 – 65535 ],char 和 short 都占用 2 个字节,但是 char 可以取到更大的正整数,因为 char 类型没有负数。
Java语言中的char类型变量可以容纳一个汉字。请看以下程序:
public class CharTest01 {
public static void main(String[] args) {
char c = '中';
System.out.println(c);
}
}
我们对以上的程序编译并运行,请看下图结果:
我们可以看到 Java 中的 char 类型确实可以储存一个汉字。我们再来看以下程序,假设字符我们采用双引号括起来会怎么样:
public class CharTest01 {
public static void main(String[] args) {
char c = "中";
System.out.println(c);
}
}
我们对以上的程序进行编译,请看下图编译结果:
我们看到编译器报错了,并且提示的错误信息是 “不兼容的类型” ,这是因为双引号括起来的不是 char 类型,而是 String 类型,
其实 String 类型就是 Java 中的字符串类型,但大家要知道字符串不属于基本数据类型,而是引用数据类型,所以类型不兼容。
接下来我们来测试一下两个或多个字符是否可以使用单引号括起来,请看以下代码:
public class CharTest01 {
public static void main(String[] args) {
char c = 'ab';
System.out.println(c);
}
}
我们对以上的程序进行编译,请看下图编译结果:
我们可以看出,编译器报错了,错误信息是“未结束的字符文字”,这是因为 Java 中有规定,字符型只能是单个字符,
当编译器检测到 ‘ ab ‘ 的时候,左边以单引号开始,继续检测到 a字符,然后编译器会继续检查下一个字符是否为另一半单引号,
结果不是,而是 b,所以编译器报错了。
这也说明了 Java 中的字符只能是单个字符,不能是多个字符。
二、代码演示说明
package t08_字符型_char;
import java.util.Random;
/**
* 字符类型:char
* 1)字符类型是一个占2字节,16位无符号整数,数值是字符的Unicode编码
* 2)范围:0~65535
* 3)char运算
* 用单引号''标识,只能放单个字符
* char类型是可以运算的,因为char在ASCII等字符编码表中有对应的数值。
* 在JAVA中,对char类型字符进行运算,直接当做ASCII表对应的整数来对待
*
* 字符是一个数!
* 记住:字符是一个数
*
* @author luminal
*/
public class TestChar {
public static void main(String[] args) {
// testChar();//演示字符类型说明
// testSpecialCharacters();//特殊字符的编码:换行、回车、tab、斜杆等
// testCapital();//大写字母的编码
// testLowercase();//小写字母的编码
// testNum();//数字的编码
testOhter();//char运算-随机大写字母
}
/**
* char运算-随机大写字母
*
*/
private static void testOhter() {
char c = 20013;
System.out.println(c);//中
c = '中';
System.out.println(c);//中
c ='中'+1;
System.out.println(c);//丮
c='中'+'国';
System.out.println(c);//ꔪ
//char m='中'+"国";//编译错误,String无法转换为char。
//字符类型是一个占2字节,16位无符号整数,数值是字符的Unicode编码
//java中字符采用的表示方式是 Unicode编码,它是一种字符编码格式。
//Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。
//c='中国';//编译错误。
c = 65;
System.out.println(c);//A
c = 'A' + 1;
System.out.println(c);//B
c = 'A' + 2;
System.out.println(c);//C
/**
* 随机大写字母
*/
Random random = new Random();
int n = random.nextInt(26);//[0,26)
c = (char)('A' + n);//计算生成 A~Z 的随机字符
System.out.println(c);
}
/**
* 数字的编码
*/
private static void testNum() {
//'0'~'9' : 48~57
System.out.println(0);//0
System.out.println('0');//0
System.out.println((int)'0');//48
System.out.println((int)'1');
System.out.println((int)'2');
//......
System.out.println((int)'7');
System.out.println((int)'8');
System.out.println((int)'9');
}
/**
*小写字母的编码
*/
private static void testLowercase() {
//'a'~'z':97~122
System.out.println((int)'a');
System.out.println((int)'b');
System.out.println((int)'c');
//......
System.out.println((int)'x');
System.out.println((int)'y');
System.out.println((int)'z');
}
/**
*大写字母的编码
*/
private static void testCapital() {
//'A'~'Z':65~90
System.out.println((int)'A');
System.out.println((int)'B');
System.out.println((int)'C');
//......
System.out.println((int)'X');
System.out.println((int)'Y');
System.out.println((int)'Z');
}
/**
* 特殊字符的编码:换行、回车、tab、斜杆等
*/
private static void testSpecialCharacters() {
char c;
c = '\n';//表示:换行字符(new Line)是特殊控制字符
c = '\r';//表示:回车字符 return
c = '\t';//表示:tab
c = '\\'; //表示:一个\
System.out.println(c);
c = '\''; //表示:'
c = '\"'; //表示:"
c = '\u4e2d';//表示:16进制Unicode 编码
System.out.println(c);
System.out.println((int)'帅');//24069
System.out.println((int)'气');//27668
System.out.println((int)'华');//21326
System.out.println((int)',');//44
System.out.print((char)24069);//帅
System.out.print((char)27668);//气
System.out.print((char)21326);//华
System.out.print((char)44);//,
}
/**
* 演示字符类型说明
*/
private static void testChar() {
//char类型,在java当中占2个字节,16位无符号字节类型,
//它的范围是:0~65535
//在java当中,为了能够表示各种字符,
//所以它将这个字符,定义为2个字节,
//而C语言中,字符类型是一个字节的,它只能最多表示255种字符,
//算上0,就是256种字符。
//而在java当中的字符类型char,它可以表示0~65535种字符,
//java中字符采用的表示方式是 Unicode编码,它是一种字符编码格式。
char ch;
ch = 'a';
System.out.println(ch);//a
//我们还可以对这个字符类型,采用整数来赋值
ch = 97;
System.out.println(ch);//a
//对于一个字符来说,当我们在存储的时候,
//它会有相应的ASCII码,也就是以整数的形式来存储的。
//常用的字符如:键盘上的26个字母、数值0-9
//即字符的表示,在我们的内存当中,都是采用整数来表示的,
//所以我们可以采用整数来对一个字符变量来进行赋值
//赋值char变量后,它输出的是:字符编码表中对应的字符。
// c 是 char 变量,20013 是int类型的字面量
char c = 20013;
System.out.println(c);//中,即20013表示中
// 不能进行超范围赋值!“int字面量”在“不超过char范围”情况下
// 可以给char变量赋值
// 字面量相加,java按照一个整除处理
//c = -1;//编译错误,超范围
c = 65535;
//c = 65536;//编译错误,超范围
c = 65;
System.out.println(c);//A ,即65表示A
//c = 'A' + 65535;//编译错误,超范围
c = 'A' + 65000;//字面量相加结果如果不超范围没有问题
System.out.println(c);//︩
int bbb = 65;//定义变量a
//c = bbb; //编译错误,“int类型变量” 不能赋值给char变量
c = (char) bbb;
System.out.println(c);//A
c = 'A'+1;//相当于 65+1
System.out.println(c);//B
c = 66;
System.out.println(c);//B,即66表示B
}
}