我的问题是,如果(1)中的以下赋值涉及类型转换,即从int到long?
(1)
long i=0;
....
i =2;
(2)
long i=0;
.....
i = 2L
答案 0 :(得分:2)
是的,它涉及转换。但是使用这样的字面值,转换通常会在编译时发生,因此附加L
不会产生任何真正的区别,除非您发现代码在L
处更具可读性(I通常不会。
在某些情况下,您可以附加后缀,以获得与您没有后缀的内容实际上不同的结果,但是您已经显示的结果不是'属于这一类。
答案 1 :(得分:0)
从技术上讲,是的,这是转换。只要文字的值确实可以用int
表示,没有后缀的整数文字的类型是int
。值0
和2
的情况确实如此。因此,在i = 2
中,右侧是int
,必须转换为long
但是,这只是语言规则的转换。毫无疑问,编译器会生成直接将i
的值设置为2的代码,而不是在int
变量中存储2的代码,然后执行运行时转换。