java

你阿牛 2014-06-22 10:05:48
int x=300;char y=(char)x;y的值大小为什么是300
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
之奇一昂 2014-06-22
  • 打赏
  • 举报
回复

package csdn;

public class NumberTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int a = 0x00000061;//97也就是32位-> 0000 0000 0000 0000 0000 000 0110 0010
		char c = 0x0061;//a -> 97 16位-> 0000 0000 0110 0010

		System.out.println(a);
		System.out.println(c);
		/**结果 :
		 * 97
		 * a
		 * 
		 *  由此可见,int -> char 是变窄,取后 16位
		 */
	}

}

低调Di程序猿 2014-06-22
  • 打赏
  • 举报
回复
引用 3 楼 szq80140 的回复:

package csdn;

public class NumberTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int a = 0x00000061;//97也就是32位-> 0000 0000 0000 0000 0000 000 0110 0010
		char c = 0x0061;//a -> 97 16位-> 0000 0000 0110 0010

		System.out.println(a);
		System.out.println(c);
		/**结果 :
		 * 97
		 * a
		 * 
		 *  由此可见,int -> char 是变窄,取后 16位
		 */
	}

}

详细
梦里花开半夏 2014-06-22
  • 打赏
  • 举报
回复
难道不应该是300么。。。300的int强转为char就是转为ascii码为300的字符(虽然没有。。。但存在栈中的值是300)。
rumlee 2014-06-22
  • 打赏
  • 举报
回复
java采用的是unicode编码,char统一是2字节16位的,所以char的最大值是65535,你可以打印一下这个试试 Character.MAX_VALUE 所以这个是300也就不奇怪了。
vnvlyp 2014-06-22
  • 打赏
  • 举报
回复
char在Java中是双字节的怎么不能是300?你以为是像C一样吗?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