| "Hello, world!" program (dynamic version) |
/* A dynamic Java program that prints "Hello, world!" */
class Hello {
Hello(String name) { // constructor method
System.out.println("Hello, " + name + "!"); // print the message
}
public static void main(String[] arg) { // execution begins here
new Hello("world"); // create new Hello object
}
}
|
||
|---|---|---|---|
| Unix and DOS commands |
cd dir              change directory to "dir" (within current directory) cd ..               move up to parent directory javac Hello.java    compile the program Hello.java java Hello          run the program Hello.class ls                  list contents of current directory (Unix only; use dir on DOS) rm *.class          remove all files with extension .class (Unix only; use del on DOS) [up arrow]          retype previous command control-c           interrupt a program |
||
| Primitive variable types |
int         
32-bit integer (up to 2147483647; use long for larger integers) double       64-bit ("double-precision") floating point number (up to about 10308) boolean      true or false |
||
| Arithmetic | +   -   *   /   (* and / take precedence over + and -; use parentheses when needed) | ||
| Shortcuts | +=   -=   *=   /=    ++   -- | ||
| Relations | ==   !=   <   <=   >   >= | ||
| Logic | && (and)    || (or)    ! (not) | ||
| java.lang.Math |
Math.PI         Math.E Math.cos(t)     Math.acos(x)    Math.log(x) (natural log) Math.sin(t)     Math.asin(x)    Math.exp(x) (ex) Math.tan(t)     Math.atan(x)    Math.sqrt(x)     Math.pow(x,y) (xy) Math.max(x,y)   Math.min(x,y)   Math.abs(x) (absolute value) Math.round(x)   Math.floor(x)   Math.ceil(x) (round normally, down, or up) Math.random() (pseudo-random double between 0 and 1) |
||
| Converting data types (casting) |
myInt = (int) myDouble; // rounds myDouble toward zero roundedX = (int) Math.round(x); // rounds x to nearest integer randInt = (int) (Math.random() * n); // random integer from 0 to n-1 |
||
| Control structures |
if (balance <= 0) {
broke = true;
} else {
broke = false;
}
|
while (t < 10) {
t += dt;
doStuff();
}
|
for (i=0; i<100; i++) {
System.out.println(
"I will not hack.");
}
|
| Declaring a method |
double hypotenuse(double a, double b) {
return Math.sqrt(a*a + b*b);
}
|
||
| Arrays |
double[] x; // declare that x is an array of doubles x = new double[100]; // create the array (size could be a variable) x[0] = aValue; // first entry has index zero x[99] = x[98] + dx; // last entry is 99; "x[100]" gives an error |
||
| Formatting numbers |
import java.text.*; // put this line at top of program
DecimalFormat myFormat = new DecimalFormat("0.00");
myString = myFormat.format(myNumber); // or just print it
|
||
| Parsing command-line arguments |
double x0 = 0.0; // default value
try {x0 = Double.parseDouble(arg[0]);} // or Integer.parseInt
catch (ArrayIndexOutOfBoundsException e) {} // use default if no arg
catch (NumberFormatException e) {} // or if invalid
|
||
| Plotting a graph |
Plot myPlot = new Plot("Title",xMin,xMax,xStep,yMin,yMax,yStep);
// xStep and yStep are grid line spacings
myPlot.addPoint(x,y);
myPlot.setPointSize(5); // size in pixels; default is 3
myPlot.setPointShape(Plot.CIRCLE); // default is SQUARE
myPlot.setPointShape(Plot.COLUMN); // for column (bar) graphs
myPlot.setColor(Color.blue); // (must import java.awt.Color)
myPlot.setConnected(true); // connect points with lines
|
||
| Creating a GUI window with text |
import java.awt.*; // put this at top
Frame myFrame = new Frame("See the label!"); // make a window
Panel myPanel = new Panel(); // make a panel
Label myLabel = new Label("Hello, world!"); // make a label
myPanel.add(myLabel); // put label into panel
myFrame.add(myPanel); // put panel into frame
myFrame.pack(); // size frame to hold contents
myFrame.setVisible(true); // and show it!
|
||
| Creating a push button |
import java.awt.event.*; // put this at top
Button myButton = new Button("Press me!"); // make a button
myButton.addActionListener(new ActionListener() { // say what to do
public void actionPerformed(ActionEvent e) { // when button
System.out.println("Hello, world!"); // is pressed
}});
myPanel.add(myButton); // put button into panel
|
||
| Scrollbar (for a parameter of type double) |
myFrame.setLayout(new GridLayout(0,1));
// arranges multiple DoubleScrollers in a vertical column
DoubleScroller v0Scroll = new DoubleScroller("v0 in m/s = ",0,50,0.5,20);
// parameters are min, max, step size, initial value
myFrame.add(v0Scroll); // (could also add to a Panel)
v0 = v0Scroll.getValue(); // call this when value is needed
|
||
| Creating a space to draw | Put "extends Canvas" into the class declaration, right after the class name. In the constructor method, use "setSize(width,height);" to set the size of the Canvas in pixels, and "setBackground(Color.white)" to set the background color if desired. Create a Panel within a Frame; use "myPanel.add(this);" to add the Canvas to the Panel. Then create a "public void paint(Graphics g)" method, which will be called automatically whenever the Canvas needs to be drawn. | ||
| Graphics methods |
g.setColor(Color.red);               draw in a predefined color g.setColor(new Color(r,g,b));        draw in any color; r,g,b from 0 to 255 g.fillRect(left,top,width,height);   solid rectangle (drawRect draws outline) g.fillOval(left,top,width,height);   solid oval (drawOval draws outline) g.drawLine(x1,y1,x2,y2);             draw a line, one pixel wide g.drawString("Hello",x,y);           draw text starting at x,y (All coordinates are integers in pixels, with y measured down from the top of the Canvas.) |
||
| Creating a thread |
Put "implements Runnable" into the class declaration. In the constructor method, add
the statements "Thread myThread = new Thread(this); myThread.start();". Then create a
run method:
public void run() {
while (true) { // loop forever (until interrupted)
doStuff(); // shouldn't take > 100 ms
try { Thread.sleep(20); } // time in ms
catch (InterruptedException e) {}
}
}
|
||
| Animation | Create a Canvas and a Thread, as described above. Within the loop in the run method, add the statement "repaint();" to ask Java to call your paint (or update) method. Set the sleep duration to give about 20 or 30 frames per second. | ||