计算机基础--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. zoj3777 Problem Arrangement

    The 11th Zhejiang Provincial Collegiate Programming Contest is coming! As a problem setter, Edward i ...

  2. Java内存原型分析

    Java虚拟机内存原型 寄存器:在程序中无法控制 栈:存放基本类型的数据和对象的引用,但是对象本身不存放在栈中,而是存放在堆中 堆:存放用new产生的数据 静态域:存放在对象中用static定义的静态 ...

  3. koa/redux middleware系统解析

    middleware 对于现有的一些框架比如koa,express,redux,都需要对数据流进行一些处理,比如koa,express的请求数据处理,包括json.stringify,logger,或 ...

  4. Scala中柯里化函数

    高阶函数转一阶函数: val add1 = (x: Int) => x + 5 def add2(x: Int)(y: Int) = x + y //传入一个参数转换为一阶函数 def add3 ...

  5. CyclicBarrier和CountDownLatch介绍

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp70 CyclicBarrier介绍 (一) 一个同步辅助类,它允许一组线 ...

  6. Spring Boot-------项目搭建及注解

    Spring Boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需 ...

  7. js函数防抖、节流实现

    防抖 Debounce 函数防抖就是,延迟一段时间再执行函数,如果这段时间内又触发了该函数,则延迟重新计算: // 简单实现 function debounce(fn, wait) { let t r ...

  8. java基础学习——集合

    -------|List: 有存储顺序, 可重复-----------|ArrayList: 数组实现, 查找快, 增删慢,由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. 所以慢. ...

  9. ini文件必须要全路径名啊

    弄半天必须要全路径名啊.实在不行用./set.ini也可以 用UNICODE保存ini文件

  10. 九度OJ 1017 还是畅通工程

    #include <iostream> #include <string.h> #include <sstream> #include <math.h> ...