刷题01
a.
b.
char[] arr1 = new char[]{'a','b','c'};System.out.println(arr1);輸出結果:
解析:a的println()調用的是Object類中的toString()方法,先將數組轉換成String類型然后輸出,就是地址值了,
相當于:System.out.println(Arrays.toString(arr));
而b輸出的就是abc,因為println()只有一個數組類型,就是char[],才是數組輸出,其他都如同a結果。
2.網紅題:控制輸出
解析:若是看成單純的參數傳遞就慘了,系統調用完method()之后,就會將method()方法內聲明的變量彈出棧,而它指向的堆內存中的對象就會成為垃圾被回收;表示method()方法內的變量只在method()方法內有效,如果在main()中輸出a,b,還會是堆內存中屬性指向的a,b,即還是10;
思路:改變main()中的輸出語句,要么阻止它輸出,要么重寫。
方法一:避免在main()中輸出,即在method()中給變量做運算之后立馬輸出,并且調用System.exit(0)方法來終止程序,此方法表示結束當前正在運行的JVM,不給main()機會執行輸出語句。
tips:System.exit()源碼如下:
運行結果:
運行結果:
3.多態題目的考察
判斷下面的輸出結果,以及
tips:表示編譯器認為形參int … arr與int[] arr是一樣的;
4.題目:
定義GeometricObject 類:
Circle 子類
class Circle extends GeometricObject{private double radius;Circle(double radius,String color,double weight){super(color, weight);this.radius = radius;} //省略get/set方法 //……@Overridepublic double findArea() {return 3.14 * radius * radius;} }MyRectangle 子類:
class MyRectangle extends GeometricObject{double width;double height;MyRectangle(double width,double height,String color,double weight){super(color, weight);this.width = width;this.height = height; //省略get/set方法 //……@Overridepublic double findArea() {return width * height;} }GeometricObjectTest 測試類:
public class GeometricObjectTest {public static void main(String[] args) {GeometricObjectTest test = new GeometricObjectTest();Circle c1 = new Circle(2.3, "red", 1.0);test.displayGeometricObject(c1); Circle c2 = new Circle(3.3, "red", 1.0);test.displayGeometricObject(c2); boolean isEquals = test.equalsArea(c1,c2);System.out.println(isEquals);}//現實對象的面積public void displayGeometricObject(GeometricObject o){ //GeometricObject = new Circle(...);虛擬調用System.out.println("面積為:" +o.findArea());}//測試兩個對象的面積是否相等public boolean equalsArea(GeometricObject o1, GeometricObject o2){return o1.findArea() == o2.findArea();} }總結
- 上一篇: PART 5: INTEGRATING
- 下一篇: 指令重排序所带来的问题及使用volati