问答详情
源自:2-9 Java中的自动类型转换

老师,我这样为什么不行?

public class HelloWorld{

    public static void main(String[] args) {

double avg1=78.5;

int rise=5;

        int avg3=avg1;

int avg2=avg3+rise;

System.out.println("考试平均分:"+avg1);

System.out.println("调整后的平均分:"+avg2);

}

}


提问者:编程中 2015-07-13 17:26

个回答

  • sixGod
    2015-07-13 17:46:17
    已采纳

    简单的说,强制就是不计后果,可能会报错,隐式就是java认为的合理范围内,不会造成什么过错

    比如,int型转成double为什么可以隐式呢,因为int型后面跟多少个0,都不会对数据有什么影响,但double型转成int型时,小数点后的值就会没掉,这个小数点后的值如果是钱,没掉了要你自己负责,因为你强制要转的

  • 残暴之血
    2015-07-17 12:46:40

    public class HelloWorld{

        public static void main(String[] args) {

    double avg1=78.5;

    int rise=5;

            int avg3=avg1;

    int avg2=(int)avg3+rise;

    System.out.println("考试平均分:"+avg1);

    System.out.println("调整后的平均分:"+avg2);

    }

    }

    改成这样应该就可以了吧?int 不包含double,但是可以强制double转换int.

  • 编程中
    2015-07-13 17:39:49

    原来我把double与int  float的包含关系弄错了

    double为双精度浮点数,float为单精度浮点数,int为整型。int可以稳式转换成float和double,float只能强制转换成int,但是可以隐式转换成double,double只能强制转换成float和int。

    但什么叫强制,什么叫隐式?