First Steps[edit]
Prepare a Directory[edit]
john-williams@codermerlin:~/$ cd
john-williams@codermerlin:~/$ mkdir AP-Practice
john-williams@codermerlin:~/$ cd AP-Practice
john-williams@codermerlin:~/AP-Practice$ mkdir HelloWorld
john-williams@codermerlin:~/AP-Practice$ cd HelloWorld
john-williams@codermerlin:~/AP-Practice/HelloWorld$
Create a New File[edit]
john-williams@codermerlin:~/AP-Practice/HelloWorld$ emacs HelloWorld.java
Enter the following text:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}

- Names matter - The file name MUST match the name of the public class
- An executable must have an entry point which is a public, static function named main, accepting a single argument, an array of strings.
Compilation[edit]
A Java program can be compiled with the javac command. Note that the argument to the command is the file to be compiled, including the ".java" suffix. This will produce a file with the ".class" suffix.
john-williams@codermerlin:~/AP-Practice/HelloWorld$ javac HelloWorld.java
Execution[edit]
A Java program may be executed with the java command. Note that the argument to the command is the file to be executed, excluding the ".class" suffix.
john-williams@codermerlin:~/AP-Practice/HelloWorld$ java HelloWorld
Short Cuts[edit]
We can combine these two commands in bash as follows:
john-williams@codermerlin:~/AP-Practice/HelloWorld$ javac HelloWorld.java && java HelloWorld
We can perform the same actions in emacs using the Async Shell Command and typing in the same line as we used in bash. The Async Shell Command can be invoked in emacs as ALT-SHIFT-&. Then, type: javac HelloWorld.java && java HelloWorld
ENTER.
In order to repeat the command in emacs, again enter the key combination ALT-SHIFT-& followed by ↑ ENTER.
Macros[edit]
While we can enter this command very quickly, we can do even better by defining a macro within emacs. Our macro will first save the file to preserve our changes, and then compile and execute the program. We beginning defining a macro with F3 and complete the definition with F4. We can then execute the macro with F4.
Thus, the complete sequence for defining the macro is:
F3 CONTROL-X CONTROL-S ALT-SHIFT-& ↑ ENTER F4
We can now execute the macro by simply pressing F4.
Language Basics[edit]
Semicolons[edit]
Semicolons are required at the end of each statement
Static Typing[edit]
- Java is statically typed
- Variables must be declared before they can be used, including the type
- Types define the possible values of the variable and the operations that may be performed upon it
- Values do not always have to be assigned when a variable is declared, though it is best practice to do so. In some cases, a reasonable default value will be assigned by the compiler.
Primitive Types[edit]
NOTE: All primitive types begin with a lowercase letter
- byte (8-bit)
- short (16-bit)
- int (32-bit)
- long (64-bit)
- boolean
- char (16-bit unicode)
- float
- double
Common Errors[edit]
int gpa;
gpa = 3.75;
float f = 10.5;
byte b = -128;
b -= 1;
Implicit Casting[edit]
- Magnitude of numeric types is preserved (precision may be lost)
Explicit Casting[edit]
- Required when magnitude of numeric type may not be preserved
Division by Zero[edit]
- Compare and contrast integer vs floating point
New[edit]
The new keyword is not used for primitive types
Primitive numeric types[edit]
- Primitive numeric types overflow and underflow silently