Prev | Next |
Quiz - 2
This quiz tests your knowledge of Java language semantics. Get a print out of this when you come to the class.
- First try answering without running the program.
- Then run the program to check if your understanding was indeed correct.
- Enter both the answers in the last column and submit.
Concept | Program | Your answer first, followed by the actual answer |
Dynamic dispatch/ Method overloading/ Runtime Polymorphism |
// NTest.java public class NTest { public static void main(String[] args) { NTest nt = new NTest(); nt.method(2); nt.method('2'); } public void method(int i) { // Does nothing } public void method(char c) { // Does nothing } } |
|
Dynamic dispatch/ method overloading |
// OTest.java public class OTest { public static void main(String[] args) { OTest ot = new OTest(); ot.method(2); ot.method(2); } public char method(int a) { return 'c'; } public long method(int b) { return 0; } /* Is it possible to overload methods that differ only on the return type? */ } |
|
Instance method accessing static variable & calling static method |
// PTest.java public class PTest { static int var; public static void main(String[] args) { PTest pt = new PTest(); pt.instanceMethod(); } public void instanceMethod() { var = 0; staticMethod(); /* Is it appropriate to use this.var or this.staticMethod()? */ } public static void staticMethod() { System.out.println("static method";) } } |
|
Static method accessing instance variable & calling instance method |
// QTest.java public class QTest { private int var; public static void main(String[] args) { var = 0; instanceMethod(); } public void instanceMethod() { System.out.println("instance method"); } } |
|
Working with null object |
// R.java public class R { private int x; public void set(int xi) { x = xi; } } // RTest.java public class RTest { public static void main(String[] args) { R r; r.set(2); } } |
|
Working with null array |
// S.java public class S { private int x; public void set(int xi) { x = xi; } } // STest.java public class STest { public static void main(String[] args) { S[] s; s.length; } } |
|
Working with null array element |
// T.java public class T { private int x; public void set(int xi) { x = xi; } } // TTest.java public class TTest { public static void main(String[] args) { T[] t = new T[10]; t[5].set(2); } } |
|
Crossing array boundary |
// U.java public class U { private int x; public void set(int xi) { x = xi; } public int get() { return x; } } // UTest.java public class UTest { public static void main(String[] args) { U[] u = new U[10]; for (int i=0; i<u.length; i++) u.set(i); System.out.println( u[10].get() ); } } |
|
Default Constructor |
// V.java public class V { private int x; public V(int xi) { x = xi; } } // VTest.java public class VTest { public static void main(String[] args) { V v1 = new V(5); V v2 = new V(); } } |
|
Private constructor |
// W.java public class W { private int x; private W() { x = 0; } } // WTest.java public class WTest { public static void main(String[] args) { W w = new W(); } } |
|
Empty .java filename |
// .java class X { // Don't make it public private int x; public X(int xi) { x = xi; } } /* Compilation: javac .java Does it compile? Check it out. */ |
|
Static block with main |
// YTest.java public class YTest { static{ System.out.println("From static block"); } public static void main(String args[]){ System.out.println("Hello main"); } } |
|
Static block without main |
// ZTest.java public class ZTest { static{ System.out.println("From static block"); System.exit(0); } } |