java快速入门知识整理:8、java数据类型:字符型(char)

  • Post author:
  • Post category:java



目录


一、字符型简单介绍


二、代码演示说明


一、字符型简单介绍

字符型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
		
	}

	
}





版权声明:本文为YuDBL原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。