`==` compares object references, checking if both objects point to the same memory location. The `equals()` method compares the actual content of objects, checking for logical equality. By default, `equals()` is inherited from `Object` and behaves like `==` unless overridden.
The key object-oriented principles in Java are encapsulation, inheritance, polymorphism, and abstraction. Encapsulation bundles data and methods, inheritance allows classes to derive from others, polymorphism enables dynamic method invocation, and abstraction provides simplified interfaces.
The `final` keyword in Java is used to declare constants (variables that can't be changed), prevent method overriding (methods can't be overridden in subclasses), and prevent inheritance (classes can't be subclassed).
JDK (Java Development Kit) is a full-featured software development kit for Java, including the compiler and other tools. JRE (Java Runtime Environment) provides libraries, Java Virtual Machine (JVM), and other components to run Java applications. JVM is an abstract machine that executes Java bytecode.
A constructor is a special method in Java used to initialize objects. It has the same name as the class and does not return any value. Constructors are called when an instance of the class is created and can be overloaded to provide multiple ways to initialize objects.