计算机基础--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)不能识别负数

  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. * byte char转换
  16. */
  17. byte c0='a';
  18. System.out.println("c0="+c0);//97 ascii值
  19. byte c=45;
  20. System.out.println((char)c);//byte->char 需要经过int 一般数字转换为字符 都要(char)强转 输出- 符合ascii值
  21. char b='b';
  22. System.out.println((byte)b);//char->byte 98
  23. /*
  24. * int byte 之间比较简单
  25. */

输出:


  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对于英文字符,可以相互转化,如:
  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不可以,位数太少如:
  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 的数;如:
  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

计算机基础--Java中int char byte的关系的更多相关文章

  1. 在C,C++,JAVA中int,char,各占几个字节

    int 在C和C++的占用2个字节,在java中4个字节char在C和C+中占一个字节 Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所 ...

  2. 013、Java中int类型转换byte

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  3. [转] java中int,char,string三种类型的相互转换

    原文地址:http://blog.csdn.net/lisa0220/article/details/6649707 如何将字串 String 转换成整数 int? int i = Integer.v ...

  4. java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

  5. 从源码和doc揭秘——Java中的Char究竟几个字节,Java与Unicode的关系

    #编码与字符编码 (懂编码的建议直接跳过) 在计算机世界中,任何事物都是用二进制图片数字表示的,图片可以编码为JPG,PNG格式的字节流,音频,视频有MP3,MP4格式的字节流.这些JPG,MP3等都 ...

  6. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  7. JAVA中的char类型

    1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a';  //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=1 ...

  8. JAVA中文件与Byte数组相互转换的方法

    JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...

  9. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

随机推荐

  1. WPF蒙板弹窗

    由于界面设计需要,要给弹窗添加蒙板效果,在百度和google搜索了半天,竟然没有一个满意的方案,最后只能自己想办法实现了一个,原理还是比较简单的,现在分享给大家. 先看一下效果..      原理其实 ...

  2. LVS之DR模式实战及高可用性

    author:JevonWei 版权声明:原创作品 LVS-DR实现同网段调度web模式 拓扑环境 网络环境 RS1 RIP 192.168.198.138/24 VIP 192.168.198.10 ...

  3. maven 添加memcached.jar配置方法

    针对Java项目添加 memcahced 在mvnrepository 找了半天也没找到memcached.jar的配置xml, 由于目前Javamemcached client没有官方的maven ...

  4. 查看linux网卡硬件名称

    查看linux网卡硬件名称 lspci | grep -i ether

  5. java可访问修饰符

    修饰符 同一个类中 同一个包中 不同包的子类 不提供包的非子类 private √ friendly(省略) √ √ protected √ √ √ public √ √ √ √

  6. 201521123100 《Java程序设计》 第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代 ...

  7. Sublime Text 2 -Sidebar 背景色调整为黑色

    Sublime Text 2 编辑器: Ctrl+` 输入安装代码,安装package control 插件 ctrl+shift+P : Package install 为什么装不上了呢?出现了什么 ...

  8. 201521123077 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 异常分为uncheckedException和checkedException checkedException 继 ...

  9. Java第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  10. 201521123087《Java程序设计》第12周学习总结

    1. 本周学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. 1 ...