当前位置:编程学习 > JAVA >>

byte a = 'A';这样写对不对?

是不是byte中只能存放数据? --------------------编程问答-------------------- byte只能存放数字.byte就是字节,一个字节是8个2进制数.因为2进制最高为是符号为所以byte的范围是【-128,127 】 --------------------编程问答--------------------
引用 1 楼 ffc253605481 的回复:
byte只能存放数字.byte就是字节,一个字节是8个2进制数.因为2进制最高为是符号为所以byte的范围是【-128,127 】

byte只能存放数字.byte就是字节,一个字节是8个2进制数.因为2进制最高为是符号位所以byte的范围是【-128,127 】 --------------------编程问答-------------------- char a = 'A' --------------------编程问答-------------------- 可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。 --------------------编程问答--------------------
引用 4 楼 oh_Maxy 的回复:
可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。

错。Java里的char是两个字节的,跟C++里的不一样 --------------------编程问答--------------------
引用 5 楼 lcf 的回复:
Quote: 引用 4 楼 oh_Maxy 的回复:

可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。

错。Java里的char是两个字节的,跟C++里的不一样

我知道char支持中文的。
兄台可以把LZ标题里的A替换成中文试试嘛~
--------------------编程问答--------------------
引用 6 楼 oh_Maxy 的回复:
Quote: 引用 5 楼 lcf 的回复:

Quote: 引用 4 楼 oh_Maxy 的回复:

可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。

错。Java里的char是两个字节的,跟C++里的不一样

我知道char支持中文的。
兄台可以把LZ标题里的A替换成中文试试嘛~

我意思是,byte a = 'A';也是不行的 --------------------编程问答--------------------
引用 7 楼 lcf 的回复:
Quote: 引用 6 楼 oh_Maxy 的回复:

Quote: 引用 5 楼 lcf 的回复:

Quote: 引用 4 楼 oh_Maxy 的回复:

可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。

错。Java里的char是两个字节的,跟C++里的不一样

我知道char支持中文的。
兄台可以把LZ标题里的A替换成中文试试嘛~

我意思是,byte a = 'A';也是不行的

        byte a = 'A';
        System.out.println(a);
运行结果:65 --------------------编程问答--------------------
引用 1 楼 ffc253605481 的回复:
byte只能存放数字.byte就是字节,一个字节是8个2进制数.因为2进制最高为是符号为所以byte的范围是【-128,127 】

引用  楼上 oh_Maxy的回复:
byte a = 'A';
        System.out.println(a);
运行结果:65

应该是这样,65/A在byte表示范围之内,所以...
而在C++中char是一个字节,在java中只是对其进行扩充了一下,变成了两个字节。 --------------------编程问答--------------------
引用 9 楼 neverthinkaboutit 的回复:
Quote: 引用 1 楼 ffc253605481 的回复:

byte只能存放数字.byte就是字节,一个字节是8个2进制数.因为2进制最高为是符号为所以byte的范围是【-128,127 】

引用  楼上 oh_Maxy的回复:
byte a = 'A';
        System.out.println(a);
运行结果:65

应该是这样,65/A在byte表示范围之内,所以...
而在C++中char是一个字节,在java中只是对其进行扩充了一下,变成了两个字节。


char是两个字节 赋给byte型变量的时候 高位被截断? 但因为值比较小 所以无影响?


--------------------编程问答--------------------
引用 8 楼 oh_Maxy 的回复:
Quote: 引用 7 楼 lcf 的回复:

Quote: 引用 6 楼 oh_Maxy 的回复:

Quote: 引用 5 楼 lcf 的回复:

Quote: 引用 4 楼 oh_Maxy 的回复:

可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。

错。Java里的char是两个字节的,跟C++里的不一样

我知道char支持中文的。
兄台可以把LZ标题里的A替换成中文试试嘛~

我意思是,byte a = 'A';也是不行的

        byte a = 'A';
        System.out.println(a);
运行结果:65

