
Explore installation of Java SE 11 LTS on Windows, showing how to check if your system is 64-bit or 32-bit, download the appropriate JDK, and install to the default path.
Install IntelliJ IDEA on Windows, choosing the free community edition and linking JDK 11 for Java development. Configure editor settings to enable auto-import and show line numbers for clear code.
Install and configure IntelliJ IDEA on macOS for Java 11. Set up the JDK, tailor preferences, and adjust code folding and line numbering for clearer Java development.
Install and configure IntelliJ IDEA on Linux, download the community edition from JetBrains, connect to the Java 11 JDK, and adjust core settings for auto import and line numbers.
Set up a new Java project in IntelliJ with Java 11 or Java 8 for Windows, enable command-line app template, create Main.java, and print Hello World with System.out.println under academy.learnprogramming.
Explore how Java programs are structured, including classes, main methods, parameters, and code blocks, with a focus on curly braces, parentheses, brackets, and the role of packages and imports.
Explore dot notation and cross-class method calls while building a simple Eliza chatbot; download and integrate Doctor.java, set up a Java project, and run a basic console interface.
Explore the roles of the JDK and JRE, why the JDK is needed to compile Java for the JRE runtime, and overview Java program structure with Hello World.
Access free YouTube videos that answer common programming career questions, guide your transition into programming, and receive six days a week of updates via a Udemy playlist.
Declare and name Java variables in a statically typed language, using int or var, follow identifier rules, avoid keywords, and spot common errors during coding.
Learn a Java interactive number guessing game that computes a result by multiplying the chosen number by two and five, dividing by the original number, then subtracting seven.
Initialize the answer at the point of declaration by moving the calculation from line 31 to line 17. Ensure the value is printed only after assignment.
Learn Java naming conventions to improve code readability for maintainers, using camelCase for variables and methods and capitalized class names, guided by Google Java Style Guide.
Refactor Doctor.java in the Eliza project to conform with Java naming conventions, identifying eight deviations and practicing careful code reading to spot and fix errors.
Explore how to declare and name Java variables, follow Pascal and Camel case conventions, and ensure variables are initialized before use for accurate calculations.
Use the scanner class to read keyboard input via system.in, print with system.out, and leverage nextLine, parse to numbers, and string formatting for aligned output and currency symbols.
Learn how to read a full line of user input from the console with the Scanner nextLine method in Java, implement a seven-option coffee menu, and display the user's choice.
Learn to use Java printf for advanced string formatting, control field width with positive and negative values, and align text and numbers using %s and %d.
Discover Java data types, choose between integer and floating point types, and apply variables in numeric and Boolean expressions (including and/or), with an intro to classes and fields.
Explore the int and long types in Java by printing their minimum and maximum values, using Integer and Long wrappers, and learn when to use ints or longs.
Compare java's float and double floating point types, examine their min and max values and precision in bits, and learn why double is preferred over float for most use cases.
Compare float and double precision by declaring a float and a double with f literals, print with high precision, and observe rounding errors, setting the stage for BigDecimal.
BigDecimal stores values as integers and tracks decimal position to preserve precision, delivering higher accuracy than float or double. Use its methods for arithmetic, not the plus or minus operators.
Master BigDecimal in Java to achieve precise decimal calculations using immutable values and methods like add and multiply, avoiding floating point errors.
Explore how Java expressions evaluate to a single value with literals. Observe arithmetic and boolean expressions in code, and that left-hand side must be a variable.
Master boolean expressions in Java by testing equality with two equal signs and not equal, using greater than equals and less than equals, with booleans printing true or false.
Analyze how booleans drive control flow in Java by examining the play method, boolean expressions, and loop conditions, and see how the final score is printed.
Identify and count boolean expressions in the Hammer Bitcoin Java project, exploring conditions for market crashes, hackers, purchases, sales, maintenance, payroll, and gameplay logic.
Explore the fundamentals of classes and objects as the building blocks of Java's object-oriented programs, including the main method, instances, and the scanner for console input with nextLine and println.
This lesson introduces Java classes by building a Car class with accelerate and brake methods. It covers creating car instances with new and distinguishing between objects and their class types.
Learn how class constructors initialize objects in Java, including default and parameterized constructors, field initialization with name, and printing name and speed to distinguish instances.
Explore encapsulation in Java by contrasting public and private modifiers, showing how public methods like accelerate and brake are used outside the class, while the show speed method remains internal.
Learn how to alter program flow with loops and conditionals, test conditions, and use methods, then debug code step-by-step with the IntelliJ IDEA debugger.
Explore the for loop in Java using the Oracle official tutorial and Java API documentation. Compare for loops with infinite and while loops while consulting the Java language specification.
Master the IntelliJ debugger to set breakpoints, run in debug mode, and inspect variables in Java. Learn how to step over and into code to understand loops and program flow.
Master for loops in Java by incrementing and decrementing the index, changing step sizes, and testing with the debugger, including zero and hinting at nested for loops.
Explore nested for loops, printing grids of digits, and learn how to use breakpoints and the debugger to diagnose infinite loops and ensure correct loop conditions.
Learn to use the hammerbitcoin project to debug, set breakpoints, and inspect variable values, while exploring constructors, new object creation, static versus instance members, and OGH constants.
Master debugging in IntelliJ by setting breakpoints, stepping into methods, and using resume, drop frame, and console inputs to observe BitcoinMiner’s flow, printFinalScore, and potential crashes.
Explore how Eliza analyzes input with indexOf, uses for loops to process matches and reflections, and drives randomized responses through the program flow.
Explore how Java makes decisions with if-else, switch, and the ternary operator; understand when to use each construct and how they direct code blocks based on conditions.
Learn to implement java if statements by building a rock, paper, scissors game, mapping user input to final constants and using equals, with a random move and output.
Explore advanced if-else logic in java to determine rock, paper, scissors outcomes, detect draws, apply cyclical win rules, and learn a modulus-based approach.
Implement a play again loop in a Java rock, paper, scissors game using a do-while loop, leveraging a getYesNo method to prompt would you like to play again.
Learn how to replace if/else with a Java switch statement to drive a vending machine menu, using case blocks and break inside a do-while loop to manage six options.
Learn how to add a default case to a Java switch to handle unmatched options, prevent errors, and guide program flow with a final else style behavior.
Discover how to use the Java switch statement to share code across multiple cases by grouping case one and case two, reducing duplication and preparing for break and continue keywords.
Demonstrate how the break statement exits for and while loops in Java, using a simplified list-search example and debugging with breakpoints to stop after finding a match.
See how the continue keyword skips remaining loop code and returns to the start, unlike break, with a vending machine menu example that handles invalid options and dispensing coffee.
Learn how Java's ternary operator acts as a concise alternative to if else, illustrated with a day check that yields relax or work. See toLowerCase usage and simple, readable syntax.
Apply the ternary operator in a Java project by replacing an if-else that computes new hires in the Hammer Bitcoin Project, based on starvation status and available computers and cash.
Master flow control with if/else, switch, and the ternary operator to test boolean expressions, use constants, and select code blocks, while breaking and continuing loops and handling default cases.
Declare methods, understand parameters and arguments, use the return keyword for values, and refactor to reduce global variables and side effects, clarifying scope with local variables and class fields.
Explore how Java method calls transfer execution through the call stack, using a Car class with accelerate and brake, and practice stepping into and over methods to observe speed.
Explore how nested method calls use the stack to track return addresses, and observe stepping through accelerate and showspeed with a debugger, inspecting frames and console output.
Download and add the JLine and Jansi libraries from the Maven Repository. Create a libs folder in IntelliJ, copy the JARs, and attach them as project dependencies.
Update your car game to version two by replacing main.java with a new version, using constants for controls and the JLine library to read input without pressing enter.
Learn how access modifiers control visibility in Java by making private methods accessible via public or protected ones, and using public getters like getSpeed to expose private fields.
Fix crash logic across all directions in a car game, reduce duplicated code by extracting common crash handling into a method, and plan proper arguments and testing.
Refactor the Java car game by extracting duplicate movement code into a drive method that takes speed and car position; consider scope, road constants, and a forthcoming understeer bug.
Explore how Java passes arguments by value and use of a global variable to update carPosition inside a static method, while noting global variables are generally bad practice.
Learn to refactor the car drive method by parameterizing position delta to left, straight, or right, fix line 117, and eliminate duplicate code in the straight and right cases.
Refactor a car game by adding a direction parameter to the drive method and using direction-based calls. Use constants for left, straight, and right to boost readability and consider enums.
Explore variable scope and class fields in the BitcoinMiner Java program, showing how public versus private access affects scope, and how side effects impact maintainable code.
learn to eliminate global variables by refactoring the buycomputers method. return the number of computers to buy, update the core site, and pass by value to avoid side effects.
Explore flow control in Java methods, distinguishing parameters and arguments, and see public versus private members, return behavior, and refactoring in a car game example.
Discover how Java operator precedence determines expression evaluation, using addition and multiplication. Learn to use parentheses to enforce the intended order and ensure consistent results.
Explore member selection, aka dot notation, and how post- and pre-increment are evaluated. Recognize operator precedence and why side effects should be avoided in expressions.
Explore using the remainder operator to determine the winner in rock, paper, scissors by mapping constants and applying (value + 1) % 3, then simplify conditions and test operator precedence.
Explore relational and conditional operators, boolean results, assignment operators, and how precedence shapes expressions with concrete code examples and the use of parentheses.
Explore how short circuit evaluation in Java with && and || skips the second operand when the first determines the outcome, preventing errors like divide by zero.
Learn how assignment operators like +=, -=, *=, and /= combine arithmetic with assignment in Java, with examples and guidance on avoiding side effects.
Learn how Java strings work as immutable sequences of Unicode characters. Create and concatenate strings using +, String.format, and printf, and access characters with charAt in a looping example.
Master string indexing and character access in Java by using the charAt method, exploring zero-based indexes, and practicing with for loops and string examples.
Learn how to find substrings with Java's indexOf method by lowercasing input, checking each match, and handling the -1 result when a substring isn't found.
Implement a case-insensitive string search in Java by building indexOfIgnoreCase that lowercases both strings before using indexOf. Learn how equalsIgnoreCase relates to case-insensitive comparison.
Learn how to locate multiple substring matches in java by using lastIndexOf and indexOf with a fromIndex, then iterate with a do-while loop to find all occurrences.
Replace a single occurrence in a string using substring and replaceFirst, via a custom replaceByIndex method, then compare with the built-in replace and replaceAll in Java strings.
Explore the official Java string class documentation to learn essential methods such as contains, indexOf, startsWith, endsWith, trim, split, join, and equals, and understand method overloading.
Explore the stringbuilder class in Java, contrast with immutable strings, and learn how mutability affects memory, references, and replacement methods with start and end indices.
Explore how the equals operator and equals method differ for strings and StringBuilder. Learn to convert StringBuilder to string to compare values rather than references.
Explore StringBuilder operations like append and delete and learn method chaining by returning this, with notes on capacity, ensureCapacity, and indexOf for efficient string manipulation.
Learn to compare a StringBuilder reference after delete with the original, print when they match, and see how to chain delete and append methods while noting searching methods are absent.
Switch from string to StringBuilder for in-place text changes, using toString and toLowerCase, and overload replaceByIndex for StringBuilder input, then compare String and StringBuilder for searches and edits.
Explore the Java course roadmap with upcoming content and continuous learning strategies as the crash course adds regular updates to help you become proficient in Java quickly.
Set up Java from the command line on Windows 10 by configuring JAVA_HOME, updating PATH with the JDK bin path, and verifying with java -version and javac.
If you want to learn to program in Java in far less time than you previously thought possible then read on.
The world today is a hectic place. Most of us have very little spare time. Once we have worked (or studied), slept, spent some time with friends and family there is little time left to think about a career.
In order to become a software developer you need programming skills. But how can you get those skills in the minimum amount of time and still have a life along the way?
This course was designed to teach you the essential Java programming skills you need to get your first programming job, or perhaps a promotion to a more senior position. And to do it in the shortest possible amount of time.
Here is a review written by one of the students in the course.
"Tim is such a great instructor! He just have that magic in him that makes me understand what he is teaching!" - Henrik Ferrari
Do I need to learn 100% of the Java language?
No! To understand how this course can help you, there is a need to understand how programming languages are constructed. The creators of these languages try and add every single feature they think someone might need, ever.
A large part of the language rarely gets used, and sometimes not at all. It's the same with software. If you have used a spreadsheet in the past, I'd lay odds that you use it for basic spreadsheet work, and you rarely, if ever go into some of the advanced functionality. The basic functions of the spreadsheet are what most people use.
Imagine if you had to learn every feature of the spreadsheet program? How long would it take, and would most of that information be useful to you? Especially if you were learning it to get a job and that job only required basic spreadsheet skills.
Switching back to programming, if your goal is to get your first programming job, then why not only learn what you need to achieve that goal. And worry about the other stuff when and if you need it.
That's what this course is all about - giving you the skills you need quickly without any fluff or useless information.
The course is aimed at complete beginners.
We assume you have never programmed before in this course and start from scratch and show you step by step how to download and install the tools, through to writing your first programs, and from there we move to more and more of parts of the Java language that you need to understand.
If you are already a programmer, you will still find value in this course - It's very common for programmers to want to learn a second or third programming language, and doing so makes you more valuable and opens up career opportunities.
As this is a crash course you can get skilled in Java, fast.
Here is what a student said about another of the instructors courses.
"This course is AMAZING!!!! The teaching is thorough with lots of helpful exercises in various formats! The TA responded very quickly to my question! Thank you!" - Joy Hope
What version of Java will I learn?
All videos in the course have been recorded using the very latest version. Java 11. It's recommended that you follow along with that version, but if you have an older version most of the course should work just fine.
Java 11 is the version you will want to learn because Oracle have designated it as the LTS version of Java - meaning they will support it for many years to come. The reason they do this is so large companies can have a particular version of Java employed on the clients sites for years without worrying about new versions of Java crashing previously working programs.
Java 11 will get updated regularly over this time, but it will remain version 11. Oracle also have new Java versions coming out six monthly, but as soon as a new version is released, the previous version is no longer supported.
As such you should learn Java 11 which gives you the most useful skills for your future employer.
I heard that you have to pay to use Java 11.
It's true that Oracle charging businesses to use Java 11, but students and professional developers alike never need to pay for Java. It's 100% free. And even if that ever became a problem in the future, there is the free OpenJDK version of Java that has no restrictions.
The bottom line is that you do not need to pay anything to legally use Java 11.
What will you learn in the course?
You'll learn the essential Java skills needed to become employable as a Java developer.
Creating a Java basic program
All about the Java compiler
Data Types, Variables, Conditional Processing, Loops, Classes, Operators, Expressions - all the good stuff.
Check out the curriculum on this page for a list of what is covered in the course.
In the course you will work with a lot of Java example code. You will start with Java code that was badly written. You'll see why it's bad, and then as you progress through the course, you will improve it and make the code bug free.
This approach, along with smaller snippers of code will help you become a programmer as well as think as a programmer. And as a result you will learn how to get the most out of Java.
What about course updates?
The course will get regular updates - We already have a document in the course that outlines what content is still to be added - We envisage it will be around sixteen hours once done.
It's shorter than that now, but we are adding videos almost every day at the moment.
The instructors have built up a good history of updating their courses in the past on Udemy and that will continue in this course.
What about the instructors?
Your instructors Tim and Goran have a combined 40 years of professional software development experience between them. They have worked for prestigious companies such as IBM, Mitsubishi, Fujitsu and Saab. Their professional experience means you are learning from true experts with real commercial programming experience.
Tim has 18 years experience as a Java developer, and Goran whilst a lot younger than Tim is Oracle Java certified. You will be working with professional software developers who will be teaching you the right way to code based on years of experience.
What's more, there other courses on Udemy have hundreds of thousands of enrolments and literally tens of thousands of reviews. They have built up an enviable record of creating best selling and highly rated courses that help people just like you learn to program and move into a programming career.
Here is another comment from a student in one of Tims Udemy courses.
"I messaged once a few months ago when finishing you Java course on how it helped me also as a refresher on my c# skills. Long story short, the owner of the Software Development company I work for now, after seeing my skills by accident, he asked me if I was looking for a job, I said not really but I would be interested in seeing what all was about, he asked for my resume, set up an interview and he made me a quick test to see how far I was skill-wise and I finished the test with flying colors. He offered me a long term full time job right on the spot with a starting salary superior to what I was doing ($70,000 USD/yr to start and $75,000 USD/yr after six months if everything goes fine), really nice hours and benefits. So now I am coding with a real purpose and what I was doing for free in my free time, now is earning me a living, I've been working there for a month now and it has been great for them and for me. " - Miguel Lara
What about if you have questions?
As if this course wasn’t complete enough, Tim and Goran offer full support, answering any questions you have 7 days a week (whereas many instructors answer just once per week, or not at all).
This means you’ll never find yourself stuck on one lesson for days on end. With their hand-holding guidance, you’ll progress smoothly through this course without any major roadblocks.
Student Quote: "In the course there are several challenges, and when in need of a hint; questions asked are replied swift and elaborate. Feels like one-on-one support. It exceeds my expectations!” - Arjo Tibben
There’s no risk either!
This course comes with a full 30 day money-back guarantee. Meaning if you are not completely satisfied with the course or your progress, simply let the instructors know and they will refund you 100%, every last penny no questions asked.
You either end up with Java skills, go on to develop great programs and potentially make an awesome career for yourself, or you try the course and simply get all your money back if you don’t like it…
You literally can’t lose.
Ready to get started, developer?
Enrol now using the “Add to Cart” button on the right, and get started on your way to a career as a Java Programmer. You can also check out some of the course using the preview feature on this page, so you’re 100% certain this course is for you.
See you on the inside (hurry, the Java class is waiting!)