Java 11 for Complete Beginners
Learn modern Java programming from scratch
Watch Promo Enroll in Course
Learn how to write computer programs in the Java language, from scratch.
Building on the success of our free popular Java for Complete Beginners course, this new course uses Java version 11-12 and covers even some quite advanced modern additions to Java, like the stream API, lambda expressions and method references.
Lots of exercises are included; we'll also create several projects during the course, including two desktop Swing apps.
Your Instructor
I worked as a professional developer for 14 years for several different companies including Proquest, CSC and AT&T before going full-time as a course creator. I currently live in Italy, although as a native Brit you get to enjoy (or put up with!) my British English accent while following your chosen courses.
In my spare time I like to write science fiction, often in cafes, and I'm a fan of old books.
Course Curriculum
-
StartWhat is Java (5:45)
-
StartHow Java Works (3:26)
-
StartInstalling the JDK (3:19)
-
StartInstalling Eclipse (8:47)
-
StartCreating a Class (8:35)
-
StartRunning Your First Program (6:34)
-
StartThe Structure of a Java Project (5:13)
-
StartA Closer Look at Hello World (6:15)
-
StartThe Main Method (6:35)
-
StartFormatting and Code Blocks (5:10)
-
StartAuto-format (7:52)
-
StartInteger Variables (6:16)
-
StartAddition (9:01)
-
StartOutputting Variables and Text (6:58)
-
StartDoubles (4:05)
-
StartArithmetic (6:41)
-
StartVariable Assignment (5:37)
-
StartCalculations (7:50)
-
StartCoding Tips (9:15)
-
StartHow to Get the Most From This Course (7:24)
-
StartConverting Temperatures (6:37)
-
StartWhile Loops (6:20)
-
StartLoop Conditions (7:48)
-
StartSome Comments on While (8:21)
-
StartIncrement and Decrement (10:02)
-
StartPostfixAndPrefix (8:57)
-
StartPostfix and Prefix Expressions (9:32)
-
StartMore While Loops (7:03)
-
StartFor loops (8:50)
-
StartBoolean (5:25)
-
StartEquality (8:57)
-
StartIf (4:10)
-
StartUsing If (5:37)
-
StartIf Else (6:40)
-
StartIf Else If (9:10)
-
StartMore If Else If (7:04)
-
StartOne Line If (6:17)
-
StartConverting If Else to Switch (8:35)
-
StartSwitch (7:51)
-
StartSwitch Fallthrough (8:40)
-
StartThe String Equals Method (8:03)
-
StartThe Final Keyword (7:02)
-
StartBreak (5:30)
-
StartChecking Passwords (5:56)
-
StartPassword Loops (5:46)
-
StartDo While Loops (7:39)
-
StartNot (8:06)
-
StartNot Equal (8:49)
-
StartVariable Scope (8:06)
-
StartChecking Passwords with Do While (6:01)
-
StartFlags (8:22)
-
StartLimited Attemps (8:42)
-
StartString Methods (5:37)
-
StartCase Insensitivity Exercise (1:52)
-
StartCase Insensitivity Exercise Solution (8:19)
-
StartStream Loops (5:45)
-
StartArrays (5:22)
-
StartArrays of Strings (4:11)
-
StartIterating Over Arrays (5:26)
-
StartIterating with IntStream (5:47)
-
StartPrimitive Arrays A Closer Look (7:50)
-
StartPrimitive Arrays Exercise Solution (8:45)
-
StartFor Each Loops (5:00)
-
StartStream For Each Loops (7:33)
-
StartPrimitive Arrays A Closer Look (5:39)
-
StartNon Primitive Arrays (8:44)
-
StartMultidimensional Arrays (8:14)
-
StartWorking With Multidimensional Arrays (6:17)
-
StartMultidimensional Array Exercise (9:25)
-
StartMultidimensional Arrays Exercise Solution (5:54)
-
StartMultiplication Tables (10:19)
-
StartClasses and Objects (6:16)
-
StartInstance Variables (5:44)
-
StartMethods (6:41)
-
StartAccessing Instance Variables (4:13)
-
StartMenu Example (5:11)
-
StartMenu Example Implementation (7:38)
-
StartReturn Values (6:47)
-
StartMenu Returning String (9:02)
-
StartMethod Parameters (6:56)
-
StartMultiple Parameters (7:10)
-
StartGetters and Setters (9:40)
-
StartThis (5:25)
-
StartPublic and Private (5:12)
-
StartWindow Example (4:11)
-
StartWindow Example Implementation (6:57)
-
StartConstructors (7:09)
-
StartConstructors with Parameters (5:00)
-
StarttoString (7:55)
-
StartAutomatically Generating Classes (7:35)
-
StartHangman (4:32)
-
StartTop Down Design (5:22)
-
StartA RandomWord Class (7:13)
-
StartRandom (9:34)
-
StartThe char Type (10:00)
-
StartChar Arrays (7:54)
-
StartStringBuilder (8:59)
-
StartUsing StringBuilder (3:06)
-
StartThe Ternary Operator (9:40)
-
StartUsing the Ternary Operator (5:47)
-
StartFilling in Characters (8:36)
-
StartClosing the Scanner (3:12)
-
StartChecking User Input (6:12)
-
StartLimited Tries (9:57)
-
StartFurther Practice (6:31)
-
StartRock Paper Scissors (2:42)
-
StartA Game Object (4:48)
-
StartGame Objects (5:33)
-
StartNaming Objects (7:47)
-
StartChoosing Objects (1:58)
-
StartComparing Objects (7:49)
-
StartCompareTo (6:44)
-
StartThe Comparable Interface (5:10)
-
StartUserPicksAnObject (9:09)
-
StartWinDrawLose (5:29)
-
StartGameLoop (2:44)
-
StartAccouncing the Winner (4:23)
-
StartSome Comments on Rock Paper Scissors (4:35)
-
StartPackages (8:48)
-
StartAccessModifiers (8:14)
-
StartThe API Docs (4:59)
-
StartMain Methods (8:28)
-
StartUpcasting (6:29)
-
StartDowncasting (7:18)
-
StartObject (7:17)
-
StartAbstract Classes (9:06)
-
StartInterfaces (11:45)
-
StartInterface Inheritance (5:45)
-
StartInterface Default Methods (5:14)
-
StartMultiple Inheritance (8:27)
-
StartAbstract Class Example (6:36)
-
StartInterface Example (7:24)
-
StartCombining Code Exercise (3:24)
-
StartAn Egg Timer (7:08)
-
StartAbout Interfaces (4:17)
-
StartStarting Point and GitHub (2:20)
-
StartButton Clicks (7:33)
-
StartChanging Color (6:27)
-
StartNaive App Control (7:14)
-
StartAbout References (5:10)
-
StartNaive App Control Review (4:47)
-
StartColor Button Listener (3:52)
-
StartWhats Wrong With Our Swing App (2:08)
-
StartDecoupling Using Interfaces (8:07)
-
StartEnum (7:45)
-
StartEnum Useful Methods (6:25)
-
StartEnum Constructors (6:41)
-
StartEnum and Switch (2:43)
-
StartEnum Exercise (2:11)
-
StartEnum Exercise Solution (5:24)
-
StartImproving Rock Paper Scissors (9:54)
-
StartImplementing the Beats Method (3:04)
-
StartUsing Beats (3:30)
-
StartEliminating Unecessary Code (7:23)
-
StartIntroducingExceptions (4:33)
-
StartTry Catch (8:52)
-
StartSome Exception Exercises (9:34)
-
StartThrowing Exceptions (6:45)
-
StartThe Call Stack (8:33)
-
StartThrowing Runtime Exceptions (5:19)
-
StartCustom Exceptions (9:26)
-
StartHandling Multiple Exceptions (8:25)
-
StartCatching Multiple Exceptions (8:26)
-
StartException Flow Control (9:31)
-
StartNullPointerException (5:25)
-
StartAutoCloseable (7:12)
-
StartConstructor Exceptions and Close (8:19)
-
StartHandlingConstructorAndCloseExceptions (6:35)
-
StartTryWithResources (6:10)
-
StartTryWithResourcesExample (5:51)
-
StartIntroducing the Game of Life (4:24)
-
StartBasic Swing App Again (5:32)
-
StartPainting and Drawing (9:13)
-
StartAbout the Grid (5:03)
-
StartCalculating Margins (7:00)
-
StartDrawing the Grid (8:10)
-
StartNumeric Class Methods (11:25)
-
StartFilling Cells (9:05)
-
StartFront End vs Back End (3:15)
-
StartThe Model (6:20)
-
StartDisplaying the Model (8:36)
-
StartHandling Mouse Clicks (8:42)
-
StartConverting Mouse Coordinates (8:11)
-
StartHandling Key Presses (7:14)
-
StartRandomizing the Grid (6:17)
-
StartClearing the Grid (5:44)
-
StartIterating Over Cells (6:31)
-
StartCounting Neighbours (11:14)
-
StartLife and Death (4:00)
-
StartImplementing the Game of Life Algorithm (5:31)
-
StartFixing Resize (2:54)
-
StartGame of Life Conclusion (5:26)
-
StartThe File Class (5:01)
-
StartReading and Writing Text Files (8:55)
-
StartFile Locations (4:24)
-
StartReading Text Files Line By Line (10:27)
-
StartWriting Text Files Line By Line (7:36)
-
StartSerializing Objects (8:04)
-
StartDeserializing Objects (6:26)
-
StartTransient (1:59)
-
StartSerial Version UIDs (9:48)
-
StartSerializing Multiple Objects (6:06)
-
StartWriting Binary Files (9:34)
-
StartReading Binary Files (6:36)
-
StartReading Java Class Files (11:47)
-
StartEndianness (8:26)
-
StartFile Parsing Exercise (8:22)
-
StartFile Parsing Exercise Solution (10:32)
-
StartA Simple Hierarchy (6:09)
-
StartA Wrapper Class (5:23)
-
StartIntroducing Generics (6:40)
-
StartType Erasure (6:49)
-
StartA Pair Class (7:59)
-
StartAn Array Class (11:33)
-
StartGeneric Methods (6:43)
-
StartGeneric Bounds (10:22)
-
StartSuper and PECS I (6:35)
-
StartSuper and PECS 2 (6:08)
-
StartUtil Copy Exercise (7:56)
-
StartAdd All Exercise (9:35)
-
StartArrayList (4:08)
-
StartIterating through ArrayList (6:51)
-
StartCustom Objects in ArrayLists (5:27)
-
StartSorting Lists (3:23)
-
StartImplementing Comparable (4:07)
-
StartHow Comparable Works (5:08)
-
StartComparable Example (7:51)
-
StartComparators (11:01)
-
StartArrayList Exercise (11:41)
-
StartLinkedList (7:29)
-
StartThe List Interface (7:55)
-
StartInitializing Lists With Lists (6:24)
-
StartStatic Methods in Interfaces (2:32)
-
StartVariable Arguments (6:00)
-
StartTiming List Operations Exercise (5:49)
-
StartTiming List Operations Solution (9:10)
-
StartTime Complexity (10:41)
-
StartInstanceof (6:22)
-
StartEquals (11:03)
-
StartRemoving Items From Lists (8:07)
-
StartConcurrentModificationException (3:01)
-
StartIterators (5:36)
-
StartGetting Creative With Iterators (3:09)
-
StartModifying Lists While Iterating (5:46)
-
StartRing Buffer Exercise (4:45)
-
StartRing Buffer Solution (8:22)
-
StartImplementing Iterable (7:49)
-
StartCircular Iterator Exercise (4:06)
-
StartCircular Iterator Solution (6:31)
-
StartForEachAndIterators (1:47)
-
StartHashSet (8:00)
-
StartHashing Algorithms (3:51)
-
StartThe hashCode Method (6:33)
-
StartUnionAndIntersection (7:29)
-
StartRemoveAll (1:58)
-
StartLinkedHashSet (4:52)
-
StartTreeSet (8:49)
-
StartSet and SortedSet (3:28)
-
StartCollections Review (6:56)
-
StartSets And Lists Exercise (10:42)
-
StartSets And Lists Solution 1 (8:35)
-
StartSets and Lists Solution 2 (10:39)
-
StartSets And Lists Solution 3 (8:54)
-
StartHashMaps (9:37)
-
StartStatic Imports (4:07)
-
StartInitializing Maps (8:52)
-
StartIterating Through Maps (9:03)
-
StartOrdered Maps (5:15)
-
StartCustom Objects in Maps Exercise (2:49)
-
StartCustom Objects in Maps Solution (13:24)
-
StartLists of Sets (10:45)
-
StartMapsOfLists (9:27)
-
StartComplex Data Structures (5:26)
-
StartCollectionsAndInheritance (8:57)
-
StartCollections Rota Exercise (12:19)
-
StartPersonClass (8:55)
-
StartLoadingTheData (7:00)
-
StartRota Class (8:22)
-
StartImplementing the Rota (7:15)
-
StartVital Skill Set (5:23)
-
StartRota Algorithm (10:02)
-
StartTestingTheRotaAlgorithm (8:28)
-
StartExercise Conclusion (3:54)
-
StartAdding People (5:25)
-
StartCustom Objects in Maps Exercise (2:49)
-
StartCustom Objects in Maps Solution (13:24)
-
StartLambda Expression Example (6:22)
-
StartFunctional Interfaces (5:48)
-
StartA Lambda Expression From Scratch (7:16)
-
StartLambda Expressions With Single Parameters (7:49)
-
StartMultiple Parameter Lambdas (6:37)
-
StartReturn Values in Lambdas (6:06)
-
StartLambdasAndCapture (5:19)
-
StartFunctional Programming (4:44)
-
StartUnmodifiable Lists (8:15)
-
StartPredicates (9:39)
-
StartFiltering Lists (8:26)
-
StartFunction (9:27)
-
StartReplaceAll (7:00)
-
StartLambdaExercise (4:20)
-
StartMultithreading (11:04)
-
StartIncrementing via Threads (5:21)
-
StartSynchronized (7:28)
-
StartLambda Expressions Summary (1:15)
-
StartMethod References (8:24)
-
StartBreaking Down Method References (4:54)
-
StartMethod Reference Examples (7:03)
-
StartReferences to Methods of Particular Objects (4:25)
-
StartReferences to Methods of Arbitary Objects (10:47)
-
StartCompare To Method Reference (9:51)
-
StartReferences to Constructors (9:57)
-
StartStreams (5:11)
-
StartGenerating Streams (5:10)
-
StartGenerating Streams from Files (5:26)
-
StartTransforming Streams (6:59)
-
StartRegular Expressions (9:15)
-
StartCollectors (6:08)
-
StartPeek (5:00)
-
StartFlatMap (4:07)
-
StartStream Exercise 1 (8:43)
-
StartReduce (7:28)
-
StartCombiners (7:08)
-
StartStream Exercise 2 (4:53)
-
StartImplementing Collectors (7:27)
-
StartStreams Exercise 3 (1:18)
-
StartCombining Maps (6:59)
-
StartImplementing the Solution (7:13)
-
StartFilter (7:42)
-
StartMap Exercise (7:19)
-
StartSorting Streams (11:56)
-
StartGroup By (8:09)
-
StartStreams and Static Imports (2:47)
-
StartStreams Conclusion Almost (2:07)
-
StartStream Exercise 4 (1:52)
-
StartMultiplication Table With ForEach (3:12)
-
StartStream Multiplication in a Single String (6:25)