命令([var]的类型)有什么作用?

时间:2014-04-12 03:19:37

标签: java

我知道这可能是一个简单易行的问题,但它的意思是什么,以及该命令出现时的作用是什么? :

int var1 = 1;
int var2 = 2;
var1 = (type of var1) (var1 + var2)

3 个答案:

答案 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是基元(intchardouble等),另一种是some_type是对象类名称(StringHashMapMyClass等)。

第一种类型几乎总是被允许(尽管从char转换为double通常没有意义,但是第二种类型要复杂得多)并且,尽管编译器会接受它,但很可能会导致运行时ClassCastException

你永远不能(除了一些奇怪的案例与#34;拳击"原始值进入相应的对象(例如intInteger))# 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