A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄敏 中级黑马   /  2012-8-24 09:44  /  2371 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    类型       描述             取值范围
  Boolean    布尔型           只有两个值true、false
  Character  字符型
  Byte       8位带符号整数    -128到127之间的任意整数
  Short      16位无符号整数   -32768~32767之间的任意整数
  Integer    32位带符号整数   -2^31到2^31-1之间的任意整数        
  Long       64位带符号整数   -2^63到2^63-1之间的任意整数
  Float      32位单精度浮点数 根据IEEE754-1985标准
  Double     64位双精度浮点数 根据IEEE754-1985标准



                Integer i1 = 129;
                Integer i2 = 129;
                System.out.println(i1==i2);     //
张老师不是说数据字节要是在-128~127之间,要是第一创建了,就会缓存起来,第二次使用就不创建,先去缓存查看有没有定义的这个数据,有的话就直接引用,不会重新开辟空间                上面的我理解
                Byte b1 = (byte) 129;
                Byte b2 = (byte) 129;
                System.out.println(b1==b2);   //返回true      按照老师说的,这个应该返回false啊,怎么是true呢?求解释
               
                Short s1 = 138;
                Short s2 = 138;
                System.out.println(s1==s2);   //返回false      这个验证了老师说的       我
               
                Long l1 = (long) 139;
                Long l2 = (long) 139;
                System.out.println(l1==l2);      //返回false       越想越乱,不理解了      求真相

                Double d1 = 14.0;
                Double d2 = 14.0;
                System.out.println(d1==d2);   //返回的是false    越想越乱,不理解了   求真相      Float  没验证

基本数据类型都符合张老师说的那样(上面红字那句话)吗           能一 一说明吧 老鸟解答,非常感谢

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

6 个回复

倒序浏览
来个能解决的吗
回复 使用道具 举报
本帖最后由 尤洋 于 2012-8-24 10:06 编辑

毕老师说的不是在-128~127之间,而是说的在byte数据范围之内。
这两者是有区别的。你去网上去查一下百度百科中的常量池,就会知道Integer类型在
byte数据类型的范围内实现了常量池技术,所以创建对象时会优先去查看常量池。
你在这里把129强转为byte类型的话,他也会默认去常量池查看129.
换句话说你如果把10000强转为byte类型,那 Byte b1 = (byte) 10000;  
                                                                       Byte b2 = (byte) 10000;
                                                                        System.out.println(b1==b2);  结果一样也是true。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

回复 使用道具 举报
public class Demo {
        public static void main(String[] args) {
        Integer i1 = 129;
    Integer i2 = 129;
    System.out.println(i1==i2);
    Byte b1 =(byte)129;//你在这句话前面加byte是指向了一个新数字的地址,因为用byte强转了,值肯定在byte之内,所以结果为true
    Byte b2 =(byte)129;   
    System.out.println("b1="+b1);
    System.out.println("b2="+b2);
    System.out.println(b1==b2);
        }
}

点评

哥门,报哪期啊?  发表于 2012-8-24 10:55

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
黑马张涛 发表于 2012-8-24 10:46
public class Demo {
        public static void main(String[] args) {
        Integer i1 = 129;

想进13期,你也是?
回复 使用道具 举报
尤洋 发表于 2012-8-24 09:58
毕老师说的不是在-128~127之间,而是说的在byte数据范围之内。
这两者是有区别的。你去网上去查一下百度百 ...

怎么都是只回答了byte呢?后面的就没有了?
回复 使用道具 举报
黄敏 中级黑马 2012-8-24 11:21:28
7#
问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马