Course Outlines
- Java Fundamentals
- The History and Philosophy of Java
- Object-Oriented Programming
- The Java Development Kit
- A First Simple Program
- Handling Syntax Errors
- A Second Simple Program
- Another Data Type
- Two Control Statements
- Create Blocks of Code
- Semicolons and Positioning
- Indentation Practices
- The Java Keywords
- Identifiers in Java
- The Java Class Libraries
- Introducing Data Types and Operators
- Why data Types Are Important
- Java’s Primitive Types
- The Boolean Type
- Literals
- A Close Look at Variables
- The Scope and Lifetime of Variables
- Operators
- Arithmetic Operators
- Relational and Logical Operators
- The Assignment Operator
- Shorthand Assignments
- Type Conversion in Assignments
- Casting Incompatible Types
- Operator Precedence
- Expressions
- Program Control Statements
- Input Characters from the Keyboard
- The if Statement
- Nested ifs
- The if-else-if Ladder
- The switch Statement
- Nested switch Statements
- The for Loop
- Some Variations on the for Loop
- The Infinite Loop
- Loops with No Body
- Declaring Loop Control Variables Inside the for Loop
- The Enhanced for Loop
- The while Loop
- The do-while Loop
- Use break to Exit a Loop
- Use break as a Form of goto
- Use continue
- Nested Loop
- Introducing Classes, Objects, and Methods
- Class Fundamentals
- How Objects Are Created
- Reference Variables and Assignment
- Methods
- Returning from a Method
- Returning a Value
- Constructors
- Parameterized Constructors
- Adding a Constructor to the Vehicle Class
- The new Operator Revisited
- Garbage Collection
- The this keyword
- More Data Types and Operators
- Arrays
- Multidimensional Arrays
- Alternative Array Declaration Syntax
- Assigning Array References
- Using the length Member
- The For-Each Style for Loop
- Strings
- Using Command-Line Arguments
- Using Type Inference with Local Variables
- The Bitwise Operators
- The ? Operator
- A Close Look at Methods and Classes
- Controlling Access to Class Members
- Pass Objects to Methods
- Returning Objects
- Method Overloading
- Overloading Constructors
- Recursion
- Understanding static
- Introducing Nested and Inner Classes
- varargs: Variable-Length Arguments
- Inheritance
- Inheritance Basics
- Member Access and Inheritance
- Constructors and Inheritance
- Using super to Call Superclass Constructors
- Using super to Access Superclass Members
- Creating a Multilevel Hierarchy
- When Are Constructors Executed?
- Superclass References and Subclass Objects
- Method Overriding
- Overridden Methods Support Polymorphism
- Why Override Methods?
- Using Abstract Methods?
- Using Abstract Classes
- Using final
- The Object Class
- Packages and Interfaces
- Packages
- Packages and Member Access
- Understanding Protected Members
- Importing Packages
- Java’s Class Library Is Contained in Packages
- Interfaces
- Implementing Interfaces
- Using Interfaces References
- Variables in Interfaces
- Interfaces Can Be Extended
- Default Interface Methods
- Use static Methods in an Interface
- Private Interface Methods
- Final Thoughts on Packages and Interfaces
- Exception Handling
- The Exception Hierarchy
- Exception Handling Fundamentals
- The Consequences of an Uncaught Exception
- Using Multiple catch Statements
- Catching Subclass Exceptions
- Try Blocks Can Be Nested
- Throwing and Exception
- A Closer Look at Throwable
- Using finally
- Using throws
- Three Additional Exception Features
- Java’s Built-in Exceptions
- Creating Exception Subclasses
- Using I/O
- Java’s I/O is Built upon Streams
- Byte Streams and Character Streams
- The Byte Stream Classes
- The Character Stream Classes
- The Predefined Streams
- Using the Byte Streams
- Reading and Writing Files using Byte Streams
- Automatically Closing a File
- Reading and Writing Binary File
- Random-Access Files
- Using Java’s Character-Based Streams
- File I/O Using Character Streams
- Using Java’s Type Wrappers to Convert Numeric to Strings
- Multithreaded Programming
- Multithreaded Fundamentals
- The Thread Class and Runnable Interface
- Creating a Thread
- Creating Multiple Threads
- Determining When a Thread Ends
- Thread Priorities
- Synchronization
- Using synchronized Statement
- Thread Communication Using notify(), wait(), and notifyAll()
- Suspending, Resuming, and Stopping Threads
- Enumerations, Autoboxing, Static Import, and Annotations
- Enumerations
- Java Enumerations Are Class Types
- The values() and valueOf() Methods
- Constructors, Methods, Instance Variables, Enumerations
- Enumerations Inherit Enum
- Autoboxing
- Type Wrappers
- Autoboxing Fundamentals
- Autoboxing and Methods
- Autoboxing/Unboxing Occurs in Expressions
- Static Import
- Annotations
- Generics
- Generic Fundamentals
- A Simple Generic Example
- Bounded Types
- Using Wildcard Arguments
- Bounded Wildcards
- Generic Methods
- Generic Constructors
- Generic Interfaces
- Raw Types and Legacy Code
- Type Inference with the Diamond Operator
- Local Variable Type Inference and Generics
- Erasure
- Ambiguity Errors
- Some Generic Restrictions
- Continuing Your Study of Generics
- Lambda Expressions and Method References
- Introducing Lambda Expressions
- Block Lambda Expressions
- Generic Functional Interfaces
- Lambda Expressions and Variable Capture
- Throw an Exception from Within a Lambda Expression
- Methods References
- Constructor References
- Predefined Functional Interfaces
- New Features in Java 17
- Restore or Rebuild the "Always-Strict Floating-Point" Semantics
- Enhanced faster the "pseudo-Random" Number Generators
- New macOS rendering pipelines
- macOS/AArch64 Port
- Dismiss the Applet API for Removal
- JDK Internals Encapsulate strongly
- Switch Pattern Matching (Preview)
- Activation of the Removal RMI
- Generate sealed Classes
- Removal of the Experimental AOT and JIT Compiler
- Remove the Security Manager.
- Foreign Functions and Memory API (Incubator)
- Vector API (Second Incubator)
- Deserialization Filters Based on Context (content-specific)
Course Agenda
Schedule
Day 5
9.00am -10.15am
Module 14 (cont.)
10.15am -10.30am
Morning tea break
10.30am -12.00pm
Module 14 (cont.)
12.00pm - 01.00pm
Lunch
01.00pm - 3.15pm
Module 15
3.15pm - 3.30pm
Afternoon tea break
3.30pm - 5.00pm
Programme scope, delivery arrangements and suitability are confirmed during enquiry.