1
class Test1
{
public void main(String[] args)
{
int a;
int b=1;
if(b==1)
a=2;
System.out.println(++a);
}
}
有什么错误?
class Test1
{
public void main(String[] args)
{
int a;
int b=1;
if(b==1)
a=2;
System.out.println(++a);
}
}
因为在a是局部变量,当b!=1的时候a将没有被赋值,所以出现错误是:a未被初始化
2
class Something {
int i;
public DoSomething() {
System.out.println("i = " + i);
}
}
这个没有错误,因为要调用DoSomething()方法必须由对象来调用,而只有构造函数才能创建对象,i将在构造函数中被初始化。
3
class Something {
int i;
public static void main(String[] args) {
System.out.println("i = " + i);
}
}
错误:在静态函数中使用了非静态变量i。所以要在int i前面加static。而static变量有默认的初始值,所以没有初始化错误。
4
public class Some1 {
void doSomething () {
private String s = "";
int l = s.length();
}
}
错误:局部变量前不能加访问控制符。而final,abstract和strictfp是非访问控制符,所以可以加。
5
float f=2.3;
错误,possible loss of precision
found : double。应该是float f=(float)2.3;
6 public class Some1 {
void doSomething () {
short int i=1;
i=i+1;
System.out.println(i);
}
}
错误:1 没有short int ,short i=1就行
2 i=i+1;有错,精度有错,改成:i=(short)(i+1);或者i+=1;
总结:java中进行类型转换时,考虑的是有没有精度的损失,具体转换有两种类型:
1 数据类型:要把大的类型当小的使用时,要进行强制转换。
2 类的对象。类的对象之间的转换必须是有相互的继承关系的时候才能进行转换。对象转换时可以把子类的对象直接赋给父类对象,但是当把父类对象赋给子类对象时要进行强制转换。