Programming in Java
Please choose a learning level that corresponds to your experience in Java or another programming language (or lack thereof).
If you have never programmed before,
If you have programmed using high-syntax programming language with object-orientation such as C++ (using OOP),
see Java as Your Second Language From a High-Syntax, Object-Oriented Language.
If you have programmed before, but using a simpler, abstracted language, such as Go or Python without classes, without object-orientation,
see Java as Your Second Language From a Low-Syntax, Abstracted Language w/o Object-Orientation.
If you have already learned the basics of Java,
see Advanced Java After Having Already Learned Java Syntax & Control Structures.
If you think you are a master in Java and computer science in general,
try Incredibly Advanced Java Structures, Techniques, and Design.
If you think you are the absolute best programmer in the world,
try again.
Java as Your First (Programming) Language
Introduction to Computer Hardware
For those of you starting out in the programming world, a brief description of the hardware of a computational machine is necessary.
See here? to read about the JVM and how Java compiles.
Java as Your Second (Programming) Language
From a High-Syntax, Object-Oriented Language
From a Low-Syntax, Abstracted Language w/o Learning Object-Orientation
Advanced Java After Having Already Learned Java Syntax & Control Structures
If you have already learned object oriented concepts, skip to the next section.
Object-Oriented Programming Concepts
These sections assume that you have read through the Introduction to Object-Oriented Programming page.
Encapsulation
Encapsulation is the idea that a class contains both fields (variables and constants), which show state, and methods, which dictate the functionality. Encapsulation also makes clear the idea that methods and fields are tightly bound to the object that they represent, and should be implemented as such.
Nearly all fields should be assumed to be private unless there is a very good reason to make them otherwise.
Methods are either generally public or private, depending on the use. Assume that the client would like it to be as easy as possible for them, so provide functionality that is complex enough to be useful, but also not so complicated to use and understand.
Inheritance
Oftentimes, classes will reuse code from another class and build on it. For example, there might a generic Car
class, which several others might subclass and create additional functionality in their classes, which might be Porsche
and Mustang
.
Polymorphism
The Ternary Operator
When assigning a value to a variable, sometimes, if the value being assigned is subject to a condition, the ternary operator will simplify code, save space, and enhance comprehension, but only when used properly. The operator transforms this:
int integer; if (newIntegerWanted()) integer = randomInteger(); else integer = 0;
to:
int integer = newIntegerWanted() ? randomInteger() : 0;