Java是强类型语言,变量在定义的时候是什么类型它就是什么类型,不会自己变。如int i = 10; i永远是int,不会变成别的。long l = 10; l永远是long,也不会变成别的。至于字面量,如100, 200这样的,它的默认类型是int,若加上l后缀,或赋给long,它就提升为long,赋给short,byte等,它就下降为short或byte。
System.out.println(100000000000000); 在eclipse中,输出一个超出int的字面常量,会出错并提示超出int范围,表明整型字面常量是int型的。 long a = 123; 123也是整型字面常量,当然就是int型的。当把一个int型赋值给long型变量,会自动提升为long型。
第二个问题 : long a = 123; a是long型的,因为在定义的时候用了Long 型,一般有定义:long a = 123L;而在书写的过程中, 可以忽略后面的L 所以a是long型的。
123 int (分配4字节) 123L long (分配8字节) 123D double (分配8字节) 123F float (分配4字节)long a = 123; 123为int,自动类型转换为long后赋给a。 注:此处为自动类型转换。 如果是:int a = 123L,则123为long,强制转换为int后赋给a。 另外:byte short 在参于计算时,都会自动转换为int类型
public class Check{ public static void main(String[] args){ int a = 0; long b = 4; String result1 = check(a); String result2 = check(b); System.out.println(a + " is " + result1 ); System.out.println(b + " is " + result2 ); } private static String check(Object o){ String result = null; if(o instanceof Integer){ result = "Integer"; }else if(o instanceof Long){ result= "Long"; } return result; } }
这么说吧, 在java里面,整型默认的是int,如果是输入了123之类的整数,一定默认的是int型 但是,我们添加了一个变量a,这个变量a又被赋值123, 而a又是long型的,所以,123就被转换成long型的了但是如果是long型 转 int型long a =12345678900; int b ; b = (int)12345678900; 可以转换吗? 明显不行,溢出了。 数值超过了范围。
public class TestInt { public static void main(String[] args) { Integer a = 10; System.out.println(a instanceof Integer); }}就用instanceof 判断就是了
你是想问 a 是 int 还是long 吧》。
123转换成long类型后赋给a
正是因为不是对象,所以不能用instanceof,所以不知道怎么判断了
java系统中默认的数是int类型,请问有什么办法可以检验
如:System.out.println(10); 有没有办法检验这个10是int类型的
----
你单步跟踪就会发现会进入println(int x)这个方法,所以你可以认为10是int的,所以编译器会认为调用println(int x)方法
在eclipse中,输出一个超出int的字面常量,会出错并提示超出int范围,表明整型字面常量是int型的。
long a = 123;
123也是整型字面常量,当然就是int型的。当把一个int型赋值给long型变量,会自动提升为long型。
123L long (分配8字节)
123D double (分配8字节)
123F float (分配4字节)long a = 123; 123为int,自动类型转换为long后赋给a。
注:此处为自动类型转换。
如果是:int a = 123L,则123为long,强制转换为int后赋给a。
另外:byte short 在参于计算时,都会自动转换为int类型
如果输出是20,则是整形的
不过 java的内部机制有自动转型这一说,可以看一下 或查一下资料 先转型后参加运算 如果超出了既定类型就会自动转为既定类型的上一级类型 比如:int型 如果超出 就会自动转为 long型 不知道对不对 如果不对,还请指正
public class Check{
public static void main(String[] args){
int a = 0;
long b = 4;
String result1 = check(a);
String result2 = check(b); System.out.println(a + " is " + result1 );
System.out.println(b + " is " + result2 );
} private static String check(Object o){
String result = null;
if(o instanceof Integer){
result = "Integer";
}else if(o instanceof Long){
result= "Long";
}
return result;
}
}
在java里面,整型默认的是int,如果是输入了123之类的整数,一定默认的是int型
但是,我们添加了一个变量a,这个变量a又被赋值123,
而a又是long型的,所以,123就被转换成long型的了但是如果是long型 转 int型long a =12345678900;
int b ;
b = (int)12345678900;
可以转换吗? 明显不行,溢出了。 数值超过了范围。
public static void main(String[] args) {
Integer a = 10;
System.out.println(a instanceof Integer);
}}就用instanceof 判断就是了
所以,第一个是int
而第二个 long比int
的范围大 123隐式转成了long