真诚请教(关于java数据) 本帖最后由 DaYiBaiJie 于 2011-10-25 10:42:09 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int num = 100;byte b = (byte) num;short s = (short) num; 这就是变量和常量的区别byte b = 127; //这个127是常量,编译器知道这个值,所以可以检查赋值是否合法int a = 127; //这个a是变量,在程序运行的时候才会给a赋值127byte b = (byte)a; //所以编译器在这里不知道a的值是多少,只知道a是个int类型, //要把int的值赋给一个byte,就必须强行转换 我知道这样的问题怎么处理,见下面: byte b=127; short s=32767; (这样可以)-------------------- int num1=127; int num2=32767; byte b=(byte)num1; short s=(byte)num2;(此时需要类型的强制转换)我想问的是直接赋值数字没有问题,而将一个int型变量赋值就要强制转换了整数的默认类型不就是int吗?想问问其中的道理啊????(不知道是不是我的问题没有描述清楚,上面第一位说的是解决数据溢出,我不是问的这个啊....!!! ) LZ木有看我的回复?常量和变量的区别,想理解什么是常量什么是变量,在理解我在2L的回复 你的意思是不是byte b = 100;可以而int num = 100;b = num为什么不可以?我是这样理解的 100的二进制为 1100100,只有7位,可以赋给b ,b有8位而 b = num;虽然还是100,但是他的位数已经是 32 位了当然就不能把32位的给8位的了 int a = 127; 这不是常量吗?怎么会是变量 有人可以说说第一个问题吗?--Java中的字符(char)占16位,却可以用超过16位的整数赋值(如32799); char是16为,但是是无符号的,最大值是 1111 1111 1111 1111/FFFF/65535 问题是你要把a赋给bb = a;//对于这个语句来说,是把变量a的值赋给b,而不是把常量127赋给b,这就是区别char是无符号的,所以最大值是65535,比32799大,所以没问题可以自己打印查看char的最大值System.out.printf("%d\n", (int)Character.MAX_VALUE);如果超出char的范围,编译器一样警报,如char c = 0x1ffff; 求助。JAVA SWING 绘图滚动条重影问题 请教高手问题 java多个判断条件的实现! 在jbuilder X 中使用jtable 出现的问题!!! 哥哥们呀 来呀 高手进,能不能用一个方法来代替这两个方法? 一个数据库的问题,请大家都来看看 请问大家如何实现一个提示的功能呢? axis1.6.2把java文件放web根目录下无效 急!在线等待你的帮助 求高手,使用 htmlParser解析html文件中特定标签中的文本? ThreadPoolExecutor在shutdownNow()之后如何判断所有Thread都已经停了?
int num = 100;
byte b = (byte) num;
short s = (short) num;
byte b = 127; //这个127是常量,编译器知道这个值,所以可以检查赋值是否合法int a = 127; //这个a是变量,在程序运行的时候才会给a赋值127
byte b = (byte)a; //所以编译器在这里不知道a的值是多少,只知道a是个int类型,
//要把int的值赋给一个byte,就必须强行转换
见下面:
byte b=127;
short s=32767;
(这样可以)
--------------------
int num1=127;
int num2=32767;
byte b=(byte)num1;
short s=(byte)num2;
(此时需要类型的强制转换)
我想问的是直接赋值数字没有问题,而将一个int型变量赋值就要强制转换了
整数的默认类型不就是int吗?
想问问其中的道理啊????
(不知道是不是我的问题没有描述清楚,上面第一位说的是解决数据溢出,我不是问的这个啊....!!! )
常量和变量的区别,想理解什么是常量什么是变量,在理解我在2L的回复
byte b = 100;可以
而
int num = 100;
b = num为什么不可以?我是这样理解的 100的二进制为 1100100,只有7位,
可以赋给b ,b有8位
而 b = num;虽然还是100,但是他的位数已经是 32 位了
当然就不能把32位的给8位的了
int a = 127; 这不是常量吗?怎么会是变量
--Java中的字符(char)占16位,却可以用超过16位的整数赋值(如32799);
b = a;//对于这个语句来说,是把变量a的值赋给b,而不是把常量127赋给b,这就是区别
char是无符号的,所以最大值是65535,比32799大,所以没问题
可以自己打印查看char的最大值
System.out.printf("%d\n", (int)Character.MAX_VALUE);如果超出char的范围,编译器一样警报,如
char c = 0x1ffff;