- 給定如下java代碼,編譯時會在哪行( )出現錯誤。
class Demo1{ }
class Demo2 extends Demo1{
public static void main(String args[]){
Demo1 d1=new Demo2 () ;//第一行
Demo2 demo2=new Demo2 () ;//第二行
Demo1 d2=new Demo1() ;//第三行
Demo2 demo3=new Demo1() ;//第四行
}
}
解:需要強轉 Demo2 demo3=(Demo2 ) new Demo1(); 當子類引用指向父類實例需要強轉
2.給定Java代碼,運行編譯後,輸出結果是()
class Parent{
public void count() {
System.out.println(10%3) ;
}
}
public class Test extends Parent{
public void count() {
System.out.println(10/3) ;
}
public static void main(String args[]) {
Parent p = new Test() ;
p.count() ;
}
}
解答:更上題一樣,考的是多態的轉型,父類引用指向子類實例,向上轉型,那麼p所調用的方法是子類重寫的方法,如果p調用的是成員變量,則是父類的成員變量
3.打印結果爲:
public class Test{
public static void main (String args[]){
int []num = {1,2,3}
for(int i = 0;i<3;i++){
System.out.print(num[i]);
}
System.out.print(num[i]); //i爲局部變量
}
}
解答:此題很容易錯誤,認爲num[i]=0,i爲局部變量,編譯會報錯
4.編譯結果爲:
public class Example{
String str=new String(“good”);
char[]ch={‘a’,’b’,’c’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+” and “);
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str=”test ok”;
ch[0]=’g’;
}
}
解答:記住 String對象是不可變的,每個修改String值的方法都是創建了新的String對象(包括修改後的字符串內容)
5.正確的代碼爲:
public class Test{
private float f = 1.0f;
int m = 12;
static int n = 1;
public static void main(String arg[]){
Test t = new Test();
(1) t.f
(2) this.n
(3)t.m
(4)Text.m
(5)Text.n
}
}
解答:牢記一點,main方法是static修飾的靜態方法,那麼靜態方法只能訪問靜態變量啊!!!! (1)(3)直接報錯 Syntax error, insert “VariableDeclarators” to complete LocalVariableDeclaration 要賦值,打印就行 t.f=1這樣,單調用就像直接寫常數一樣 (2)靜態變量是不能用關鍵字this的
6.基本數據類型定義: 小數是double類型