java中的char类型

一:char的初始化

char是Java中的保留字,与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中,是从0~127的。

Java中使用Unicode的原因是,Java的Applet允许全世界范围内运行,那它就需要一种可以表述人类所有语言的字符编码。Unicode。但是English,Spanish,German, French根本不需要这么表示,所以它们其实采用ASCII码会更高效。这中间就存在一个权衡问题。

因为char是16位的,采取的Unicode的编码方式,所以char就有以下的初始化方式:

char c='c'; //字符,可以是汉字,因为是Unicode编码

char c=十进制数,八进制数,十六进制数等等; //可以用整数赋值

char c='\u数字'; //用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。

 

 

二:关于char占几个字节的问题如下:

1:“字节”是byte,“位”是bit ;

  2: 1 byte = 8 bit ;

  char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。

  例子代码如下:

[java] 代码
  1. public class Test {  
  2.   
  3.   
  4.     public static void main(String[] args) {  
  5.         String str= "中";  
  6.         char x ='中';  
  7.         byte[] bytes=null;  
  8.         byte[] bytes1=null;  
  9.         try {  
  10.             bytes = str.getBytes("utf-8");  
  11.             bytes1 = charToByte(x);  
  12.         } catch (UnsupportedEncodingException e) {  
  13.             // TODO Auto-generated catch block  
  14.             e.printStackTrace();  
  15.         }  
  16.         System.out.println("bytes 大小:"+bytes.length);  
  17.         System.out.println("bytes1大小:"+bytes1.length);  
  18.     }  
  19.     public static byte[] charToByte(char c) {   
  20.         byte[] b = new byte[2];   
  21.         b[0] = (byte) ((c & 0xFF00) >> 8);   
  22.         b[1] = (byte) (c & 0xFF);   
  23.         return b;   
  24.     }  
  25. }  

运行结果:

bytes 大小:3
bytes1大小:2

  

java是用unicode来表示字符,"中"这个中文字符的unicode就是2个字节。

 String.getBytes(encoding)方法是获取指定编码的byte数组表示,

通常gbk/gb2312是2个字节,utf-8是3个字节

如果不指定encoding则取系统默认的encoding。

### Java中将char类型转换为int类型的方法 在Java中,可以通过多种方式将`char`类型转换为`int`类型。以下是几种常见的方法,并附有代码示例: #### 方法一:使用`Character.getNumericValue()` 通过`Character.getNumericValue()`方法可以将字符的数值提取出来。这种方法适用于字符是数字的情况。 ```java public class Test1 { public static void main(String[] args) { char c = '7'; int a = Character.getNumericValue(c); System.out.println(a); // 输出 7 } } ``` 此方法能够直接获取字符对应的数值[^1]。 #### 方法二:使用`Integer.parseInt()` 如果需要确保字符是数字,可以先将其转换为字符串,然后使用`Integer.parseInt()`方法进行解析。 ```java public class Test2 { public static void main(String[] args) { char ch = '8'; if (Character.isDigit(ch)) { // 判断是否为数字字符 int num = Integer.parseInt(String.valueOf(ch)); System.out.println(num); // 输出 8 } } } ``` 这种方法适用于需要对输入进行校验的场景,例如确保字符确实是数字[^2]。 #### 方法三:利用ASCII码值差 由于字符的ASCII码值具有规律性(例如数字字符'0'到'9'的ASCII码值是连续的),可以直接通过减去字符'0'的ASCII码值来获取对应的数值。 ```java public class Test3 { public static void main(String[] args) { char numChar = '5'; int intNum = numChar - '0'; System.out.println(intNum); // 输出 5 } } ``` 这种方法简单高效,但前提是字符必须是数字字符[^3]。 #### 方法四:强制类型转换并计算 对于非数字字符,也可以通过强制类型转换为`int`类型,但这会返回字符的ASCII码值,而非其数值意义。 ```java public class Test4 { public static void main(String[] args) { char ch = 'A'; // 非数字字符 int asciiValue = (int) ch; System.out.println(asciiValue); // 输出 65('A'的ASCII码值) } } ``` 需要注意的是,这种方式仅适用于需要获取字符的ASCII码值的情况[^4]。 ### 注意事项 - 在实际开发中,推荐在转换前使用`Character.isDigit()`方法验证字符是否为数字,以避免非法字符导致的错误。 - 如果输入可能包含非数字字符,则需根据具体需求选择合适的转换方法。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值