Sample Exam Questions: Java and Physics Simulation
Spring 2006

Instructions: 
a. No books or notes allowed.
b. Answers to questions involving Java code do not need to show correct 
Java syntax. The answers just need to display an understanding of the 
basic Java programming language and techniques.


(This is also available as a text file.)


[Answers at bottom]

1. List 3 features of Java that are of benefit to technical 
   programming. 

2. Explain the difference between the instance variables of a class 
andstatic variables.


3. Convert float variable "f" to int variable "j".


4. Since the Virtual Machine in which you run your threaded program may not 
necessarily have a preemptive (time-slicing) design, name at least one of
the 2 ways that you can insure that your threads surrender 
processing time to the other threads.


 
5. Lets say that you have a program called MyApplet in directory "myjava" that 
uses the helper classes A, B, and C , which are in files A.java, B.java, and 
C.java and their corresponding ".class" files. You decide to clean things up 
a bit and put the helper classes into a package. How do you do this? 


6. Give an example of an abstract class and an example of a real class 
that inherits the abstract class.


7. Java provides basic math functions and constants. Write an example 
of a Java statement witha Java math function and constant.[3p]


8. Create an Integer array in which the Integer objects hold 
the int values 4,20,15. 
  
  
9.What does the following code print out:


  aURL = new URL ("http://java.sun.com:80/tutorial/intro.html#DOWNLOAD");
 System.out.println ("protocol = " + aURL.getProtocol ());
 System.out.println ("host = " + aURL.getHost ());
 System.out.println ("filename = " + aURL.getFile ());
 System.out.println ("port = " + aURL.getPort ());
 System.out.println ("ref = "  + aURL.getRef ());


10. What happens when repaint() is called in an applet (for either an
Applet or JApplet subclass)?


11. Create a simple interface and a simple class that implements
that interface.


12. Show the code that for creating a panel and adding 5 buttons 
to it with a BorderLayout manager. 


13. Explain what happens to the image when

 Image img = getImage (getCodeBase (),"a.gif");

is executed. 


14. In the following simple Java class, the main method  passes a 
primitive and an array to a method. What will the output for 
this program look like and explain why?


  public class MyClass {
    public static void main (String [] args) {
      int x = 5;
      double [] array = {5.0, 4.0, 3.0, 2.0, 1.0, 0.0};
      myMethod (x, array);
      System.out.println ("x = " + x);
      System.out.println ("array[0] = " + array [0]);
    }

    static void myMethod (int x, double [] array) {
      x = 3;
      array [0] = 3.0;
    }
  }


15. Show code examples of how the "this" and "super" references are used. 
 Show code examples of this() and super() constructor invocations. 


16. Give the Java code and html code (applet tag only) to make an applet
that passes a string to be displayed on the applet panel and also 
passes the colors "red" or "blue" that should be used for drawing 
the string.


17. For the paint() method of a Panel component or the paintComponent() method 
of a Swing JPanel, give the code to fill the whole drawing area with yellow 
and then to draw a solid red rectangle one third the size of the drawing 
area and centered in the area.[4p]


