我知道这可能是一个简单易行的问题,但它的意思是什么,以及该命令出现时的作用是什么? :
int var1 = 1;
int var2 = 2;
var1 = (type of var1) (var1 + var2)
答案 0 :(得分:2)
那不会编译,但你引用的是以下代码:
int var1 = 1;
int var2 = 2;
var1 += var2;
type of var1
被称为type conversion。这种变化意味着实体的数据类型。
那么你所拥有的将是:
int var1 = 1;
int var2 = 2;
var1 = (int)(var1 + var2);
但是这可以用来做以下工作:
char var1 = 'a';
double var2 = 3.14;
var1 += var2;
与说法相同:
char var1 = 'a';
double var2 = 3.14;
var1 = (char)(var1 + var2);
答案 1 :(得分:0)
int var1 = 1; double var2 = 2.1; var1 = int(var1 + var2); %cast ..你强制函数返回你想要的类型的变量
答案 2 :(得分:0)
(some_type)
,当放在表达式前面时,是"演员"它将表达式的值转换为指定的类型。
有两种形式,一种是some_type
是基元(int
,char
,double
等),另一种是some_type
是对象类名称(String
,HashMap
,MyClass
等)。
第一种类型几乎总是被允许(尽管从char
转换为double
通常没有意义,但是第二种类型要复杂得多)并且,尽管编译器会接受它,但很可能会导致运行时ClassCastException
。
你永远不能(除了一些奇怪的案例与#34;拳击"原始值进入相应的对象(例如int
到Integer
))# 34;铸造"对象类的原语,反之亦然。
您经常会看到使用的强制转换将浮点值转换为整数值,例如:
double x = 345.67;
int y = (int) x; // The result is y = 345. Note that "rounding" does not occur.
或"缩小"整数类型,例如:
long a = 1234567;
int b = (int) a; // The result is b = 1234567,
// because all the bits of the number will fit in a 32-bit int
如果"施放到"类型太窄,无法容纳"有效位"然后"截断"价值的出现。例如:
int c = 257;
byte d = (byte) c; // The result is d = 1, since 257 is 0x101,
// and a byte only holds 8 bits or 0x01