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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贺靖轩 中级黑马   /  2013-3-28 19:50  /  1995 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

黑马程序员_毕向东_JAVA基础视频第02天-08-类型转换.avi 中 在9分20S左右 毕老师举了这么一个例子:
当Int 类型的数据与 Float类型数据 进行运算的时候,结果会转换为 Float 类型的数据,这里毕老爷讲得有点太激情了,所以出了点小差错。
——根据虚拟机的设定在自动类型提升后最终会转换成Double类型的数据。
具体细节大家补齐吧,目前正在赶进度,时间不太充裕。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

11 个回复

倒序浏览
呵呵 经过大家一番讨论 我终于明了
有码有真相:
引处引用芦青马马的证据:
class Demo
{      
        public static void main(String[] args)
        {
                int a=6;
                float f=3.3f;
      
                float i=a+f;
                System.out.print(i);
        }
      
}

根据代码的运算情况:Int 类型的数据与 Float类型数据进行运算的时候,最终是能用float接受的..如果是double类型,赋值会损失精度的..你在好好理解下毕老师的类型转换吧

哈哈 我又中枪了 关于这个问题

byte,short,char->int->float->double
byte,short,char之间不会互相互换,他们三者在计算时首先转换成int类型 是可以套用的规律,引用9#。

恩 问题大概是解决了 楼主最近也是压力比较大 下面由楼主来演示下为何会得出开始时的结论,“剑指毕老爷”。
楼主的测试关键代码如下:

a.    int i=6;
b.    float f=i+0.3;
c.    System.out.print(f);

相信大家现在已经看猫腻了,对吧? 不可轻视了 l f 这样看似微末的东东。

0.3在这里未加f,则表示其是一个double类型的数据,
int 类型的 i  同double 类型的0.3运算,结果铁定是double类型的了

楼主是那种很抠的人 那么在引用类型中 上面的问题会有怎样的表现?

Integer i=new Integer(6);
f=new Float(6+0.3);
System.out.println(f);

请问 f=new Float(6+0.3); 中,(6+0.3)是什么类型?
我一切错误的根源大概就在这里
此为Float封装类的构造方法

public Float(double value)
{
        this.value = (float)value;
}

相信大家一看就明白了
(6+0.3)铁定是Double类型了
写这个看似啰嗦的情况是为了再次提醒大家和自己
不会忽略
      那些
细枝末节{:soso_e136:}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
{:soso_e127:}Int 类型的数据与 Float类型数据 进行运算的时候,结果的确是会转换为 Float 类型的数据哦

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
贺靖轩 + 2 没钱了 象征性下
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这个貌似就是转换成Float好吧,,   这个问什么要提升???

评分

参与人数 1黑马币 +2 收起 理由
贺靖轩 + 2 理由同上

查看全部评分

回复 使用道具 举报
本帖最后由 薛飞 于 2013-3-28 21:07 编辑

{:soso_e127:}int+float=float,这个没问题啊,没出错啊。这个不符合自动提升的条件啊,为什么要自动提升为double,楼主把大家搞晕了

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
贺靖轩 + 2 问板凳
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
在我所知道的东西里面 也是 符合int+float=float   额 对于楼主所说的 在JVM 里面的啥啥啥会提升到 double  
还希望有大神出来解答一下,很好奇。

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
贺靖轩 + 2 板凳要是不知道可以考虑问藤椅.
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
基本数据类型,类型自动转换是当2个或2个以上基本数据类型运算时 低的自动转换为高的,然后再进行运算,如:int+float=float 过程是,int先自动转换为float,然后再与float运算。并非楼主想的那样子。本例中未涉及到Double,那么最终数据类型为float。毕老师木有讲错的。

评分

参与人数 1黑马币 +2 收起 理由
贺靖轩 + 2 你懂的

查看全部评分

回复 使用道具 举报
若还有问题,请继续追问; 没有的话,将帖子分类改成【已解决】哦~
回复 使用道具 举报
楼主  int + float= float,貌似木有错,求解

评分

参与人数 1黑马币 +2 收起 理由
贺靖轩 + 2 是不是够无聊,第一张贴么,理解下.

查看全部评分

回复 使用道具 举报
Keith 中级黑马 2013-3-28 22:34:09
9#
byte,short,char->int->float->double
byte,short,char之间不会互相互换,他们三者在计算时首先转换成int类型

评分

参与人数 1黑马币 +2 收起 理由
贺靖轩 + 2 呵呵 刚才么钱了 刚又赚了点

查看全部评分

回复 使用道具 举报
陈丽莉 发表于 2013-3-28 21:52
若还有问题,请继续追问; 没有的话,将帖子分类改成【已解决】哦~

亲   ... 找不到 【已解决】
回复 使用道具 举报
贺靖轩 发表于 2013-3-29 12:00
亲   ... 找不到 【已解决】

http://bbs.itheima.com/thread-42978-1-1.html
亲,这里有相关解决办法哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马