解决方案 »
- 如何实现字符串的匹配
- 【求助】关于JAVA连接SQL server2000.问题。求好心人。100分
- 引用对象传值的问题
- 如何才能打印出的数据
- 请教一下 在64位的jdk中 int 是 32位的?还是64位的?
- 高手来看看我这个"记事本"的另存为功能怎么没有真正实现
- 如何把.java文件再编译成class文件后能够不被反编译回来!请高人指教
- java正则表达式!
- JDBC操作MS SQL数据库更新数据,如果有触发器,则stmt.executeUpdate(strSql)无法正确返回受影响的行数,怎么办?
- 请教各位一个Random的用法
- 找不到类 JavaApplet.class 。
- JAVA初学者,请问以下程序中特定字符串何时被输出
byte b= -1;//没有任何问题,因为byte可以表示-128到127之间的数
System.out.println(0xFF);//255,这里的0xff实际上等价于0x000000ff,已经超过了127,当成了int
byte s = -128;//没有任何问题,因为byte可以表示-128到127之间的数
System.out.println(0x80);//128,同样的道理,等价于:0x00000080,已经超过了127,当成了int
byte s2 = 0x7f;
System.out.println(0x7f);//127,同样的道理,等价于:0x0000007f,没有超过127
byte s2 = 0x80;为什么是错的?本来应该表示-128。
如果说0x80 超过了127,那就应该自动转为负数啊。类似int就会自动转为负数。
int i = 0x7fffffff;表示的int最大值
而赋值int i = 0x80000000; 编译器没有认为超过,而至自动转负数了。表示int的最小值。
0x开头的数字都是int类型,而不是byte或者short类型。
类似这样的赋值 byte b = 0x80;都存在内部类型转换,0x80表示128,内部转换的时候超过了127因此报错。
而int i = 0x80000000;就不存在内部转换,直接把0x8000000应该表示的值赋值给i了。是这样吗?
是的,int是32位的楼主如此复制,没超过自然可行咯。