Basics

Data types and variables

  1. Types and variables
  2. Sizes and ranges
  3. Type casting
  4. Primitive and reference types
  5. Final variables
  6. Floating-point types

Control flow statements

  1. Conditional statement
  2. Ternary operator
  3. The while and do-while loops
  4. The for-loop
  5. Branching statements
  6. Switch statement
  7. Switch expression

Operations on primitive types

  1. Arithmetic operations
  2. Integer types and operations
  3. Floating-point types
  4. Boolean and logical operations
  5. Relational operators
  6. Increment and decrement
  7. Characters
  8. Bitwise and bit-shift operations
  9. Operator Precedence in Java

Code organization

Code style

  1. Comments
  2. Coding style conventions
  3. Naming variables

Methods

  1. Calling a method
  2. Declaring a method
  3. The main method
  4. Overloading
  5. Arrays as parameters
  6. Functional decomposition

Object-oriented programming

Classes and objects

Classes and members
  1. Defining classes
  2. Instance methods
  3. Constructor
  4. Multiple constructors
  5. Static members
  6. Initialization blocks
Access control
  1. Access modifiers
  2. Getters and setters
  3. Protected modifier
Objects
  1. Objects
  2. Boxing and unboxing

Class hierarchies

Building class hierarchies
  1. Inheritance
  2. The keyword super
  3. Referencing subclass objects
The base class
  1. The Object class
Overriding methods
  1. Hiding and overriding
  2. Polymorphism
Interfaces and abstract classes
  1. Interface
  2. Default methods
  3. Comparable
  4. Abstract class
  5. Abstract class vs interface

Annotations

  1. Annotations basics
  2. Detecting annotations
  3. Custom annotations and types of annotations

Nested classes

  1. Anonymous classes

Enumerations

  1. Enums in Java
  2. Fields and methods in enum

Source structure

  1. Package
  2. Modules

Generics

  1. Introduction to generic programming
  2. Generics and Object
  3. Generic methods
  4. Type Bounds
  5. Wildcards
  6. Type Erasure
  7. Reification

Functional programming

Functions

  1. Lambda expressions
  2. Method references
  3. Functional interfaces
  4. Standard functional interfaces
  5. Optional
  6. Function composition

Functional streams

  1. Functional data processing with streams
  2. Infinite streams
  3. Stream filtering
  4. Reduction methods
  5. Taking elements
  6. Map and flatMap
  7. Collectors
  8. Grouping collectors
  9. Streams of primitives
  10. Stream pipelines
  11. Parallel streams

Working with data

Arrays

  1. Array
  2. Iterating over arrays

File processing

  1. Files
  2. Managing files
  3. Reading files
  4. Writing files

Collections

  1. What are collections
  2. The Collections Framework overview
  3. The List interface
  4. ArrayList
  5. The Set interface
  6. The Map interface
  7. Iterator and Iterable
  8. The utility class Collections
  9. Comparator

IO streams

  1. What are streams
  2. Input streams
  3. Output streams

Multithreading

Basics of threads

  1. Threads as objects
  2. Custom threads
  3. Thread management
  4. Exceptions in threads
  5. States of a thread

Synchronization

  1. Shared data
  2. Thread synchronization

Task processing

  1. Executors
  2. Interruptions
  3. Callable and Future
  4. Timers

Thread-safe collections

  1. Collections and thread-safety
  2. CopyOnWriteArrayList
  3. Thread-safe maps
  4. Concurrent queues

Errorless code

Exception handling

  1. What is an exception
  2. NPE (NullPointerException)
  3. Hierarchy of exceptions
  4. Throwing exceptions
  5. Exception handling

Logging

  1. Standard logger
  2. Introduction to logging in Java
  3. Logback

Java Internals

JVM

  1. Write, compile, and run
  2. JVM, JRE, and JDK
  3. JVM components

Inside the JVM

  1. Running programs on your computer
  2. Class files and Bytecode
  3. Class Loader
  4. Call stack
  5. Stack trace
  6. Object interning

Reflection

  1. Reflection
  2. Retrieving Class instances
  3. Dealing with modifiers
  4. Manipulating fields and methods

Additional instruments

Date and time

  1. LocalTime
  2. LocalDate
  3. LocalDateTime

JDBC

  1. Connecting to a database with JDBC
  2. JDBC Statements
  3. JDBC Prepared Statements
  4. JDBC Transactions

Networking

  1. Sockets

Serialization

  1. Serialization basics
  2. Custom serialization

Regular expressions

  1. Regexps in Java
  2. Sets, ranges, alternations
  3. Quantifiers
  4. Shorthands
  5. Regexes in programs
  6. Patterns and Matcher
  7. Match results
  8. Replacing characters