三观毁了,居然可以。。。 --------------------编程问答--------------------
引用 11 楼 lcf 的回复:
Quote: 引用 8 楼 oh_Maxy 的回复:

Quote: 引用 7 楼 lcf 的回复:

Quote: 引用 6 楼 oh_Maxy 的回复:

Quote: 引用 5 楼 lcf 的回复:

Quote: 引用 4 楼 oh_Maxy 的回复:

可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。

错。Java里的char是两个字节的,跟C++里的不一样

我知道char支持中文的。
兄台可以把LZ标题里的A替换成中文试试嘛~

我意思是,byte a = 'A';也是不行的

        byte a = 'A';
        System.out.println(a);
运行结果:65

三观毁了,居然可以。。。

--------------------编程问答-------------------- Java的char是Unicode --------------------编程问答--------------------
引用 12 楼 oh_Maxy 的回复:
Quote: 引用 11 楼 lcf 的回复:

Quote: 引用 8 楼 oh_Maxy 的回复:

Quote: 引用 7 楼 lcf 的回复:

Quote: 引用 6 楼 oh_Maxy 的回复:

Quote: 引用 5 楼 lcf 的回复:

Quote: 引用 4 楼 oh_Maxy 的回复:

可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。

错。Java里的char是两个字节的,跟C++里的不一样

我知道char支持中文的。
兄台可以把LZ标题里的A替换成中文试试嘛~

我意思是,byte a = 'A';也是不行的

        byte a = 'A';
        System.out.println(a);
运行结果:65

三观毁了,居然可以。。。


其实也很简单  java中字符'A'是可以自动转换成int数字的.而且'A'转换成数字的值在-128和127之间所有是正确的.如果转换出来的数字在-128和127之外就错了..   这个就能解释为什么是这样了.三观完好 --------------------编程问答-------------------- 打印一下不就知道了。  --------------------编程问答--------------------
引用 4 楼 oh_Maxy 的回复:
可以的,为ASCII码值。
但是单引号里是中文字符就不行了,猜测是因为中文无法用ASCII表示的原因。
正解,这种写法没错,byte,short,int,long都可以这样赋值,字符都可转成ASCII码,都有一个数字,只要转成的ASCII码在该类型的承受范围内都可以. --------------------编程问答-------------------- java中的char类型其实就是int的一种类型。只要范围足够,精度不缺失就可以向上转型。 --------------------编程问答-------------------- 自动类型转换 --------------------编程问答-------------------- byte是存放的字节,但范围是-127~128之间,‘A’的ascii码是65,java在编译过程过运用隐式类型转换,所有这样写是没错的 --------------------编程问答-------------------- 对的,因为byte范围在-128~127内,可以正确转码,结果为65.但一般不那么干,都用char,显得自然。楼主这种问题可以自己亲自试一试就可以了,简单编译就可以知道答案。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- byte a=(byte)"A" 可以这样写 --------------------编程问答-------------------- 可以这样写,完全没问题 --------------------编程问答-------------------- 'A'表示的是一个字符,在表达式中如有多个类型的数据,数据是会放生自动转换,字符类型会自动转换为int类型,所以用byte接收可能会损失精度,所以应该用比byte类型大的数据类型接收,如char int 等 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- --------------------编程问答-------------------- char 可转 int --------------------编程问答-------------------- 可以的,只是输出的时候会出问题,我记得一般用byte的时候是在学习IO的时候。
看图。

--------------------编程问答-------------------- byte 是整形的其中之一,赋值 只能是数字,整型 byte short int long 共四种,所以 你用单引号引起来 java 编译器是不会报错的 也是允许的不过 你要赋值的是数字 而不是其他。建议去我的博客网站www.taomaipin.com去看看java的四类八种基础数据类型 --------------------编程问答-------------------- 单引号的字母可以,只要其ascii值不超127。byte允许范围是-128-127. --------------------编程问答-------------------- 回28L,对带双引号的,也就是字符串,你可以查看byte.parseByte源代码,发现会调用Integer.parseInt转换该字符串,如果是在范围-128-127内,返回值,否则抛异常。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,