PROGRAMMING COURSE
One complete Java course: syntax and types, then real object orientation, generics, collections, streams, concurrency, and the build and test tooling a Java job assumes.
public class Main {
public static void main(String[] args) {
System.out.println("Hello from Java");
}
}COURSE CURRICULUM
Work through a section at a time, or jump straight to the concept you need.
Tell apart the JVM, the JRE and the JDK, say which piece does each job, and check from the command line which of them your machine has.
Install a vendor build of the JDK, confirm from the shell and from Java itself which one is active, and point your editor at that same install.
Compile Java sources with javac and launch them with java, controlling output directories, the classpath, and the arguments that reach main.
Predict the exact set of .class files javac writes for a source file, and how packages, directories and run-time class lookup fit together.
Write the three kinds of Java comment, tell a legal identifier from an illegal one, and name classes, methods, variables and constants the way Java expects.
Write a correct main method, explain why each word in its signature is required, and read command-line arguments out of the String array you are handed.
Print with print, println and printf, control width and rounding with format specifiers, and read typed lines and numbers using Scanner.
Turn a javac error or a stack trace into a precise location and claim, then confirm the fix against the JDK API docs for the method that failed.
Declare, initialize and scope Java variables correctly, and use final and static final to create write-once locals and named constants the compiler enforces.
Name all eight Java primitives with their bit widths, state each one's exact range, and explain why the signed ranges are asymmetric.
Assign int to long without a cast, force 64-bit arithmetic with an L suffix or cast, and spot expressions that wrap before they are widened.
Write conditions Java accepts: combine comparisons with !, &&, || and ^, know why & differs from &&, and why an int can never stand in for a boolean.
Work with char as a 16-bit UTF-16 code unit, tell char apart from String, and read or count Unicode code points that need a surrogate pair.
Predict the exact type var infers from an initialiser, use it where that type is obvious, and recognise the declarations where Java rejects var.
Convert primitives on purpose: predict what a narrowing cast keeps and destroys, and choose truncation, rounding or a checked conversion deliberately.
Predict integer / and % results for negative operands, and spot the int expressions that silently wrap past 2147483647.
Predict where the compiler inserts valueOf and intValue calls, so wrapper == results, null unboxing crashes and overload picks stop surprising you.
Explain what a Java variable slot actually stores, predict when two names share one object, and trace a NullPointerException to the reference that held null.
Predict and control the result of Java arithmetic expressions: integer division, remainder signs, numeric promotion, overflow, and division by zero.
Use +=, -=, *=, /= and friends correctly by predicting the hidden cast, the grouped right-hand side, and the single evaluation of the target.
Combine boolean tests with &&, ||, and !, and predict exactly which operands Java evaluates so a guard protects the code beside it.