计算机基础--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种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
随机推荐
- Servlet的执行流程、生命周期
下面这幅图的Request和Response的箭头方向反了,应该是客户端发出请求,然后web服务器返回响应. servlet生命周期阶段包括初始化.加载.实例化.服务和销毁. 编写Servlet的d ...
- Java 逆变与协变
最近一直忙于学习模电.数电,搞得头晕脑胀,难得今天晚上挤出一些时间来分析一下Java中的逆变.协变.Java早于C#引入逆变.协变,两者在与C#稍有不同,Java中的逆变.协变引入早于C#,故在形式没 ...
- css 禁止长按保存功能
*{-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;} 或者指定某个元 ...
- 初学者入门web前端 C#基础知识:数组与集合
对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以 ...
- Serializable序列化的作用
这里转载一篇讲解java序列化(Serializable)和反序列化方面的感觉很好的文章.1.序列化是干什么的?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的 ...
- svn: Can't convert string from 'UTF-8' to native
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt227 svn 版本库中有文件是以中文字符命名的,在 Linux 下 chec ...
- TypeScript入门知识二(参数新特性)
一,参数类型 1.在参数的名称后面使用冒号来指定参数的类型,当赋值的不是指定类型数值时会报错. var myname: string = "zhang san"; 2.当你没有指定 ...
- 开始学习.net的第二天
今天由于原因上午没上课.下午去了学的.net的表格. <body></body><img src="../temp/新建文件夹/64aab4ae3e632dbc ...
- sqlserver 父子级查询(理念适应所有数据库)
实现技术: 存储过程 ,零时表(3) 一句话说完 :把父级查询下来的子级ID 保存成零时表,并且将符合子级ID数据添加到另一张零时表. 同时清空数据时需要使用到一张零时表作为容器: alter P ...
- Socket通信中AF_INET 和 AF_UNIX域的区别
转载:http://blog.csdn.net/sandware/article/details/40923491 1. AF_INET域socket通信过程 典型的TCP/IP四层模型的通信过程. ...