计算机基础--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)不能识别负数
- <pre name="code" class="java"> /*
- * int char转换
- */
- int a='男';
- int in=30007;
- char ch=(char)in;//int->char 把30007数字值 转换成unicode16位字符
- char ch2='女';
- int in2=ch2;//char->int 自动转换 低转高 高为补0
- System.out.println("a="+a);
- System.out.println("in="+in);
- System.out.println("ch="+ch);
- System.out.println("ch2="+ch2);
- System.out.println("in2="+in2);
- /*
- * byte char转换
- */
- byte c0='a';
- System.out.println("c0="+c0);//97 ascii值
- byte c=45;
- System.out.println((char)c);//byte->char 需要经过int 一般数字转换为字符 都要(char)强转 输出- 符合ascii值
- char b='b';
- System.out.println((byte)b);//char->byte 98
- /*
- * int byte 之间比较简单
- */
输出:
- a=30007
- in=30007
- ch=男
- ch2=女
- in2=22899
- c0=97
- -
- 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对于英文字符,可以相互转化,如:
- byte g = 'b'; //b对应ASCII是98
- char h = (char) g;
- char i = 85; //U对应ASCII是85
- int j = 'h'; //h对应ASCII是104
- System.out.println(g);
- System.out.println(h);
- System.out.println(i);
- System.out.println(j);
char可以表中文字符,byte不可以,位数太少如:
- char e1 = '中', e2 = '国';
- byte f= (byte) '中'; //高专低 强转 但是中文超出了byte的范围 会产生截取 只剩45 而45对应的ascii是-
- System.out.println(e1);
- System.out.println(e2);
- System.out.println(f);
结果为:
中
国
45
Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
- char c = (char) -3; // char不能识别负数,即使强制转换之后,也无法识别
- System.out.println(c);
- byte d1 = 1;
- byte d2 = -1;
- byte d3 = 127; // 如果是byte d3 = 128;会报错
- byte d4 = -128; // 如果是byte d4 = -129;会报错
- System.out.println(d1);
- System.out.println(d2);
- System.out.println(d3);
- System.out.println(d4);
结果为:
?
1
-1
127
-128
计算机基础--Java中int char byte的关系的更多相关文章
- 在C,C++,JAVA中int,char,各占几个字节
int 在C和C++的占用2个字节,在java中4个字节char在C和C+中占一个字节 Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所 ...
- 013、Java中int类型转换byte
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- [转] java中int,char,string三种类型的相互转换
原文地址:http://blog.csdn.net/lisa0220/article/details/6649707 如何将字串 String 转换成整数 int? int i = Integer.v ...
- java中int,char,string三种类型的相互转换
如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...
- 从源码和doc揭秘——Java中的Char究竟几个字节,Java与Unicode的关系
#编码与字符编码 (懂编码的建议直接跳过) 在计算机世界中,任何事物都是用二进制图片数字表示的,图片可以编码为JPG,PNG格式的字节流,音频,视频有MP3,MP4格式的字节流.这些JPG,MP3等都 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- JAVA中的char类型
1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a'; //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=1 ...
- JAVA中文件与Byte数组相互转换的方法
JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
随机推荐
- LESS文档
less官方介绍文档(http://lesscss.org/#docs) Getting Started Less is a CSS pre-processor, meaning that it ex ...
- 极化码的matlab仿真(1)——参数设置
根据老师的安排,对于极化码的了解从仿真开始. 仿真的手段有很多种.可以利用C,C++,matlab等进行仿真的实现.其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中 ...
- 详解HTTPS加速原理
HTTPS是什么? http叫超文本传输协议,使用TCP端口80,默认情况下数据是明文传送的,数据可以通过抓包工具捕获到,因此在interner上,有些比较重要的站点的http服务器需要使用PKI(公 ...
- 在Android上仿百度贴吧客户端Loading图标小球
封面 前言 使用百度贴吧客户端的时候发发现加载的小动画挺有意思的,于是自己动手写写看.想学习自定义View以及自定义动画的小伙伴一定不要错过哦. 读者朋友需要有最基本的canvas绘图功底,比如画笔P ...
- UICollectionView中Cell左对齐 居中 右对齐 等间距------你想要的,这里都有
支持靠左,居中,靠右,等间距对齐. 靠左等间距.png 居中等间距.png 靠右等间距.png #import <UIKit/UIKit.h> typedef NS_ENUM(NSInte ...
- 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)
32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...
- JMeter打开脚本失败 如何解决?
最近有碰到JMeter打开之前的脚本,报错了,见下图: 后来发现这是因为之前保存脚本的 jmeter 和这次打开脚本的 jmeter 版本不一致(图一)或者版本一致而插件没有保持同步(图二)的原因: ...
- NHibernate教程(8)--巧用组件
本节内容 引入 方案1:直接添加 方案2:巧用组件 实例分析 结语 引入 通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧,大家一起想想如果我要在Customer类中实现一个Fullname属性 ...
- 转:【深入Java虚拟机】之三:类初始化
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17845821 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Jav ...
- JAVA中String = null 与 String = "" 的区别
JAVA中String = null 与 String = ""的区别 笔者今天在Debug的时候发现的NPE(NullPointerException),辛辛苦苦地调试了半天,终 ...