18. Give Java code to create an application with a frame to hold an applet 
called MyApplet (assume MyApplet is available in a separate java
file in same directory, so you don't need to include code for it.)[4p]




==================================================================================
QUESTIONS WITH ANSWERS


. List 3 features of Java that are of benefit to technical 
   programming. 
   
---
  - Platform independence, which is important in science since many
    types of computers are used.
  - Strong graphical capabiities for use in simulations, data analysis graphics, 
    animations, etc.
  - Networking of experiments and equipment for remote monitoring and control.
  - Access and interfacing to large online databases.
  - Education such as online demonstrations with applets
  - Enhances collaborative work.

2. Explain the difference between the instance variables of a class 
andstatic variables.
---

A static property belongs to a class rather than an instance 
of the class. A static property exists, i.e. has memory allocated 
to it, even when there are no instances of the class.

An object has its own independent set of instance variables. Their 
values do not affect the values of the instance variables in other 
objects for that same class.

public class MyClass {

  int a; // instance variable
  static double MY_CONSTANT = 3.14; // static variable
  ...
}


3. Convert float variable "f" to int variable "j".
---

 j = (int)f;

4. Since the Virtual Machine in which you run your threaded program may not 
necessarily have a preemptive (time-slicing) design, name at least one of
the 2 ways that you can insure that your threads surrender 
processing time to the other threads.

---
 Add yield() or sleep() calls to release control in the run().
 
 
5. Lets say that you have a program called MyApplet in directory "myjava" that 
uses the helper classes A, B, and C , which are in files A.java, B.java, and 
C.java and their corresponding ".class" files. You decide to clean things up 
a bit and put the helper classes into a package. How do you do this? 

---
Put the line:

  package mypackage; 

at the top of files A.java, B.java, and C.java. Then put them into a sub-directory:

  myjava/mypackage

Compile the files A, B, and C from directory myjava.

  >javac mypackage/A.java
  >javac mypackage/B.java


In MyApplet, put the line:

  import mypackage.*;

or use the full name of each class, e.g.

  mypackage.A

wherever in your code that you use this class.


6. Give an example of an abstract class and an example of a real class 
that inherits the abstract class.

---
abstract class A {
  abstract int doSomething (int a);
  int doSomethingElse (int a) {
    return a * a;
  }
}

class B extends A {
   int doSomething (int a) {
     return 2 * a;
   }
}

7. Java provides basic math functions and constants. Write an example 
of a Java statement witha Java math function and constant.[3p]
---
a=Math.cos(x*Math.PI);

8. Create an Integer array in which the Integer objects hold 
the int values 4,20,15. 
---

  Integer[] iarray = new Integer[3];
  iarray[0] = new Integer (4);
  iarray[1] = new Integer (20);
  iarray[1] = new Integer (15);
  
  
9.What does the following code print out:


  aURL = new URL ("http://java.sun.com:80/tutorial/intro.html#DOWNLOAD");
 System.out.println ("protocol = " + aURL.getProtocol ());
 System.out.println ("host = " + aURL.getHost ());
 System.out.println ("filename = " + aURL.getFile ());
 System.out.println ("port = " + aURL.getPort ());
 System.out.println ("ref = "  + aURL.getRef ());

---
  protocol = http
  host = java.sun.com 
  filename = /tutorial/intro.html 
  port = 80 
  ref = DOWNLOAD 


10. What happens when repaint() is called in an applet (for either an
Applet or JApplet subclass)?

---
You would typically invoke repaint() to redraw a panel such as
for a new frame in an animation. 

The repaint() invocation adds an entry to the queue of calls
for repainting components. Allowing the AWT system to decide when
a component is repainted, rather than directly invoking a paint ()
or paintComponent () method, avoids interference with the GUI
event handling.

For AWT components the default update() method will be invoked.
This method will clear the drawing area by filling a rectangle of 
the size of the component with the background color. It then calls 
the paint() method. 

For Swing components (i.e. JComponent subclasses) the paintComponent ()
method will be invoked. This method must either invoke super.paintComponent()
to repaint the whole area or it should paint the area itself.


11. Create a simple interface and a simple class that implements
that interface.

--
public interface Remakable {
  public void remake ();
} 

/** This close holds an array of random numbers **/
public class RanNumArray implements Remakable {

  private double [] fRanNums;
  private int fNumRans=0;

  // Pass the constructor the size of the array
  public RanNumArray (int n) {
    fNumRans = n;
    fRanNums = new double [fNumRans];
    remake ();
  } // ctor


  // Get the array
  public double [] getRans () {
    return fRanNums;
  } // getRans

  // Remake the randome numbers
  public void remake () {
    for (int i=0; i < fNumRans; i++) {
      fRanNums [i] = Math.random ();
    }
  } // remake
  
} // RanNumArray


12. Show the code that for creating a panel and adding 5 buttons 
to it with a BorderLayout manager. 
---

  JPanel panel = new JPanel ();
  panel.setLayout (new BorderLayout());

[An alternative is  
  JPanel panel = new JPanel (new BorderLayout());
]

  panel.add ("East", new Button ("East")); 
  panel.add ("West", new Button ("West")); 
  panel.add ("North",new Button ("North")); 
  panel.add ("South",new Button ("South") ); 
  panel.add ("Center",new Button ("Center"));

13. Explain what happens to the image when

 Image img = getImage (getCodeBase (),"a.gif");

is executed. 

---
Nothing. The image is not actually loaded until
an attempt is made to draw the image or if a
MediaTracker or other such technique is used to
force the image to load. 



14. In the following simple Java class, the main method  passes a 
primitive and an array to a method. What will the output for 
this program look like and explain why?


  public class MyClass {
    public static void main (String [] args) {
      int x = 5;
      double [] array = {5.0, 4.0, 3.0, 2.0, 1.0, 0.0};
      myMethod (x, array);
      System.out.println ("x = " + x);
      System.out.println ("array[0] = " + array [0]);
    }

    static void myMethod (int x, double [] array) {
      x = 3;
      array [0] = 3.0;
    }
  }

--

x = 5
array[0] = 3.0


Primitive variables are handle by their value, i.e. the number in 
their memory location, and not by a pointer to their memory location.
When a primitive varible is passed in a method argument, a copy of 
its value is passed, i.e. the variable is passed by "value". The 
method cannot change the value of the variable in the method that
invoked it.

Arrays, like all objects (remember that an array is an object in Java), 
are handled by reference variables. A reference is a pointer 
to a location in memory where the object data is stored. Unlike C/C++, 
the actual memory pointer value is not accessible. 

References in a method argument are passed to the method. That method 
can then use the reference to the object possibly to alter that object.
(Note that the reference itself, i.e. the internal memory pointer, is
copied and passed to the method. So it is also passed by value.) 

15. Show code examples of how the "this" and "super" references are used. 
 Show code examples of this() and super() constructor invocations. 

---

public class A {
  int a;
  int b;
  public A (int a) {
    this.a = a;
  }

  public A (int a, int b) {
    this (a);
    this.b = b;
  }

  void doSomething (int x) {
    a = 10 * x;
  }
}

class B extends A {
  
  public B (int a, int b, double c) {
    super (a, b);
    this.c = c;
  }
  
  void doSomething (int x) {
    super.doSomething (x);
    a = a + 10;
  }
}

16. Give the Java code and html code (applet tag only) to make an applet
that passes a string to be displayed on the applet panel and also 
passes the colors "red" or "blue" that should be used for drawing 
the string.

---

import java.applet.*;
import java.awt.*;

public class HelloWorld extends Applet {
  String astring;
  Color color;
  public void init(){
    astring = getParameter("aString");
    
    // Get color. Black is the default.
    color = Color.BLACK;
    String colorStr = getParameter("color");
    if(colorStr.equals("red"))
       color = Color.RED;
    else if( colorStr.equals("blue"))
       color = Color.BLUE;
       
  }
  
  void paint(Graphics g){
   g.setColor(color);
   g.drawString(0,0,astring);
  }
}

In the applet web page:

<applet code = "HelloWorld" width = "100" height = "100">
  <param name = "aString" value = "Hello World">
  <param name = "color" value = "red" >
</applet>

17. For the paint() method of a Panel component or the paintComponent() method 
of a Swing JPanel, give the code to fill the whole drawing area with yellow 
and then to draw a solid red rectangle one third the size of the drawing 
area and centered in the area.[4p]
---

public void paint (java.awt.Graphics g) {
  int w = getSize().width;
  int h = getSize().height;
  g.setColor (java.awt.Color.yellow);
  g.fillRect (0,0,w,h);

  int rw = w/3;
  int rh = h/3;

  rx = (w - rw)/2;
  ry = (h - rh)/2;
  g.setColor (java.awt.Color.red);
  g.drawRect (rx,ry,rw,rh);
}

18. Give Java code to create an application with a frame to hold an applet 
called MyApplet (assume MyApplet is available in a separate java
file in same directory, so you don't need to include code for it.)[4p]

---
import java.awt.*;
public class MyApp extends Frame {

  public static void main(String [] args){
   MyApplet myapplet = new MyApplet();
   MyApp myapp = new MyApp();
  
   myapp.resize(400,400);
   myapp.add("Center",myapplet);
   myapple.init();
   myapplet.start();
   myapp.pack();
   myapp.show();
  }
}