
Begin with the instructor's overview, outlining a full theoretical prep for the OCA and OCP exams, with chapter guidance, hands-on coding, and mock exams to sharpen exam-ready skills.
Explore the environment for Java development by identifying the JDK and JRE components, mastering commands javac, java, jar, and javadoc, and understanding cross-platform class bytecode.
Explore the Java main method and its public static void and String[] args signature, showing how programs start and how command-line arguments are processed.
Explore how Java packages organize classes as folders, how imports, fully qualified names, and wildcards enable usage, and how to create and structure custom packages for reliable code.
Explore Java data types, including boolean, byte, short, int, long, float, double, and char, along with wrapper classes and strings, covering default values, ranges, suffix rules, bases, and parsing.
Local variable type inference uses the var keyword to let the compiler infer a type from the assigned value, applies only to local variables, and the inferred type cannot change.
Master the assignment operator in Java, its lowest precedence, auto and explicit casting, compound forms, and the fact that assignment returns a value—watch exam tricks with if statements.
Learn how Java comparison operators return booleans, including equals and reference equality, relational operators, instanceof, and short-circuit behavior of logical and ternary operators.
Master flow control with if-else statements, boolean expressions, and optional else if and else blocks. See an example using a, b, c and a string s to show evaluation order.
Explore the switch statement in Java 8 syntax and its readability benefits over if-else. Learn break and default behavior, allowed types, and how grouping values works, with practical grid examples.
Master the do-while loop in Java, learning that its body runs at least once, differs from a while loop, and supports break, continue, and nested patterns.
Master strings and string methods in Java, including creation, concatenation rules, length, indexOf, substring, case conversion, equals, equalsIgnoreCase, trimming, replacing, and formatting.
Explore stringbuilder in Java, a mutable string helper with append, insert, delete, reverse. Learn how it differs from strings, and that substring does not mutate the builder.
Explore how the Java string pool stores literals in memory, how references reuse a single object, and how compile-time concatenation, runtime methods, intern, and new affect memory usage.
Explore how to declare and initialize arrays in Java, including various syntax forms, printing arrays, and understanding that arrays don't implement the equals method and have a length property.
Examine two dimensional arrays as arrays of arrays in Java, with zero-based indices and varying subarray lengths. Use nested for loops or for-each loops to access and print elements.
Compare local and instance variables, covering scope, initialization, and default values. Explain final and effectively final, and outline access modifiers, plus how final references differ from mutable content.
Explore variable arguments (varargs) and learn that a method can have one varargs parameter, which must be last, enabling a method to accept multiple strings or a string array.
Learn how static members belong to the class rather than any instance, how static fields share state, how static methods are invoked, and how static blocks and imports initialize constants.
Explore boxing and unboxing in Java, converting primitives to wrapper classes and back, including explicit boxing, auto boxing, and unboxing, with implications for overload resolution.
Define constructors as special methods called during object creation, matching the class name and lacking a return type. Explore overloading, default constructors, and private constructors with practical examples.
Learn how to use this and super in Java constructors to call other constructors or superclass constructors, and master the rules to avoid cycles and compile errors.
Explore the order of initialization in Java, showing how superclass initialization, static fields, and static initializers run once, followed by instance variables, initializers, and constructors.
This course is designed to give you full theoretical preparation to get you certified in Java.
In one single course you will find all you need in order to pass Oracle exams and get following certifications:
Oracle Certified Associate, Java SE 8 Programmer (1Z0-808 exam)
Oracle Certified Professional: Java SE 17 Developer (1Z0-829 exam)
Oracle Certified Professional: Java SE 21 Developer (1Z0-830 exam)
IMPORTANT! Since Oracle released Java SE 21 Developer exam, I highly recommend my students to take 1Z0-830, rather than 1Z0-830. The preparation is almost identical, but you'll get 30 minutes more on your exam and you'll be certified in latest LTS technology.
If you are a candidate for the OCA of Foundations exam, you should only watch the lessons which are marked with [OCA], and if you are aspiring to get the OCP certificate, you should watch all lessons.
After you complete the course, you should practice and test your knowledge and problem solving skills with mock exams. My personal recommendation is to use Enthuware, but there are plenty of other resources out there as well.
This course will cover following topics:
Building Blocks of Java program [OCA]
Operators [OCA]
Flow Control [OCA]
Strings [OCA]
Arrays [OCA]
Date and Time [OCA]
Methods [OCA]
Class Design [OCA]
Abstract Classes & Interfaces [OCA]
Lambdas & Functional Programming [OCA]
Collections [OCA]
Exceptions [OCA]
Math APIs [OCP]
Beyond Classes [OCP]
Streams [OCP]
Localization [OCP]
Modules [OCP]
Concurrency [OCP]
I/O [OCP]
JDBC [OCP]
Get Certified for Java SE 21
All presentation materials are available for download as PDF files!
I strongly encourage you to try out all the examples given in the course, and also to play around with the code to further explore the possibilities coding in Java. You can do this on your local computer by downloading JDK 8 (for OCA candidates) or JDK 17 or JDK 21 (for OCP candidates) from Oracle or OpenJDK and using your favorite IDE. I recommend IntelliJ, but Eclipse or NetBeans will do the job as well.
Even quicker option is to use online compilers. My favorites are JDoodle and OneCompiler. This is the fastest way to try out small pieces of code.
My name is Luka Popov and I’ll be your instructor for this course. I am fully certified Java Developer (Oracle Certified Associate: Java SE 8 Programmer, Oracle Certified Professional: Java SE 17 Developer), with PhD in theoretical physics. I have 10+ years of teaching experience on university level, and 5+ years as a professional software developer. Currently I work as a senior Java developer in a telecom company.
Have a nice learning and don’t hesitate to contact me if you have any further questions.