计算机基础--Java中int char byte的关系

本文详细介绍了Java中int、char和byte三种基本类型的转换规则及注意事项,包括正负数表示、Unicode编码的应用、自动类型提升等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机基础--Java中int char byte的关系

 

重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用int(32位)来存字是可以的,将char型值赋给int型会自动类型转换。

所谓int为整形数 表示它显示的就是底层二进制表示的数字,而char为字符型就是它显示的不是底层二进制表示的,而是通过对照字符编码unicode16 来把这个底层二进制表示出来,int比char大,因此肯定可以用int表示汉字,只不过在显示的时候是数字而已。两者当然也可以相互转换,没有问题。byte同理,不过byte是1字节(-128-127),注意,一个byte不可以表示所有ascii值(0-255,前128个在键盘上可以找到)。注意char(0-65535)不能识别负数

 

[java]  view plain  copy
 
  1. <pre name="code" class="java">        /* 
  2.          * int char转换 
  3.          */  
  4.         int a='男';  
  5.         int in=30007;  
  6.         char ch=(char)in;//int->char 把30007数字值 转换成unicode16位字符  
  7.         char ch2='女';  
  8.         int in2=ch2;//char->int 自动转换 低转高 高为补0  
  9.         System.out.println("a="+a);  
  10.         System.out.println("in="+in);  
  11.         System.out.println("ch="+ch);  
  12.         System.out.println("ch2="+ch2);  
  13.         System.out.println("in2="+in2);  
  14.           
  15.         /* 
  16.          * byte char转换 
  17.          */  
  18.         byte c0='a';  
  19.         System.out.println("c0="+c0);//97 ascii值  
  20.         byte c=45;  
  21.         System.out.println((char)c);//byte->char 需要经过int 一般数字转换为字符 都要(char)强转 输出- 符合ascii值  
  22.         char b='b';  
  23.         System.out.println((byte)b);//char->byte 98  
  24.           
  25.         /* 
  26.          * int byte 之间比较简单 
  27.          */  

输出:

 

 
 
[java]  view plain  copy
 
  1. a=30007  
  2. in=30007  
  3. ch=男  
  4. ch2=女  
  5. in2=22899  
  6. c0=97  
  7. -  
  8. 98  

 

 

1 char类型向表示范围比它大的类型转换时使用的是0扩展,也就是说在高位补0。

2 byte类型转换为char类型其实是2步:先把byte提升为int,再把int转化为char(去掉高位)

3java规定在做运算时,会有一个自动类型转换,byte short char 在和 int 运算时都会提升成int后,再运算,结果为int;

不考虑负数的情况,char和int可以交互使用,不过int赋给char可能会产生预期外的结果,因为int范围比char大,会发生截取现象。char在java中使用的时候其实也是作为int类型使用的。比如你使用for循环可以写for(char c=0;c<100;c++)
 
 
char、byte、int对于英文字符,可以相互转化,如:
[java] view plain copy
 
  1. byte g = 'b';   //b对应ASCII是98    
  2. char h = (char) g;    
  3. char i = 85;    //U对应ASCII是85    
  4. int j = 'h';    //h对应ASCII是104    
  5. System.out.println(g);    
  6. System.out.println(h);    
  7. System.out.println(i);    
  8. System.out.println(j);   

char可以表中文字符,byte不可以,位数太少如:
[java] view plain copy
 
  1. char e1 = '中', e2 = '国';    
  2. byte f= (byte) '中'; //高专低 强转 但是中文超出了byte的范围 会产生截取 只剩45 而45对应的ascii是-  
  3. System.out.println(e1);    
  4. System.out.println(e2);    
  5. System.out.println(f);    

结果为:



45

 
 
Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
[java] view plain copy
 
  1. char c = (char) -3; // char不能识别负数,即使强制转换之后,也无法识别    
  2. System.out.println(c);    
  3. byte d1 = 1;    
  4. byte d2 = -1;    
  5. byte d3 = 127; // 如果是byte d3 = 128;会报错    
  6. byte d4 = -128; // 如果是byte d4 = -129;会报错    
  7. System.out.println(d1);    
  8. System.out.println(d2);    
  9. System.out.println(d3);    
  10. System.out.println(d4);    
 
 

结果为:

?
1
-1
127
-128

转载于:https://www.cnblogs.com/Dhouse/p/7115448.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值