利用循环输出字母

char类型字符是可以比较大小的

char name = 97;
		for (int i = 0;i < 26; i++){
			
			int num1 = name + i;
			char num = (char)num1;
			System.out.print("\t" + num);
			if ((i + 1) % 5 ==0)
				System.out.println();
		}

		
		System.out.println();

		name = 90;
		for (int i = 0;i < 26; i++){
			
			int num1 = name - i;
			char num = (char)num1;
			System.out.print("\t" + num);
			if ((i + 1) % 5 ==0)
				System.out.println();
		}
int count = 1;
		for (char name = 'a'; name <= 'z'; name++){

			System.out.print("\t" + name);
			if(count % 5 == 0)System.out.println();
			count++;
		}

		
		System.out.println();

		count = 1;
		for (char name = 'Z'; name >= 'A'; name--){
			System.out.print("\t" + name);
			
			if(count % 5 == 0){
				
				System.out.println();
			}
			count++;
		}

字符集(Character Set)和编码策略(Encoding Scheme)是关于字符表示和存储的两个相关但不同的概念:

  1. 字符集(Character Set)

    • 字符集是一组字符的集合,每个字符都有一个唯一的编号或码位。这些字符可以是字母、数字、标点符号、符号等,涵盖了所有可能在文本中使用的字符。
    • 常见的字符集包括 ASCII、Unicode 等。ASCII 字符集定义了基本的英文字符和控制字符,而 Unicode 是一种更为全面和复杂的字符集,包含了世界上几乎所有的书写系统的字符。
  2. 编码策略(Encoding Scheme)

    • 编码策略定义了如何将字符集中的字符表示为计算机可存储和传输的二进制数据。
    • 每个字符在计算机内部存储或传输时都需要使用某种编码方式,将其映射为二进制数据序列。这种编码方式能够确保在不同系统和平台之间的字符一致性和互操作性。
    • 常见的编码策略包括 UTF-8、UTF-16、ISO-8859-1 等。每种编码方式都有其特定的规则和格式,用于将字符集中的字符转换为二进制数据,以及从二进制数据解码为字符。

区别总结

  • 字符集定义了可用字符的集合,每个字符都有一个唯一的标识符(码位)。
  • 编码策略定义了如何将字符集中的字符映射为二进制数据,以及如何从二进制数据解码出字符。

举例来说,Unicode 字符集包含了世界上所有主要的书写系统的字符,而 UTF-8 编码策略是将 Unicode 中的字符以一种可变长度的方式编码为字节序列,以便在计算机上存储和传输。

在 Java 中,char 类型表示一个16位 Unicode 字符,其范围是从 \u0000\uffff(即从 0 到 65535)。这个范围包含了大部分常用的字符,包括标准的 ASCII 字符以及扩展的 Unicode 字符。

当一个整数被强制转换为 char 类型时,Java 将会按照以下规则进行处理:

  1. 取低16位: 如果整数的值在 0 到 65535 范围内(即 \u0000\uffff),则直接将该整数的低 16 位作为 char 类型的值。

  2. 超出范围处理: 如果整数的值超出了 0 到 65535 范围,Java 将会对其进行模运算(modulo 65536),然后再取其低 16 位的值。这意味着 Java 将整数除以 65536,取余数后得到的结果,然后将余数的低 16 位作为 char 类型的值。

举个例子,假设整数值 num1 是 70000。按照上述规则,处理过程如下:

  • 70000 % 65536 的结果是 4432。
  • 然后将 4432(即 0x1130)作为 char 类型的值。在 Unicode 中,这个码位对应一个特定的字符(具体是什么字符取决于 Unicode 标准中对应的字符)。

这种处理方式保证了无论 num1 的值如何,Java 都能够生成一个对应的 char 类型,即使超出了正常字符的 Unicode 编码范围。然而,超出范围的字符通常是不可打印或不常用的字符,因此在实际应用中可能会显示为特殊的符号或空格。

总结来说,Java 中的 char 类型按照 Unicode 编码规则,通过模运算处理超出范围的整数值,以确保生成一个有效的字符表示。

如果 num1 是一个负数,在将其转换为 char 类型时,Java 的处理方式如下:

  1. 取低16位: 如果负数的绝对值小于等于 65535(即 \uffff),则将其加上 65536(即 2^16),然后再取其低 16 位作为 char 类型的值。

举例说明:

  • 如果 num1 是 -1000:
    • 加上 65536,得到 64536。
    • 然后取其低 16 位,即 64536 % 65536 = 1000。
    • 所以 char num = (char) -1000; 将得到一个与 1000 对应的字符。
  1. 超出范围处理: 如果负数的绝对值大于 65535,则同样使用模运算将其转换为 char 类型的有效值。

这种处理方式保证了无论 num1 是正数还是负数,Java 都能够生成一个有效的 char 类型值,尽可能地利用其低 16 位来表示一个字符。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值