Programming Environments DrJava is not Java! It is an integrated environment for developing Java programs DrJava integrates the Edit => Compile => Run cycle Other: jGrasp, BlueJ, Eclipse
Java Program Development Cycle Edit => Compile => Run Edit: create Program.java Compile: create Program.class javac Program.java Run java Program Program.java – human readable Program.class – machine readable
Compiled vs Interpreted Language Compiled – whole program is translated before it can be run; once compiled can run many times Ensures that the whole program obeys language rules Analogy: Translating a book before it can be mass printed Interpreted – only the line currently executing is translated; re-translated every time the program is run Allows for immediate feedback, faster development cycle Analogy: Translator for a guest speaker
Java Primitive Types boolean – for true/false values char – for single character values short, int, long – for integer values short [ -32,768 … 32,767 ] int [ -2,147,483,648 … 2,147,483,647 ] long [ -9,223,372,036,854,775,808 … 9,223,372,036,854,775,807 ] float, double – for real values float has smaller range than double
In how many ways can you say X = X + 1 ? X = X – 1; X = X * 5; X = X / 5; X -= 1; X *= 5; X /= 5; X--; --X; you are you’re u r Java Only
X++ vs ++X X = 5; X = 5; Y = X++; Y = ++X; Y is now 5 X is now 6 2: update the value of X 1: update the value of X Y = X++; Y = ++X; 1: “use” the value of X 2: “use” the value of X Y is now 5 X is now 6 X is now 6 Y is also 6
System.out.println(X++); System.out.println(++X); X++ vs ++X X = 5; X = 5; 2: update X 1: update X System.out.println(X++); System.out.println(++X); 1: “use” the value of X 2: “use” the value of X displays 5 X is now 6 X is now 6 displays 6
Integer Division Dividing integers always yields integer value 7 / 3 = 2 int x = 7; int y = 3; int z1 = x / y; // z1 is now 2 double z2 = x / y; // z2 is now 2 In Matlab true division Remainder operator % 7 / 3 = 2 and 1 left over, so 7 % 3 = 1 9 / 5 = 1 and 4 left over, so 9 % 5 = 4 21 / 5 = 4 and 1 left over, so 21 % 5 = 1 In Matlab rem( a, b )
Remainder % Operator Use if ( n % 2 == 0 ) { System.out.println( “n is even “ ); } if ( n % 5 == 0 ) System.out.println( “n is divisible by 5 “ ); player = ( player + 1 ) % n;
do-while loop while ( something-is-true ) { action 1; action 2; ... action n } do-while guaranteed to execute at least once do { action 1; action 2; ... action n } while ( something-is-true ) Java Only
return in void methods void drawCirclesRow( double x, double y, double r, int n) { if (n <= 0) return; // OK when without value } ... rest of the code here ...
Enhanced for Loop void printArray( double[] data ) { for (int i = 0; i < data.length; i = i + 1) double curValue = data[ i ]; System.out.print( curValue + “ “ ); }
Enhanced for Loop void printArray( double[] data ) { for (int i = 0; i < data.length; i = i + 1) double curValue = data[ i ]; System.out.print( curValue + “ “ ); } void printArray( double[] data ) { for (double curValue : data ) System.out.print( curValue + “ “ ); } for each value in data
Enhanced for Loop void printArray( double[] data ) { for (int i = 0; i < data.length; i = i + 1) double curValue = data[ i ]; System.out.print( curValue + “ “ ); } void printArray( double[] data ) { for (double curValue : data ) System.out.print( curValue + “ “ ); } for each value in data
Enhanced for Loop void dawBalloons( ) { for (int i = 0; i < balloons.length; i = i + 1) Balloon b = balloons.get( i ]); b.draw(); } void drawBalloons( ) { for (Balloon b : balloons ) b.draw(); } for each balloon ...