Get the latest AI workflows to boost your productivity and business performance, delivered weekly by expert consultants. Enjoy step-by-step guides, weekly Q&A sessions, and full access to our AI workflow archive.
Summary
Join Mosh as he introduces Java programming in a complete course designed for beginners. Starting with the installation of essential tools, Mosh covers the basics of Java, explaining how Java code is executed. You'll learn to write simple algorithms and receive tips from Mosh's 20 years of software engineering experience to write professional-quality code. By the end, you'll have a robust foundation in Java, ready to explore its advanced features. Whether you're new or looking to improve, this course makes Java easy to grasp.
Highlights
Mosh, a seasoned developer, simplifies Java for beginners. 🌟
Dive into the details of Java syntax and structure. 📜
Learn about Java's portable nature due to its compilation and execution process. 🖥️
Experience hands-on projects like building a mortgage calculator! 🏠
Engage with practical tips for writing clean, maintainable Java code. 🧹
Key Takeaways
Embark on your Java programming journey with Mosh and master the essentials! 🚀
Understand the architecture of Java programs, from classes to methods. 🏛️
Learn how Java's compilation and execution process makes it platform-independent. 🌍
Get equipped with tips and shortcuts from a seasoned developer. 💡
Understand the basics of Java syntax, including variables, constants, and data types. 📊
Overview
Kickstart your Java programming journey with Mosh, an experienced software engineer who has taught millions how to code. This course starts from the very basics, guiding you through setting up your environment to writing your first lines of Java code. Whether you’re setting up your IDE or understanding the nuances of Java syntax, Mosh makes the process seamless for every learner.
Dive deep into the mechanics of Java programs as Mosh breaks down everything you need to know about variables, constants, data types, and operators. With a focus on writing clean and professional code, this course offers something for every aspiring developer. Through engaging tutorials and practical examples, you’ll grasp the essence of programming logic.
Throughout this Java course for beginners, you'll work on tangible projects that reinforce your learning. With a concrete understanding of Java’s compilation process and its architecture, you'll be prepared to tackle advanced concepts effortlessly. Join Mosh in unraveling the complexities of the world's most popular programming language, making coding a breeze.
Chapters
00:00 - 01:30: Introduction to the Java Full Course for Beginners The chapter titled 'Introduction to the Java Full Course for Beginners' is presented by Mosh, the instructor, who outlines the course's objectives. It aims to equip beginners with essential Java programming skills. The chapter covers setting up the necessary development tools, understanding Java basics, and learning how Java code is executed. Simple algorithm development is included, alongside valuable tips and shortcuts based on Mosh's extensive experience as a professional developer. By the end of the course, participants are expected to write proficient Java code.
01:30 - 03:30: Java Development Kit Installation This chapter introduces Mosh, an experienced software engineer and instructor, who promises to guide beginners through Java programming. He assures learners of all ages that they can quickly write their first Java program. Mosh emphasizes his experience, having taught millions, and promotes his coding school for further learning.
03:30 - 06:30: Understanding Java Programs This chapter begins by encouraging the reader to enhance their skills by learning Java, a powerful and beautiful programming language. An advertisement follows, highlighting the importance of online security for business owners. The narrator endorses Dashlane, a password manager and VPN recommended by Apple and Google, as an essential tool for protecting personal information. Dashlane offers a free version for the first device.
06:30 - 10:00: Writing and Executing Your First Java Program This chapter guides you through the process of downloading and installing the necessary tools to start building Java applications. It begins by advising you to open a browser and search for 'JDK download' to find and install the Java Development Kit. The chapter also includes a promotional note, offering a discount for upgrading to a premium VPN or dark web monitoring service with a promo code.
10:00 - 15:00: Variables and Constants The chapter introduces the Java Development Kit (JDK), which is a software development environment used for building Java applications. It includes important components like a compiler, reusable code, and the Java Runtime Environment, among other features. The text provides guidance on accessing and downloading the JDK from the Oracle website, specifically the Java Standard Edition (Java SE) section.
15:00 - 19:30: Understanding Primitive and Reference Types Chapter Title: Understanding Primitive and Reference Types
Summary: The chapter demonstrates how to download and install a dmg file on macOS. The process begins by accepting the license agreement, then downloading the dmg file. Upon opening the downloaded file, an installation wizard appears. The installation process involves continuing through the wizard steps and entering the computer's password to complete the installation.
19:30 - 26:00: Working with Strings and Special Characters The chapter discusses the importance of choosing a suitable code editor for Java applications. Popular choices include NetBeans, Eclipse, and IntelliJ. While the instructor plans to use IntelliJ, students are encouraged to use any editor they are comfortable with. The chapter includes guidance on downloading IntelliJ.
26:00 - 31:00: Using Arrays in Java The chapter begins with instructions on downloading and installing IntelliJ IDEA, specifically the community edition, as it is free and sufficient for the course. The process includes dragging the downloaded file to the Applications folder to complete the installation. The chapter concludes by noting that all necessary tools to build Java applications are installed and sets the stage to explore the anatomy of a Java program next.
31:00 - 37:00: Basic Arithmetic and Type Conversion The chapter introduces the concept of functions in Java, describing them as the smallest building blocks within a Java program. It explains that a function is a block of code designed to perform a specific task, analogous to how buttons on a TV remote control perform specific functions. The chapter provides examples, such as sending emails, converting weight units, and validating input, to illustrate the role and utility of functions within programming.
37:00 - 43:00: Using the Math and NumberFormat Classes This chapter focuses on using the Math and NumberFormat classes in Java. It begins with an emphasis on how to code functions in Java. The process starts by specifying the return type of a function. Some functions have a return type (e.g., number, date, etc.), while others do not return anything, in which case the return type is 'void'. 'Void' is a reserved keyword in Java and is highlighted as such in examples. After specifying the return type, the next step is to name the function with a descriptive title that reflects its purpose, such as 'sendEmail'. This helps to clearly identify the function's purpose.
43:00 - 49:00: Reading Input from the Terminal This chapter discusses how functions are defined, specifically focusing on reading input from the terminal. It begins by explaining the structure of a function, including the use of parentheses to include parameters that pass values to the function. For example, in a `send email` function, parameters might include the receiver, the subject, and the content of the email. However, parameters are not the main focus of this chapter and will be explored later. The discussion then proceeds to other components of function syntax, including the use of curly braces to encapsulate the function's code block.
49:00 - 56:30: Building a Simple Mortgage Calculator The chapter focuses on building a simple mortgage calculator using Java. It starts by highlighting a key syntactic difference in Java compared to languages like C#. In Java, it's customary to place the left brace on the same line as the function definition, whereas in C#, it's more conventional to start the new line with the left brace. The chapter also emphasizes the fundamental Java requirement that every program must have at least one function, which is central to structuring Java applications.
56:30 - 78:00: Control Flow in Java (If, Switch, and Loop Statements) The chapter begins by discussing the main function in Java, which serves as the entry point for Java programs. Whenever a Java program is executed, the main function is called, and its code is executed. It emphasizes the importance of classes in Java, noting that functions do not exist independently; instead, they belong to a class. The analogy of organizing products in a supermarket is used to explain how classes help organize code by grouping related functions together.
78:00 - 85:00: Conclusion and Advanced Java Features The chapter discusses the concept of classes in Java, drawing a parallel with various sections like vegetables and fruits where related products are grouped. Similarly, in Java, related functions are grouped into classes. It emphasizes that every Java program should have at least one class that includes the main function, typically named 'main'. The chapter then explains how to define a class, starting with the 'class' keyword, followed by a descriptive class name, and a pair of curly braces to contain the class body. Advanced features and techniques beyond this basic structure are implied but not detailed in the provided text.
Java Full Course for Beginners Transcription
00:00 - 00:30 Hi! My name is Mosh and I'm gonna be your
instructor in this Java course. In this course, you're gonna learn everything you
need to get started programming in Java. We'll start off by installing all the
necessary tools to build Java applications then you're gonna learn
about the basics of Java you'll learn how Java code gets executed you'll learn
how to build simple algorithms and throughout this course I'm gonna share
with you lots of tips and shortcuts from my years of experience I'll teach you
how to write good code like a professional developer so we'll end up
watching this course you will have a
00:30 - 01:00 solid foundation in Java and be ready to
learn about advanced Java features I've designed this course for anyone who
wants to learn Java if you're a beginner don't worry I'll make Java super simple
and hold your hands through this entire course you're not too old or too young
you'll write your first Java program in minutes
my name is mosh I'm a software engineer with two decades of experience and I've
taught over 3 million people how to code and how to become professional software
engineers I have a coding school at code with mass comm where you can find plenty
of courses that help you take her coding
01:00 - 01:30 skills to the next level I hope you'll
stick around and learn this beautiful and powerful programming language and
now award from this video sponsor as someone who runs an online business I
cannot stress enough the importance of staying safe online which is why I was
so excited when dashlane reached out to me if you don't know - Lane is the
password manager and VPN recommended by Apple and Google and it's a fantastic
safeguard for keeping your information secure it's completely free to use for
your first device so head over to - Ling
01:30 - 02:00 comm / marché - give it a go if you want
to upgrade to the premium to get VPN or dark web monitoring you can use the
promo code mosh to get 10% off sign up for - 9 today and keep yourself safe
online now back to the course in this java tutorial we're going to
download and install the necessary tools to build java applications so open up
your browser and search for jdk download
02:00 - 02:30 jdk is short for Java development kit
and it's basically a software development environment for building
Java applications it has a compiler it has a bunch of code that we can reuse it
has a Java Runtime environment at a bunch of other stuff so over here you
can see this page on Oracle com Java se which is short for Java standard edition
click on this now over here click on this icon now on this page we can see
Java development kit for various
02:30 - 03:00 platforms like Linux Mac OS and Windows
here I'm on a Mac so I'm gonna download this dmg file over here now before we do
this first we need to accept the license agreement all right now let's download
the dmg let me open this we're gonna say this package let's double click this and
here we see this installation wizard it's super easy just click continue and
install you have to enter your computer's password and then alright
done beautiful so we can move this to
03:00 - 03:30 trash now the next piece of software we
need is a code editor there are so many cool editors for building Java
applications the popular ones are NetBeans Eclipse and IntelliJ in this
Java course I'm gonna use IntelliJ but if you have a favorite editor feel free
to use that to take this course that's perfectly fine so let's search for
IntelliJ download all right you can see
03:30 - 04:00 download IntelliJ IDEA click on this
link over here download the community edition which is absolutely free and
it's more than enough for this course so download all right now let's drag and
drop this onto the Applications folder beautiful alright we've installed all
the necessary tools to build Java applications so next we're gonna look at
the anatomy of a Java program
04:00 - 04:30 in this java tutorial we're gonna look
at the anatomy of java programs the smallest building block in java programs
are functions if function is a block of code that
performs a task as a metaphor think of the buttons on the remote control of
your TV each button performs a task functions in programming languages are
exactly the same for example we can have a function for sending emails to people
we can have a function for converting someone's weight in pounds to kilograms
we can have a function for validating
04:30 - 05:00 users input and so on now let's see how
we can code a function in Java we start by specifying the return type of that
function some functions return a value like a number at day time and so on
other functions don't return anything so the return type of this functions is
void void is a reserved keyword in Java and that's why I've coded that in blue
here now after the return type we have the name of our function so here we
should give our function a proper descriptive name like send email this
name clearly identifies the purpose of
05:00 - 05:30 this function okay now after the name we
have a pair of parentheses and inside these parentheses we add the parameters
for this function we use these parameters to pass values to our
function for example our send email function should have parameters like who
is the receiver what is the subject of this email what is the content of this
email and so on now in this tutorial we're not gonna worry about parameters
we'll look at them in the future now after the parentheses we had a pair
of curly braces and inside these braces
05:30 - 06:00 we write the actual Java code now one
thing I want you to pay attention to here is that in Java we put the left
brace on the same line where we define our function in other programming
languages like C sharp it's more conventional to put the left brace on a
new line but we don't do that in Java so we put the left brace on the same line
where we define our function now every Java program should have at least one
function and that function is called
06:00 - 06:30 main so main is the entry point to our
programs whenever we execute a Java program the main function gets called
and the code inside this function gets executed okay now these
functions don't exist on their own they should always belong to a class so a
class is a container for one or more related functions basically we use these
classes to organize our code just like how products are organized in a
supermarket in a supermarket we have
06:30 - 07:00 various sections like vegetables fruits
cleaning products and so on each section contains related products by the same
token a class in java contains related functions now every Java program should
have at least one class that contains the main function can you guess the name
of that class its main so this is how we define a class in Java we start with a
class keyword then we give our class a proper descriptive name and then we add
a pair of curly braces now the functions
07:00 - 07:30 that we define in between these curly
braces belong to this class and more accurately we refer to them as methods
so a method is a function that is part of a class in some programming languages
like Python we can have a function that exists outside of a class so we call it
a function but when a function belongs to a class we refer to it as a method of
that class okay now in Java all these classes and methods should have an
access modifier an access modifier is a
07:30 - 08:00 special keyword that determines if other
classes and methods in this program can access these classes and methods we have
various access modifiers like public private and so on now most of the time
we use the public access modifier so we put that in front of our class and
Method declarations so this is the basic structure of a Java program at a minimum
we have a main class and inside this main class we have the main method now
you might be curious why we have a
08:00 - 08:30 capital m in the name of this class
because in Java we use different conventions for naming our classes and
our methods to name our classes we use the Pascal naming convention and that
basically means the first letter of every word should be uppercase in
contrast to name our methods we use the camel naming convention and that means
the first letter of every word should be operate
case except the first wart so that is why we have a capital m in the name of
this class alright now that you
08:30 - 09:00 understand the anatomy of a Java program
let's create a new Java project and see all these building blocks in action in
this Java tutorial you're gonna learn how to write and execute your first Java
program so let's open IntelliJ IDEA here on the home screen let's create a new
project alright on the left side select java and make sure project sdk is not
black so earlier we downloaded jdk or
09:00 - 09:30 Java development kit version 12 that is
why JDK version 12 is selected here if you don't see that make sure to select
it from this drop-down list alright now let's click on next on this page select
create project from template so we're gonna create a command line application
which is an application that we can run from the command line it doesn't have a
graphical user interface or a GUI now I know command line application is
not as exciting as an application with a
09:30 - 10:00 graphical user interface like a mobile
app or a desktop app but trust me building an application with a graphical
user interface is very complicated so for now we're just gonna build command
line applications to learn Java properly once you learn Java properly then you
can learn about building desktop or mobile applications with Java all right
now let's click on next on this page we have to give our project a name let's
call it hello world now over here you
10:00 - 10:30 can see the location of this project so
it's inside the idea projects folder now right below that you can see the base
package which is set to comm that code with Marsh on my machine and your
mission is probably gonna be comm dot package what is this well here we talked
about classes and methods I told you that a class is a container for related
methods so we use classes to organize our code by the same token we have a
concept called package and we use a
10:30 - 11:00 package to group related classes so as
our applications grow we're gonna end up with hundreds or even thousands of
classes so we should properly organize this class
us into packages now by convention the base package for a Java project is the
domain name of your company in Reverse so my website is code with mass comm
that is why I'm gonna set the base package for this project to come that
code with Marsh now it doesn't mean that you should have an actual domain
registered on an Internet this is just a way to create a namespace for our
classes so now every class that we
11:00 - 11:30 create in this project will belong to
this package we're gonna talk about packages in more detail in the future so
for now just type a base package for your project it can become that your
name or whatever it doesn't really matter all right now let's go forward
alright here's our first Java project now this code editor might look a little
bit intimidating at first but trust me it's really easy and you're gonna learn
about it throughout this course on the left side we have the project panel
where we can see all the folders and
11:30 - 12:00 files in a project for example on the
top we have the hello word project inside this project we have the source
folder where we have the source code of a project now in this folder we have
another folder that is calm that code with Marsh that is the name of our base
package and in this package we have this class main so you can see this main file
opened on the right side here now look
12:00 - 12:30 at the name of this file its main the
Java so all Java files should have the Java extension okay now let's collapse
the project panel by clicking on this icon that is better so see what we have
here on top of this file we have the package statement and this is used to
specify what package this class belongs to so the main class that we have here
belongs to this package now this package statement is terminated by semicolon so
in Java wherever we have a statement we
12:30 - 13:00 should terminate that statement with a
semicolon this is exactly like c-sharp or C++ now below this package statement
we have our main class exactly like what you saw in the previous tutorial so we
have public class main with a pair of curly braces inside this class we have
our main method so it's a public method which may
it's accessible from other parts of this program it's static we haven't talked
about static metals yet we'll talk about
13:00 - 13:30 them in the future for now just remember
that the main method in your program should always be static the return top
of this method is void which means this method is not gonna return a value and
here in parentheses we have one parameter for this function we can use
these parameters to pass values to our program again we'll look at this in the
future now right after this parameters as you can see the left brace and this
is where we write the code in this method now by default we have this line
prefix with two slashes this indicates a
13:30 - 14:00 comment we use these comments to explain
our code to other people so these comments don't get executed now let's
remove this comment and write a bit of code to print something on the terminal
so here we're gonna use the system class in Java so capital S system here in this
tooltip you can see the system class is defined in this package Java dot Lang or
language also look at this icon on the left side this indicates a class now
inside this class we have various
14:00 - 14:30 members we can use the dot operator to
see the members defined in the system class now the member that we're gonna
access is out look at the icon of this member it's F which is short for field
you're gonna talk about fields in the future when we talk about classes and
object-oriented programming now what is interesting here is the type of this
field and you can see that on the right side that is print string so print
string is another class that is defined
14:30 - 15:00 in Java so once again we use the dot
operator to look at the methods or members defined in the print stream
class the method we're gonna use is print Ln which is short for line look at
the icon for this method so M indicates a method now you press ENTER and
IntelliJ automatically adds these parentheses as well as a semicolon so
now with the code on line six we're calling or executing the print line
method earlier I told you that inside
15:00 - 15:30 this parenthesis we can pass values to
our methods here we want to print the hello word
on the terminal so let's type double quotes and inside these quotes right
hello world so hello word is textual data in Java whenever we deal with
textual data we should always surround them with double quotes now we say we
have his string so a string is a sequence of characters all right so
we're done with our first program now to
15:30 - 16:00 execute this we can click on this icon
on the toolbar look at the shortcut on Mac it's ctrl + R I always prefer to use
shortcuts because they're faster so ctrl + R now IntelliJ is building our
application and we can see the result in this little terminal window so here's
our hello work message so that was our first Java program next I'm going to
explain how Java code gets executed under the hood
hey Marsh here I just wanted to let you
16:00 - 16:30 know that you really don't have to
memorize anything in this course I've put together a comprehensive cheat sheet
with summary notes that you can download below this video so I've done my best to
create the best possible Java course and I would really appreciate it if you
support me by liking and sharing this video on the social networks that you
use often also be sure to subscribe and enable the notifications so next time I
upload a video you'll get notified thank you so much and let's continue watching all right now let's see what exactly
happens under the hood the moment we run
16:30 - 17:00 a Java program in IntelliJ
there are basically two steps involved here compilation and execution in the
compilation step IntelliJ uses the Java compiler to compile our code into a
different format called Java bytecode this Java compiler comes with the Java
development kit that we downloaded at the beginning of the course let me show
you so here we can right click on this main the Java and in this context menu
we have an item called open in terminal
17:00 - 17:30 it's down below unfortunately it's not
visible in my recording window it's called open in terminal on Mac and
probably open in command prompt on Windows so let's open that we get this
terminal window or command prompt on windows here we're currently inside of
this folder code with Maj that is where we have our main the Java file now we
can invoke the Java compiler like this Java C and pass the name or Java file as
an argument so main the Java if you're
17:30 - 18:00 on Mac or Linux make sure to spell this
with a capital M because these operating systems are case-sensitive so enter now
let's look at the content of this folder on Mac or Linux we can type LS on
windows we type dir so let's take a look in this folder now we have a new file
main class this is the bytecode representation of this Java file now let
me use IntelliJ to run our Java program
18:00 - 18:30 this class file gets stored somewhere
else let me show you so back to the project panel here in our project we
have this source folder where we our source code and we have this out
folder where we have the result of the compilation so inside this folder we
have production inside this we have hello world the same name as our project
inside hello world we have comm which is the name of our top level package inside
this package we have a sub package that
18:30 - 19:00 is code with Marsh and here we have our
main dat class file so this was the compilation step now this Java bytecode
that we have in this file is platform independent and that means it can run on
Windows Mac Linux or any operating systems that has a Java runtime
environment if you go to java.com slash download we can download java or more
accurately java runtime environment for various operating systems this Java
Runtime environment has a software
19:00 - 19:30 component called Java Virtual Machine or
JVM this JVM takes our Java bytecode and translates it to the native code for the
underlying operating system so if you're on Windows machine this Java Virtual
Machine converts or Java bytecode into the native code that windows can
understand this architecture is the reason why Java applications are
portable or platform independent we can write a Java program on a Windows
machine and execute it on Linux Mac or
19:30 - 20:00 any other operating systems that have a
Java runtime environment c-sharp and python also have the same
architecture that's why they are platform independent as well now let me
show you how to invoke this java virtual machine to run a Java program so back to
this terminal window let me expand this currently we are inside of this folder
code with Marsh and in this folder we have this class file now let's go one
level up so CD dot dot and one more time
20:00 - 20:30 so now we are inside the source folder
we can invoke Java Virtual Machine like this they type Java and then we type the
full pass to our main class file what do I mean by that well earlier we defined
this package comm that code with Marsh and this class the main class is part of
this package so the full path this class is calm dot code with Marsh
dot main make sure to use a capital M
20:30 - 21:00 here because this is case sensitive now
when we press ENTER Java will look at this folder calm inside this folder it
will look at this other folder code with Marsh and then it will find main that
class in that folder it will load the bytecode and convert it to the native
code for the operating system we are using so take a look so it executed our
program hello world beautiful let me run a program using IntelliJ all these steps
are hidden from us we don't see the
21:00 - 21:30 compilation or execution steps so you have seen Java in action now let
me tell you five interesting facts about Java Java was developed by James Gosling
in 1995 at Sun Microsystems which was later acquired by Oracle in 2010 it was
originally called oke after an oak tree that stood outside Gosling's office
later it was renamed to green and was finally renamed to Java inspired by Java
coffee that's why its logo looks like
21:30 - 22:00 this we have four editions of Java for
building different kinds of applications we have Java standard edition this is
the core Java platform which is what we're using in this course it contains
all of the libraries that every Java developer must learn
we have Java Enterprise Edition which is used for building very large-scale and
distributed systems it's built on top of java standard edition and provides
additional libraries for building fault
22:00 - 22:30 tolerant distributed multi-tiered
software we have java micro Edition which is a subset of Java standard
edition designed for mobile devices so it has libraries specific to mobile
devices and finally we have Java card which is used in smart cards the latest
version of Java is Java standard edition 12 which was released just a few months
ago in March 2019 Java has close to 9 million developers worldwide currently
about 3 billion mobile phones run Java
22:30 - 23:00 as well as 120 million TV sets and every
blu-ray player according to indeed.com the average salary of a Java developer
is just over $100,000 per year in the US so as we can see Java is everywhere
which means more opportunities for you to get hired as a professional
programmer now let me give you a quick overview of how I've structured this
course so you can get the most out of it
23:00 - 23:30 this course is the first part of my
complete four-part Java series each part is about three to four hours long so it
can easily complete it in a day or two in the first part which is what you're
watching you're gonna learn the fundamentals of programming with Java in
the next section you'll learn about the type system in Java you will learn how
to work with various types such as purrs strings boolean's and arrays by
the end of this section you will build a mortgage calculator as your first Java
project will be improving this
23:30 - 24:00 calculator bit by bit routers course
next you will learn about control flow statements that are used to build
algorithms we'll be talking about various types of conditional statements
and loops later in this section we'll add data validation to our mortgage
calculator to force the user to enter valid values at this point you'll be
able to build basic algorithms and that's great
but being a good programmer requires knowing how to write good code code that
is clean and expressive that's what
24:00 - 24:30 separates an outstanding programmer from
an average programmer so in the following section we'll talk about clean
coding I will show you various techniques that professional programmers
use to make their code clean and maintainable and finally in the last
section you will learn how to find and fix errors in your java programs as well
as how to package them for deployment so others can use them so the materials in
the first part will give you a solid foundation on how to start programming
in Java in the second part we'll talk
24:30 - 25:00 about object oriented programming which
is a style of programming use in most if not all Java applications whether you
want to use Java to build web mobile or desktop applications you need to
understand object-oriented programming well because otherwise you're going to
constantly hit obstacles in the third part we're going to talk about core Java
API is or application programming interfaces you'll learn about many of
the useful classes in the standard Java library and finally in the last part
we'll be looking at the advanced
25:00 - 25:30 features in Java such as streams threads
database programming and so on so I hope you're gonna join me on this journey and
master Java the most popular programming language behind millions of apps and
websites you intersection we're gonna look at the
fundamentals of programming in Java you're gonna learn about variables and
constants primitive and reference types
25:30 - 26:00 you're gonna learn about casting or type
conversion you will learn how to work with numbers strings and arrays and how
to read input from the user once you learn all this I'm gonna give
you a project you're gonna build a mortgage calculator on your own so make
sure to pay great attention to all the materials you're gonna learn because
you're gonna use most of them in this project are you ready now let's jump in
and get started in this tutorial we're
26:00 - 26:30 gonna talk about variables in Java we
use variables to temporarily store data in computer's memory here is an example
imagine in this program you want to store someone's age in the memory so we
declare a variable like this ant age equals 30 so int or integer is the type
of this variable so in this variable we can only store integers which are whole
numbers like 1 2 3 4 numbers that don't have a decimal point now in Java we have
several different types I'm gonna talk
26:30 - 27:00 about them in the next tutorial so first
we specify the type of our variable then we give it a name or a label this is
also called an identifier because we use it to identify our variable this equal
sign is called the assignment operator and 30 is the initial value that we are
assigning to this variable so we say on line 6 we're initializing this variable
which means we're giving it an initial value you always have to initialize our
variables before reading them so with
27:00 - 27:30 this line we're storing number 30
somewhere in computer's memory and we're assigning this label to that memory
location now on line 7 instead of printing hello world we can print the
value of the age variable take a look so I'm gonna run this program using ctrl +
R there you go now we see 30 on the terminal beautiful we can also change
the value of our variable so after we initialize it per house we can change it
to 35 now when we run this program again
27:30 - 28:00 we see it 35 beautiful we can also
initialize multiple variables on the same line but this is something that I
don't recommend because it makes your code ugly and hard to read here is an
example we can declare another variable like temperature and set it to 20 so
using a comma we can declare multiple variables on the same line now even
though this is technically possible it's not something that I recommend so it's
always better to declare one variable on
28:00 - 28:30 each line like this we can also copy the
value of one variable into another here is an example let me delete these
variables and declare a new variable called my age we set it to 30 and then
we declare another variable like her age and we set it to my age so now when we
print her age we're gonna see 30 take a look
so on line seven recapping the value of
28:30 - 29:00 this variable into this other variable
now one thing I want you to pay attention to here is the convention I
have used for naming our variables as I told you before this is called the
camelcase notation so we should capitalize the first letter of every
word except the first word so in this case the first word my it's all in
lowercase but the second word starts with a capital letter so this is all
about declaring and initializing
29:00 - 29:30 variables in the next tutorial we're
going to talk about various types in Java in this tutorial we're going to
talk about various types in Java basically we have two categories of
types we have primitive types for storing simple values and non primitive
types or reference types for storing complex objects so in the category of
primitive types we have white which takes one byte of memory and in one bite
we can store values from 128 to 127 now
29:30 - 30:00 the more bytes we have the larger
numbers we can store so next we have short which takes two bytes and with
this we can store values up to 32,000 next we have integer which we have seen
before integers take four bytes of memory and allow us to store values up
to two billion then we have long which takes eight bytes and with this we can
store even larger numbers now all these types are for storing whole numbers that
don't have a decimal point if you want
30:00 - 30:30 to store a number that has a decimal
point you have to use float or double float takes four bytes double takes
eight bytes so obviously we double we can store larger numbers next we have
char for storing a single character like ABC and this chart I've take two bytes
so they support international letters and finally we have boolean for storing
boolean values which can be true or false just like yes or no in English now
let's take a look at a few examples
30:30 - 31:00 earlier we use an integer for storing
someone's age but as you learned integers take four bytes and allow us to
store values up to two billion we don't need four bytes of memory to store
someone's age all we need is one byte because with one bite we can store
values up to 127 so I'm gonna change this to byte that is better now let's
look at another example let's say we want to store the number of times a
YouTube video has been watched so we define an integer called views count
note that I'm always using meaningful
31:00 - 31:30 names for my variables because these
names help us understand what this code does I've seen some people use variable
names like V or V 1 or n nobody knows what these variables do so as a best
practice always use meaningful and descriptive names for your variables so
views count we set this to a large number like 1 2 3 4 5 6 7 8 9 now in
Java whenever you deal with a large
31:30 - 32:00 number like this you can use an
underscore to separate every three digits just like how we use a comma in
our documents to make our numbers more readable we can use an underscore in
Java so with integers we can store values up to two billion but let's say
the number of times this video has been watched is three billion so I had a
three here now we have a red on the line that indicates an error
let me hover our mouse over it we see this tooltip integer number too large so
we need to change the type of this
32:00 - 32:30 variable to long however the error is
still there what's going on here the reason we're getting this error is that
by default Java sees these numbers as integers so even though we have defined
the type of this variable as long Java compiler sees this value as an integer
and he thinks this value is too large for an integer to solve this problem we
need to add an L as a suffix or this number we can use an uppercase or a
lowercase L but as you can see a
32:30 - 33:00 lowercase L kind of looks like a 1 so
it's better to use a capital L so these are examples of whole numbers now let's
declare a variable for storing a number with a decimal point so double price we
set this to 1099 obviously the double variable is too large for storing the
price of a product so we can change this to float that is better but you have a
compilation error here take a look incompatible types required float but
found double the reason we're seeing
33:00 - 33:30 this error is that by default Java sees
these numbers with a decimal point as double so even though we set the type of
this variable to float Java sees this number as a double so just like how we
added a suffix to this number to represent it as a long we need to add a
suffix here to represent this number as a float and that suffix is F once again
we can use an upper case or lower case F
33:30 - 34:00 so these are examples of numbers now
let's store a character so char we call it letter and we set it to a note that
we should always surround single characters with single quotes and
multiple characters or strings with double quotes
okay so char represents only one character string represents a series of
characters and finally let's see an example of a boolean so we define a
boolean variable called is eligible is
34:00 - 34:30 this person eligible for loan or not we
said this to true or false these are the boolean values now note that all these
words coded in orange are reserved keywords in Java
just like public static void class package these are all reserved keywords
so we cannot use these reserved keywords the name our variables classes and
methods in the last tutorial you learned
34:30 - 35:00 that we use primitive types to store
simple values like numbers boolean values or single characters in contrast
use reference types to store complex objects like data objects or mail
messages these are complex objects now in Java we have eight primitive types
that you have seen before all the other types are reference types let me show
you an example so here in this program first I'm gonna declare a primitive type
let's say white age equals 30 now
35:00 - 35:30 declaring and initializing a reference
type is slightly different from primitive type let me show you
so let's type date now here in this tooltip box which is called intellisense
we can see various classes that have date in their name so IntelliJ is
helping us complete our code by suggesting these class names now here we
have a date class in this package Java the util so this package contains a lot
of utility classes that are useful in a
35:30 - 36:00 lot of programs you also have a date
class in a different package Java SQL or sequel which is used for programming
databases so this is the benefit of packages we can have the same class but
in different packages they don't conflict so packages create a namespace
for our classes okay now in this case if we select the first date class and press
enter or tab IntelliJ automatically adds
36:00 - 36:30 this line for us import Java that you
till the date so because currently we are in this package in order to use a
class from a different package we need to import it so here we're importing the
date class in this package will talk about packages in more detail in the
future so back to our date variable let's give this variable a name collect
now now we set this here we need to use the new operator to allocate memory for
this variable and this is one of the
36:30 - 37:00 differences between the primitive and
reference types when declaring primitive types we don't need to allocate memory
memory is allocated and released by Java Runtime environment but when dealing
with reference types we should always allocate memory now we don't have to
release this memory Java Runtime environment will automatically take care
of that so we use the new operator and then repeat the name of our class in
this case date and then we add parentheses followed by a semicolon in
this example this variable we have
37:00 - 37:30 defined here is an instance of the date
class so this class is defined template or blueprints for creating new objects
new instances as another example we can have a class called human and we can
have objects like John Bob Mary and so on so an object is an instance of a
class now this object or this class have members that we can access using
the dot operator so we can type now dot
37:30 - 38:00 and these are all the members defined in
this class or in this object for example we have a method called get time and
this returns the time component of this object this is another difference
between primitive types and reference types these primitive types don't have
members so if you type age dot we don't see anything these items you see here
are not members of age their code snippets which allow us to quickly
generate code for example we can select for I and this automatically generates
this block of code for us we'll talk
38:00 - 38:30 about this in the future so this age
variable is a primitive type it's not an object it doesn't have any members and
that's why when we use the dot operator we don't see anything here now let's
delete this line and instead print the value of this data object so once again
we can type system this is a class so we can use the dot operator to access its
members here we have out which is a field and the type of this field is
print string which is another class in Java so once again we can use a dot
operator and call the print line
38:30 - 39:00 function now let me show you a very cool
shortcut instead of typing all this we can use one of these code snippets so we
type s oh you see and press tab and this generates this piece of code for us all
right now let's pass our data object here note that I have not surrounded
this variable with double quotes because this is a string and if you run this
program we'll see now on the terminal there you go
we don't want this you want the value of
39:00 - 39:30 our data object not a label so let's
remove the quotes I run the program again so here's the current date I'm on
my machine I've learned a little bit about the differences between the
primitive and reference types so you know that we use primitive types for
storing simple values and reference types for storing complex objects but
there's a very important difference
39:30 - 40:00 between these two categories of types in
terms of memory management and that's what we're going to talk about in this
tutorial so I'm going to declare a primitive
variable X and set it to 1 and then I'm going to declare another variable like Y
and set it to X so in this example we have two different variables x and y and
these two variables are at different memory locations so they're completely
independent of each other in other words if I change the value of X Y is not
going to get affected let me show you so
40:00 - 40:30 I'm gonna update X to 2 and then print Y
so syu t tab y let's take a look so run as you can see Y is not affected
because x and y are completely independent of each other however when
we use a reference time this behavior is different
let's take a look so I'm gonna delete all the code here in Java we have a
point class that is defined in this
40:30 - 41:00 package Java that awt so we press ENTER
and now we have this import statement on the top beautiful let's declare a
variable like point 1 and set it to new point here we can pass the initial
values for x and y so I'm gonna pass 1 and 1 so intelligent automatically adds
these labels x and y now just like
41:00 - 41:30 before I'm gonna declare another
variable point 2 and set it to point 1 and this is where things get interesting
when Java Runtime environment executes line 8 first it's going to allocate some
memory to store this point object let's see if the address of that memory
location is 100 then it's going to allocate a separate part of the memory
and it's going to attach this label to that memory location point 1 in that
memory location it's going to store the
41:30 - 42:00 address of our point object so this is
the critical difference between primitive and reference types when we
declare a primitive variable like a byte the value that we assigned to that
variable will be stored in that memory location but when we use a reference
type like this point class our variable is going to hold the ax
of that point object in memory not the actual pointer object now look at line 9
here we're copying the value that we
42:00 - 42:30 have in this variable into this other
variable so that value as you learn is not the point object is the address or
the reference to the point object in memory that is why we refer to these
tiles as reference types because they don't store the actual values they store
a reference to an object somewhere in the memory so in this example point one
and point two are referencing the exact same point object in memory we only have
one point object so these two variables
42:30 - 43:00 are not independent of each other
they're referencing the same object and that means if I update this point object
through either of these variables the changes will be visible to the other
variable I'm gonna show you so using the first variable point one we're going to
update the value of x so we use the dot operator and here we can see the members
of this object X on Y are both fields which are variables that exist inside of
a class so we said X just like a regular
43:00 - 43:30 variable to a different value let's say
two now because point one and point two are referencing the exact same object if
we print point two we're going to see the change that we just made
take a look so S or ut tab let's print point to run the program there you go
so the change was visible so remember this reference types are copied by the
references whereas primitive types are
43:30 - 44:00 copied by their value and these values
are completely independent of each other in this tutorial we're gonna look at
strings in Java so earlier in the course we printed the hello world message on a
terminal this hello word that we have here is a string or more accurately it's
a string literal that means a string value now let's
extract this from here and store it in a string variable so cut just before this
line we type string now look this string
44:00 - 44:30 class is defined in Java that Lang
package what is interesting is that we don't have an import statement to import
this package or import this class because this package is automatically
imported so we can use any classes that are defined in this package now let's
declare a variable called message and because this is a reference type we
should instantiate this variable using
44:30 - 45:00 the new operator so Neal string and here
in parenthesis we type our message hello world however here we have this little
warning take a look new string is redundant because in Java there is a
shorter way to initialize string variables let me show you so instead of
using the new operator we simply set this to our string literal now on the
surface this looks like a primitive type
45:00 - 45:30 because we are not using the new
operator but this is just a shorthand to initialize a string variable strings are
reference types in Java but because we use them often there is a short way to
create them so now let's pass message to the print
line method and run our program you get the exact same result as before
beautiful now let's look at a few interesting things that you can do with
strings we can concatenate or joining a string with another one using the plus
operator so here we can combine this
45:30 - 46:00 with another string with two exclamation
marks and here's the result now because string is a class it has members that we
can access using the dot operator so we can type message dot and these are all
the methods or functions do find in the string class for example we
have this method here ends with and with this we can check to see if our string
ends with a character or sequence of
46:00 - 46:30 characters for example here we can pass
their string to see if our message ends with two exclamation marks
now instead of printing the message let's print this expression here so
let's run the program we get true so this method that we have called here
returns a boolean value which can be true or false we also have another
method starts with let's take a look now
46:30 - 47:00 in this case we get false because our
message doesn't start with two exclamation marks another useful method
is length so we can call that to get the length of a string which is the number
of characters so message dot length take a look
so in this string we have 13 characters and this is useful in situations where
you want to check the length of the input by the user for example you might
have a sign-up form with a username field you can check the length of
someone's username and give them an
47:00 - 47:30 error if the username is longer than
let's say 20 characters pretty useful we also have another method that is index
of and this returns the index of the first occurrence of the character or the
string that we pass here for example if you pass H the index of H is 0 so let's
run the program there you go we get 0 if you pass e we get 1 because the index of
the first II in this message is 1 now
47:30 - 48:00 what if you pass a character or a string
that doesn't exist in this message let's say Skye we get negative 1 so with this
method we can check to see if a string contains certain characters or words or
sentences and so on another useful method is replace and with this we can
replace one or more characters with something else for example we can
replace any exclamation marks with
48:00 - 48:30 let's say a store so this replace metal
has two parameters one is target the other is replacement and here we're
passing two values for these parameters here's the first value here is the
second value and we have separated these values using a comma now in programming
terms we refer to this values as arguments a lot of programmers don't
know the difference between parameters
48:30 - 49:00 and arguments parameters are the holes
that we define in our methods arguments are the actual values that we pass to
these methods so in this case target and replacement or parameters but
exclamation mark and asterisk are arguments now let's run this program and
see what happens so our explanation marks are replaced with stars now what
is important here is that this method does not modify our original string it
returns a new string so if we print our
49:00 - 49:30 original string right after SRU T tab
message you can see the original string is not changed because in Java strings
are immutable we cannot mutate them we cannot change
them so any methods that modify a string will always return a new string object
okay we also have another useful method
49:30 - 50:00 to lowercase
let's take a look so to lowercase converts all characters
to lowercase and once again you can see that the original string is not affected
because this method returns a new string okay we also have two uppercase and
another useful method is trim trim and with this we can get rid of extra white
spaces that can be at the beginning or the end of a string sometimes our users
type unnecessary spaces in form fields
50:00 - 50:30 so using the trim method we can get rid
of these white spaces let me show you so I'm gonna add a couple of spaces before
and after our message now when we trim it these white spaces are gonna get
removed take a look so here's the original string you can see two white
spaces at the beginning and here's our string after trimming so these are some
useful methods in the string class but
50:30 - 51:00 this glass has more methods than we
don't have time to cover in this lecture but as we go through the course you're
gonna learn more about the string class and other useful classes in Java third
times will include special characters in our strings like a tab or a new line or
a backslash or double quotes so in this tutorial I'm gonna show you how to
include these special characters in your strings so here we have the string hello
Marsh let's say we want to surround
51:00 - 51:30 Marsh with double quotes now here's the
problem if we add a double quote here Java compiler thinks this is the
termination of our string so it doesn't stand what we have after that's why we
have a compilation error the fixes problem we need to prefix this double
code with a backslash so using this backslash we have escaped
the double quote now one more time let's add backslash double code here now let's
run the program and see what we get so
51:30 - 52:00 we get hello Marsh in double quote
beautiful so double quote is one of those special characters that you need
to be aware of another special character is backslash let's say we want to store
the pass to a directory on a Windows machine so that will look like this C
Drive backslash windows backslash whatever now
if you want to store this in a string we need to escape each backslash let me
show you so C Drive backslash now we
52:00 - 52:30 have a problem
Java compiler thinks we're escaping the double code here so it thinks our string
is not terminated with another double code but that's not what we want you
want to add a backslash here so we need to prefix our backslash with another
backslash now we type windows one more time something let's run the program so
even though we have two backslashes in our code we actually see one backslash
in a terminal window in other escape
52:30 - 53:00 sequences backslash N and we use that to
add a new line to our strings so let's change this to backslash N and run the
program to see what happens now our string is broken down onto multiple
lines by the first line we have C Drive then we have Windows so wherever we had
a backslash n Java will insert a new line we can also add a tab in our
strings so if you add backslash T here there
will be a tab which means C Drive and
53:00 - 53:30 windows let's take a look so C Drive
here we have a tab and then windows now in Java we have a few more escape
sequences but quite honestly they're hardly used so remember these four
escape sequences that we cover in this tutorial in this tutorial we're going to talk
about arrays in Java we use arrays to store a list of items like a list of
numbers or a list of people or a list of
53:30 - 54:00 messages let me show you so here we have
an integer variable you want to convert this to an integer array so right after
int we add square brackets now we have a compilation error because we're storing
a single number in this array so to fix this we need to remove one because
arrays are reference types we need to use the new operator here then we repeat
the type one more time enter a and here
54:00 - 54:30 in square brackets we specify the size
or the length of this array how many items do we want to include in this
array let's say five also we should change the name of this variable from
number two numbers because we're dealing with a list of items so always pay
attention to the name of your variables now you can access individual items in
this array using an index so we type numbers square brackets to reference the
first element or first item we use zero
54:30 - 55:00 now we can set this to a value like 1
similarly we can set the second item to 2 now what if we use an invalid index
let's say 10 this array doesn't have 10 items so let's see what happens numbers
of 10 we said this to 3 when we run this program we get an exception exceptions
are Javas way to report errors so in this case an exception was raised and
our program crashed we'll talk about
55:00 - 55:30 exceptions in detail later in the course
so now let's remove the last line and treinta sorry
so sou t tab numbers let's see what we get
we get this weird string in sort of the items in our array here's the reason
by default when we print an array Java returns the string which is calculated
based on the address of this object in memory so if you have another array and
we print that we're gonna see something different because each object is gonna
be in a different memory space okay now
55:30 - 56:00 how can we see the actual items in this
array well we have a class in Java called arrays let me show you
arrays so this class is defined in Java that util package let's press ENTER now
this is important on the top beautiful so we can use the dot operator to access
the members of this class here we have a method called two string now as you see
it this method is implemented multiple
56:00 - 56:30 times so in the first implementation
this method gets a float array in the second implementation it takes an
integer array and so on so for all primitive types as well as reference
types this method is implemented multiple times this is what we call
method overloading now we can call this method and pass our integer array and
this will return the string representation of this array so we can
cut this from here and pass it to our
56:30 - 57:00 print method like this now let's run the
program one more time and here's our array beautiful so the first two items
are initialized the others are set to 0 by default because here we're dealing
with an integer array if you had a boolean array all items why default get
initialized to false if you have a string array all items get initialized
to an empty string okay now this syntax for creating and
initializing an array is a little bit
57:00 - 57:30 tedious and it's an older syntax there
is a newer way to initialize an array if we know the items ahead of time like in
this case so I'm going to remove these two lines I'm also gonna remove the new
operator here we use curly braces and inside these braces we add all the items
in this array let's say 2 3 5 1 & 4 now we have 5 items so the length of this
array is gonna be 5 we can read that using the lengths
so if we type numbers dot look here we
57:30 - 58:00 have is filled look at the icon it's an
F so this is a field which is like a variable in a class and the type of this
field is an integer so this returns the number of items in this array let's get
that and printed using our print method like this take a look so we get five now
in Java arrays have a fixed size so once we create them we cannot add or remove
additional items to them they have a
58:00 - 58:30 fixed length if you want to be able to
add or remove additional items from an array you should use one of the
collection classes that we'll talk about later in the course for now all I want
you to remember is that arrays have a fixed length now currently our array is
not sorted these numbers are in some kind of random order we can easily sort
this array using the sort method of the arrays class let me show you so I'm
gonna remove this line and call arrays dot sort once again you can see this
method is overloaded because it's
58:30 - 59:00 implemented with different parameter
types so we call this method and pass our numbers array
now when we run this program we can see our array is sorted beautiful so yeah I've learned that we use arrays
to store a list of objects in Java we can also create multi-dimensional arrays
for example we can create a two-dimensional array to store a matrix
or we can create a three-dimensional
59:00 - 59:30 array to store data for cube these are
useful in scientific computations let me show you so here we have a single
dimensional array to convert this to a two-dimensional array we need to add
another pair of square brackets now we have a compilation error because we need
to repeat these brackets on the other side so let's say we want to create a 2
by 3 matrix so 2 rows and 3 columns we add in other brackets here and change
these lengths to 2 and 3 so now we have
59:30 - 60:00 2 rows and 3 columns now to access
individual items in this array we need to supply two indexes first the index of
the row so we can go to the first row and then the first column and initialize
that to 1 now let us print this so and so you t-tap once again we use our
arrays class dot to string and pass this
60:00 - 60:30 object
take a look once again we get this weird string because here we're dealing with a
multi-dimensional array to solve this problem we need to use another method in
this class called deep to string use this for printing multi-dimensional
arrays take a look now we have this matrix which has two rows and in each
row we have three columns we can also create a three dimensional array all we
have to do is to add another pair of
60:30 - 61:00 brackets and specify the length of that
dimension pretty easy now what about the curly brace syntax let me show you so
let's revert this back to a two dimensional array we're gonna get rid of
the new operator and use curly braces now let's say in this matrix we're gonna
have two rows and three columns so each row is an array itself because it's a
list of items right so we add another array here let's say 1
2 3 then comma now we add the second row
61:00 - 61:30 which is another array in this row we're
gonna have 3 numbers 4 5 & 6 now let's remove this line we don't need
it anymore and print this array so here's the end result you have learned a
lot about variables ya learned that when
61:30 - 62:00 declaring them we need to initialize
them and we can always change their value later on throughout the lifetime
of our programs however there are times that we don't want the value of a
variable to change for example let's declare a variable called pi and set it
to 3.14 now here we need to add an F to represent this as a float because by
default Java compiler sees this number as a decimal okay now you know that we
use pi to calculate the area of a circle what if before we calculate the area of
a circle I come here and type pi equals
62:00 - 62:30 1 then all our calculations are gonna
get messed up we don't want this to happen that's when we use constants so
if we type final here Java compiler will treat this as a constant so once we
initialize this we cannot change its value later on you can see here we have
a compilation error and it says cannot assign a value to final variable pi so
pi is a final variable or a constant now
62:30 - 63:00 by convention we use all capital letters
to name constants so this should be PI beautiful now I tell you a little side
story in one of my early courses that I created years ago that was c-sharp
basics for beginners there I used the same example to teach the concept of
constants but I pronounce this word as P instead of Pi and believe it or not to
this day people make fun of me for saying P instead of Pi but that's how we
learned this back in Iran we pronounce
63:00 - 63:30 it as P and I think Greek people also
say P but anyway I just thought to share this video to change the mood now you're
done with constants next we're gonna talk about arithmetic
expressions in this tutorial we're going to talk
about arithmetic expressions in Java so in Java we have the same arithmetic
operators that we have in math we have addition subtraction multiplication
division and modulus which is the
63:30 - 64:00 remainder of a division let's look at a
few examples so I'm gonna declare an integer called result and here we can
type 10 plus 3 now when we print result it's gonna be 13 pretty straightforward
there you go so this is addition we also have subtraction multiplication division
is an interesting one let's take a look so here the result is a whole number
because in Java the division of two
64:00 - 64:30 whole numbers is a whole number if you
want to get a floating-point number here you need to convert these numbers to a
float or a double let me show you so we prefix this number with
parentheses and in parentheses we type double now we are casting or converting
this number to a double similarly we should do that here and now we have a
compilation error because on the left side we declared an integer but here the
result of this expression is a double
64:30 - 65:00 and by the way an expression is a piece
of code that produces a value so what we have here is an expression because it
produces a value so to fix this problem we need to change this to double now
when we run this program we get this floating point number beautiful so these
are the arithmetic operators and these numbers that we have here are called
operands we also have increment and decrement operators let me show you so
I'm gonna declare a new variable int X
65:00 - 65:30 we set it to 1 now if you want to
increase the value of x by 1 we use the increment operator now let's print this
on a terminal so we get 2 there you go we can apply this operator as a postfix
or as a prefix and we get the same result
take a look too however if we use this on the right side of an assignment
operator we get different results let me show you so I'm gonna declare another
variable Y we set it to X plus plus in
65:30 - 66:00 this case because we have applied the
increment operator as a postfix first the value of x will get copied to Y so Y
would be 1 and then X will be incremented by 1 so if you print x and y
x is gonna be 2 and Y is gonna be 1 take a look so X is 2 and Y is 1 beautiful
however if you apply this as a prefix
66:00 - 66:30 first X will be incremented by 1 so it
will be 2 and then it will be copied to Y so in this case both
X&Y will be to take a look so we get two and two now what if you want to
increment X by more than one let's say by two well there are two ways to do
this let's remove Y we don't really need it anymore we can write x equals x plus
2 so first we add 2 to X the result will
66:30 - 67:00 be three and then three will be copied
into X the other way is to use the Augmented or compound assignment
operator so we can write X plus equals two what we have on line eight is
exactly identical to what we have on line seven well as you can see it's
shorter so this is a better way to write the same code now this is one of the
Augmented assignment operators we have the Augmented assignment operator for
other arithmetic operators so we can
67:00 - 67:30 type X minus equals 2 and this would
reduce the value of x by 2 we also have multiply and divide so these are the
Augmented or compound assignment operators right now I've got a question
for you here we have declared this variable X it goes to 10 plus 3 times 2
what do you think is the result of this
67:30 - 68:00 expression the result is 16 let's run
this program and find out so run there you go we got 16 but why well this is a
very basic math concept that unfortunately a lot of people don't know
in math the multiplication and division operators have a higher priority so they
get applied first in this example this expression 3 times 2 is evaluated first
the result is 6 and then 6 is added to
68:00 - 68:30 10 that's why we get 16 now if you want
to change the order of these operators you can always use parentheses for
example if you want this expression to be evaluated first we wrap it in
parentheses so like this now Java compiler will first evaluate this
expression the result will be 13 and then 13 is multiplied by 2 so we get 26
take a look there you go so be aware of the order of
these operations parentheses always have
68:30 - 69:00 the highest priority then we have
multiplication and division and finally we have addition and subtraction in this
tutorial we're going to talk about casting and type conversion so I'm gonna
declare a short variable call X and set it to 1 and then I'm gonna declare an
integer called Y and set it to X plus 2 in this example we're adding a short to
an integer what do you think the result
69:00 - 69:30 is gonna be well let's take a look
so sou t let's print Y we get 3 that is what you were expecting but let me
explain what happens under the hood for this expression to get executed because
we're dealing with two different types of values one is a short the other is an
integer one of these values should be converted to the other type so they are
equal now I got a question for you how many bytes do we have in a short
variable we have 2 bytes how many bytes
69:30 - 70:00 do we have in an integer 4 bytes so any
values that we store in a short variable can also be stored in an integer
variable right so when this piece of code is gonna get executed this is
what's gonna happen first Java looks at the value in this variable it's 1 right
it's going to allocate another variable an anonymous variable somewhere in
memory we don't know where that is we don't know the name of that variable it
doesn't have a name it's anonymous that
70:00 - 70:30 variable is gonna be an integer then
Java is gonna copy the value of x into that memory space and then it will add
these two numbers together this is what we call implicit casting let me type it
here implicit casting that means automatic casting or automatic
conversion we don't have to worry about it whenever we have a value and that
value can be converted to a data type that is bigger casting or conversion
happens implicitly or automatically so
70:30 - 71:00 byte can be automatically converted to
short and this can be converted to int and long okay
now what about floating-point numbers let's look at an example I'm gonna
change this to a double one point one now here we have a compilation error
because on the right side of the assignment operator we have a
floating-point number a double on the left side we have an integer so we need
to change this to double now when we execute this code we're gonna get 3.1
let's verify this there you go now let's
71:00 - 71:30 see how casting happens here in this
case we're dealing with a double and an integer an integer is less precise than
a double because in a double we can have digits after the decimal point so in
this example Java is going to automatically cast this integer to a
double so that will be two point zero and then two point zero will be added to
one point one okay so back to this chain
71:30 - 72:00 here we're gonna have float and then
double so as a general rule of thumb implicit casting happens whenever you're
not gonna lose data there is no chance for data loss now what if you want Y to
be an integer so in this example we don't care about the digits after the
decimal point you want to see three on the terminal how should we do this this
is where we should explicitly cast the result so we should cast X to an integer
like this parentheses int this is
72:00 - 72:30 explicit casting we convert X to an
integer so the result would be one without a decimal point one will be
added to 2 and Y would be three take a look there you go so this is all about
implicit and explicit casting now this explicit casting can only happen between
compatible types so all these types are
72:30 - 73:00 compatible because they're all numbers
but we cannot cast a string to a number in other words if X was a string like
this let's say 1 we cannot cast eggs to an integer
because they are not compatible so how do we do this
well for all these primitive types you have learned you have wrapper classes so
in Java we have a class which is a reference type called integer this class
is defined in Java the Lang package and
73:00 - 73:30 in this class we have a method called
parse int so this method takes a string and returns an integer so integer is the
wrapper class for the int primitive type we also have short and in this class we
have parse short so it takes a string and returns a short similarly we have
float and double and obviously the name of these metas are different so here we
have parse float so back to this example
73:30 - 74:00 let's say we get X as a string and we
want to convert it to an integer this is how we do it
integer dot parse int we pass X here and then add it to take a look so we get 3
you might be curious why this matters why should we parse or convert a string
to a number to add it to something else well pretty much in most frameworks for
building user interfaces whether you're
74:00 - 74:30 building a desktop or a mobile
application or web application we always receive input from the user as a string
so if you have a form with a bunch of text boxes or drop-down lists almost
always we get values as a strings so that's why we need to convert these
strings to their numeric representation ok now what if X is a floating-point
number here what will happen when we try to parse this as an integer
let's take a look once again we get an
74:30 - 75:00 exception which is how Java reports
errors to our programs we're going to talk about exceptions in detail in the
future so if the user enters one point one we
cannot use this method instead we should use float or double let's say double
because that's easier double parse double so we parse this number as a
double add two to it and then store the result
in a double and then we will get 3.1
75:00 - 75:30 beautiful next we're gonna look at the
math class for performing mathematical operations in this tutorial we're going
to look at the math class for performing mathematical operations so in Java we
have this math class that is defined in Java that Lang package so it's always
there we don't need to explicitly import it now this class has a number of useful
methods the first method I'm gonna show you is the round method and with this we
can round a floating-point number to a
75:30 - 76:00 whole number so as you can see this
method is overloaded which means it's implemented twice in the first
implementation it takes a float and returns an int and a second
implementation it takes a double and returns a log so let's pass 1.1 as a
float to this method and store the result in an integer like this now we
print the result and we get one
76:00 - 76:30 beautiful another useful method is seal
or sealing which returns the smallest integer that is greater than or equal to
this number so the ceiling of 1.1 is 2 now here we have a compilation error
because this method returns a double but we're storing the result in an integer
so here we need to explicitly cast this to an integer and now you can see the
ceiling of this number is 2 we have another useful method that is floor so
the floor of a number is the largest
76:30 - 77:00 integer that is smaller or equal to this
number in this case it's gonna be 1 let's take a look there you go another
useful method is max which returns the greater of two values and once again
this method is overloaded so in the first implementation we get two integers
we have other implementations for longs floats and doubles so let's pass two
integers here one and two this will
77:00 - 77:30 return the greater number which is 2
there you go similar to this we have min is pretty straightforward in
the useful method is random for generating a random value between 0 and
1 once again we get a compilation error because this method returns a double so
let's change that to double now every time we run this program we get a
different number and this number is a floating-point number between 0 to 1 now
what if you want a number between 0 to
77:30 - 78:00 let's say 100 instead of 0 to 1 well we
simply multiply this by 100 take a look so every time we run this we get a
different number between 0 to 100 now if we don't want these digits after the
decimal point we can either round this number or cast it to an integer let me
show you so we can call math that round and pass the result of this expression
so I'm gonna cut this add parenthesis to
78:00 - 78:30 call the round method and then paste
that expression now let's run this code so every time we get a double we still
have the fraction here so we can change the type to an INT now we have a
compilation error because the round method returns a long but here we have
declared an integer this is one of those cases where implicit casting cannot
happen because we have a value that is
78:30 - 79:00 represented in 8 bytes of memory and you
want to store that in a variable that has only 4 bytes of memory so implicit
casting doesn't work but we can use explicit casting because we know the
result of this expression is a number between 0 to 100 so we can definitely
store it in an integer so let's add int here now let's run this again there you
go now what if we don't use the round method here let's see what happens so
I'm gonna remove the call to the round
79:00 - 79:30 method and simply I apply this casting
over here let's see what we get now every time we run this program we get 0
do you know why because here we're applying this casting to the result of
this method call not this entire expression as you saw earlier every time
we call the random method it generates a number between 0
to one so when we cast that number to an integer we'll lose the fraction we
always get zero and zero times 100 is
79:30 - 80:00 zero to solve this problem we need to
wrap this entire expression in parenthesis so we add parentheses around
this and now let me run this we get an integer between 0 and 100 quite often
when we worked with numbers we need to format them as currency values for
example we might have a number like this imagine this is the price of a product
to display this to the user you want to
80:00 - 80:30 add a dollar sign here and separate
every three digits with a comma or if you might have a number like 0.1 and we
want to represent this as a percentage value so instead of 0.1 you want to
display 10% so in this tutorial I'm gonna show you how to format numbers in
Java we have this class number format that is defined in Java the text package
in this package we have a lot of classes
80:30 - 81:00 for handling text dates numbers and so
on so let's press ENTER here it's important on the top beautiful now I
want to declare a variable so let's give this variable a name currency now we
need to instantiate this new number format however we get a compilation
error here let's take a look number format is abstract it cannot be
instantiated so in Java we have this concept of abstract classes so some
classes are abstract and they're basically like a half-baked cake we
cannot use the new operator to create an
81:00 - 81:30 instance of them we're going to talk
about abstract classes and why they exist later in the course for now
remember that we cannot create an instance of the number format class
because it's abstract so there is another way let me show you this class
has a bunch of methods that start with get so we have get currency instance and
when we call this method this will create an instance of the number format
class and return it so instead of using
81:30 - 82:00 the new operator we're gonna use this
method here this is what we call a factory method because it's like a
factory it creates new are jects now look at the return type of
this method it's a number format object okay so we call this method now we get
the return value and store it in a variable of type number format called
currency okay let me say improperly zoom out so you can see all the code there
you go so on the right side of the assignment operator we're calling the
get currency instance method we get the
82:00 - 82:30 result which is a number from an object
and store it in this variable okay now I'm gonna zoom in so you can see clear a
name alright that's better now this object
has a method for formatting values once again you can see this method is
overloaded we have multiple implementations we can give it a long or
a double or whatever so I'm gonna call this method and pass a value like one
two three four five six seven point
82:30 - 83:00 eight nine one so we have three digits
after decimal and a few other digits here now this method will return a
string representation of this number formatted as a currency so let's get
that and store it in a string variable like result and then we're gonna print
result on a terminal see what we get so we get this dollar sign every three
digits are separated using a comma and
83:00 - 83:30 we only have two digits after the
decimal point so this class is very handy in formatting numbers as
currencies we have another method for formatting a number as a percent and
that is get percent instance right now it returns an instance of the number
format class specialized for formatting numbers as a percent so we need to
rename this variable from currency to percent now we don't want to manually
change this because there are multiple
83:30 - 84:00 references to this variable this other
reference was not updated so let me show you the proper way to rename objects in
intellij if you right click here you can see this refactor menu and here we have
rename now look at this shortcut on the right side unfortunately it's not
visible in my recording window but on Mac is Shift + F
I always use shortcuts because they're faster so let's press shift and f6 now
we get this red box and below this we
84:00 - 84:30 can see a few suggestions for a better
name we can choose one of these or pick our own name I'm gonna change this to
percent and note that as I'm typing this the other reference gets updated
automatically so this is very helpful now let's press Enter
okay we're done with renaming now let's pass a different value here so let's say
we have a number like 0.1 we want to format this as a percent let's run the
program there you go you get 10%
84:30 - 85:00 beautiful now let me show you a cool
technique in this program we don't really need this percent object because
we have used it in a single place it would make sense to have this as a
separate variable if you have multiple references to it so what can we do here
we can completely get rid of this object so let's delete this piece of code we're
basically calling this method of the number format class as you know this
method returns a number format object so right after calling this method and
before the semicolon we can use the dot
85:00 - 85:30 operator to access the methods or
members of the number format object so here we call the format method straight
away and pass our value this is what we call method chaining we're chaining
multiple methods together so here's one method and here's another method now
this returns a string so we can store it in this result variable let me cut this
expression from here and put it over here now we have double semicolons I'm
going to delete one of them
85:30 - 86:00 all right beautiful in this tutorial I'm
gonna show you how to read input from the user in Java we have this scanner
class that is defined in Java did util package let's import this and create a
scanner object so new scanner now here inside this parenthesis we need to
specify where we're gonna read data from
86:00 - 86:30 we're gonna read it from the terminal
window are we gonna read it from a file or what to work with the terminal window
we type system dot in this is one of the fields in the system class a fill as I
told you before is like a variable that we define in a class so we have system
that in we also have system that out which we used to print something on the
terminal right now let's use system that in and terminate this statement with a
semicolon now this object has a bunch of
86:30 - 87:00 methods for reading data and all these
methods start with next so we have next byte for reading a byte we have next
line for reading a line we have next boolean for ending a boolean and so on
so let's call the next byte method and see what we get
this returns a byte value so we can store it in a byte variable let's say
someone's age and then we print it on a terminal saying you are plus h so here
we're concatenating a string with a byte
87:00 - 87:30 and in this scenario we're gonna have
implicit casting or implicit type conversion so Java will automatically
convert this byte variable here tray string so they can be added together
okay now let's run this program and see what happens so here in the terminal
window we can type 20 enter and it says your 20 beautiful but this is pretty
boring let's add a label here and ask the user to type something for example
before reading data we're gonna call the
87:30 - 88:00 print line method and say age : now
let's run the program so we get this label here however whatever we type will
appear on the next line this is because the print line method adds a new
line after this label the Soviets issue recall the print method now let's run
the program one more time we get this popup box because our program hasn't
finished execution so we need to tell
88:00 - 88:30 IntelliJ that you want to stop and rerun
this program all right now whatever we type appears right in front of this
label beautiful ENTER we are 20 now what if we type a floating-point number like
20 point 1 we get an exception because this method can only parse white values
if you want to get a floating-point number we need to call next float or
next double what if you want to read our
88:30 - 89:00 string we don't have next string we have
next and next line let's look at the differences so first I'm going to call
the next method here we have a compilation issue because this method
returns a string I'm gonna change this to a string let me collapse this that's
better we should also rename this variable so
what was the shortcut Shift + f6 now let's train just a name enter beautiful
and one last time we should also update
89:00 - 89:30 the label name run the program so I'm
gonna type my name here Marsh it says your Amash pretty under for one more
time this time I'm gonna type my full-name maha Madani but we don't get
the last name here's the reason these wars that we have here these are called
tokens every time we call the next method it reads one token so here we
have a space we have two tokens and we need to call the next method two times
to get the full name the first time we
89:30 - 90:00 call it it returns Marsh the second time
we call it it returns Hamid ani then we need to combine this suit together this
is not ideal so that's when we use the next line method with this method we get
the in turn line that the user enters no matter how many spaces or tabs are there
take a look so Marsh comma Donny and we get the full name now
what if I type a few spaces before my name let's see what happens
so those spaces also appear here and
90:00 - 90:30 this looks a little bit odd this is
where we use the trim method remember we trim we can get rid of all these white
spaces before or after a string so this next line method returns a string that
we are storing in this variable right now just before storing the result in
this variable here we can use the dot operator to access the members of this
string object so we call the trim method and then store the result in this
variable once again we're chaining
90:30 - 91:00 multiple methods here let's run the
program so a few spaces Maharani and you get this beautiful output right now it's time for a project I want
you to use what you have learned in a section and build a mortgage calculator
like this so when you run this program we get a few questions the first
question is the principal or the amount
91:00 - 91:30 of loan we want to get let's say
$100,000 the second question is the annual interest rate let's say three
point nine two percent and the third question is period in years let's say
you want to get a loan for thirty years so this program calculates our monthly
payments and displays it as a currency this is a great exercise for you to
practice all the materials you learn in this section now before you get started
I want to give you a few hints here is a
91:30 - 92:00 formula for calculating the mortgage or
the monthly payments I found this page on wikiHow comm is called calculate
mortgage payments so let's see how this works mortgage equals P or principal or
the amount we're gonna loan multiplied by R which is our monthly interest rate
this is very important so this number that we get here is our annual interest
rate we need to divide this by 12 also take into account that this number is
represented as a percent to calculate
92:00 - 92:30 the actual interest rate you need to
divide this number by 100 so in this example the interest rate is zero point
zero three nine two so whatever the user enters divided by 100 and then divided
by twelve to get to the monthly interest rate now we have this monthly interest
rate we need to multiply this by this expression here we need to add 1 to this
interest rate and raise it to the power of n where n is the number of payments
so we need to multiply this number by 12
92:30 - 93:00 or 12 months to calculate the number of
payments now to raise this number to the power of n you need to use the power
method of the math class so this math class has this power or power method
that takes two arguments or two values a and B so go ahead and spend ten to
fifteen minutes on this exercise when you're done come back see my solution all right let's see what I've done here
and by the way don't worry if your coat
93:00 - 93:30 is different from mine
we all think and coat differently so it's perfectly fine if your code is
different just look at my coat see what I've done
here and see if there are ways you can improve your coat
that's what matters okay so here in our main method first I've declared two
final variables or constants the first one is months in year which
I've set to 12 and the second one is percent which I've set to 100 the reason
I declared this constant is that I didn't want to have magic numbers in
this code so over here where we
93:30 - 94:00 calculate the monthly interest we get
the annual interest divided by percent and then months in here this code is
very self-explanatory someone else reading this code we'll have no problem
understanding what's going on here in contrast if you had a magic number here
like divided by 12 and then for whatever someone else reading this code would
wonder what is this for doing here what is 12 it's quite obvious to you that 12
is the number of months in a year but trust me sometimes other people cannot
see this straight away so as a best
94:00 - 94:30 practice avoid magic numbers in your
code always use constants or final variables to describe them
so let's revert this back all right so after declaring this constant I've
created this scanner object here we ask the first question
principle and we read the answer as an integer
I thought integer is a good datatype for storing the principle because short is
not enough with short we can store a
94:30 - 95:00 maximum of $32,000 that's not enough
what if someone wants to find us $1,000,000 so int is good and it allows
us to store a value up to two billion next we ask the second question annual
interest rate we read this as a float here I could use double but the interest
rate is a small number so float is sufficient for that we don't really need
double so we get the annual interest and then based on that we calculate the
monthly interest also see how I have named my variables all variables have a
proper meaningful names there are no
95:00 - 95:30 magic words here like MI as it short for
monthly interest or m1 or m2 do not use magic names for
your variables always use meaningful and descriptive names alright next we get
the period we read this as a byte because the maximum number we want to
support is 30 so one byte is sufficient to store the number 30 or anything
smaller now based on the number of years we calculate the number of payments note
the camel notation here I've capitalized
95:30 - 96:00 the first letter of every word except
the first word so we get the Earth's and x months in here
again the code is very self-explanatory once we collect all this data then we
calculate the mortgage so we get a principal multiplied by this expression
and then divide it by this other expression let's have a quick look here
now this looks a little bit complicated so if you're not download my source code
look below this video I'm attached it
96:00 - 96:30 for you to download and finally after we
calculate the mortgage we use the number format class to format this value as a
currency so we get a result store it in this string mortgage format it and print
it over here now here we can also avoid declaring this variable and simply add
this expression over here but it decided to do this to increase the readability
of this code otherwise this line would be so long but that's just my personal
preference you don't have to follow this
96:30 - 97:00 alright so this was my implementation of
the mortgage calculator however this program has a number of
problems the first problem is input validation so if we run this and enter a
non numeric value like XYZ our program crashes or as another example if we
enter a negative value here our program is not gonna behave properly so that's
where conditional statements come to the rescue in the next section we're going
to talk about conditional statements you
97:00 - 97:30 will learn how to use these statements
to validate the values entered by the user so that brings us to the end of
this section I hope you learn a lot and thank you for watching so in this section you'll learn all
about variables and constants you learn about primitive and reference types you
learn that primitive types store simple values but reference types hold
references to complex objects that's why we call them reference types you also
learn about casting and type conversion
97:30 - 98:00 you learn about two types of casting
implicit and explicit you learn how to work with numbers strings and arrays and
finally you learned how to read input from the terminal I hope you learned a
lot I've been enjoying the course so far in the next section we're going to look
at conditional statements for controlling the flow of our programs so
I'll see you in the next section
98:00 - 98:30 hey Marcia I just want to make a quick
announcement this course you've been watching is actually the beginning of my
complete Java series in this course we only talk about the basics but in my
complete series we go way beyond that so if you're serious about Java if you're
looking for a job as a Java developer I highly encourage you to enroll in my
complete Java series it's exactly the same structure the same quality but it
has way more content plus you will get a certificate of completion that you can
add to your resume so if you're
98:30 - 99:00 interested I put the link down below you
can get the course with a discount and if you're not happy for any reasons you
can ask for a refund within the first 30 days so I hope to see you in the course
in this section we're going to look at control flow or controlling the flow of
execution of our programs you're gonna start off by talking about comparison
operators for comparing values then I'm gonna talk about logical operators like
the logical and logical or and logical not we use these operators for
implementing real world rules and then
99:00 - 99:30 we're gonna talk about three different
types of control flow statements we're going to talk about conditional
statements for making decisions in our programs then we're going to talk about
loops for executing code repeatedly and finally we're going to revisit our
mortgage calculator and add error handling to it
so if a user enters an invalid value we keep asking them to try again all right
now let's jump in and get started we're
99:30 - 100:00 gonna start this section by talking
about comparison operators we use these operators to compare primitive values
for example our x on y equal or not so I'm gonna declare two integers x and y
now let's compare this to see if they're equal or not
so first I'm gonna add this print line statement now to compare these variables
we type x equals y so here we have two
100:00 - 100:30 equal signs and this is the Equality
operator don't confuse this with a single equal sign that we use for
assignment that is the operator used over here okay so two equal signs
repairs the Equality operator now when we run
this program we get true because these values are equal this expression that we
have here is called a boolean expression so earlier I told you that an expression
is a piece of code that produces a value
100:30 - 101:00 this piece of code produces a boolean
value true or false that's why we refer to it as a boolean expression we also
have the inequality operator so when we run this program we're gonna see false
let's take a look we get false because these two variables are equal so the
expression X is not equal to Y returns false we also have greater than greater
than or equal to less than and less than
101:00 - 101:30 or equal to so if I change Y to 2 this
expression is gonna evaluate to true because X is less than or equal to Y
take a look there you go next we're going to talk about logical
operators in the last tutorial you learn that a boolean expression produces a
boolean value now there are times we want to combine multiple boolean
expressions let me show you so I'm going to declare an integer called temperature
and set it to 22 next we declare a
101:30 - 102:00 boolean variable is warm now we want to
check to see if temperature is greater than 20 and less than 30 so we write a
boolean expression like this temperature greater than 20 here we need to use the
end operator so these two ampersands represent the logical and operator in
Java after this we add our second condition
temperature less than 30 now if both
102:00 - 102:30 these conditions are true the result of
this boolean expression is going to be true
otherwise if at least one of these is false the result would be false let's
take a look so I'm gonna print is warm on a terminal the result is true but if you change the
temperature to let's say 12 the result is gonna be false and this is how this
works Java will evaluate this expression
102:30 - 103:00 from left to right first it looks at the
first condition the first condition is false because temperature is not greater
than 20 so because this expression is false it doesn't matter what we have
after the and operator Java will ignore the other expressions because the and
operator will return true if both conditions are true okay now let's look
at another operator that is the or operator so I'm going to delete all this
code and start with a new example let's declare a boolean has high income we set
it to true and another boolean has good
103:00 - 103:30 credit we set this to true as well so
let's say we're building an application for processing loans we want to see if a
new applicant is eligible for a loan or not
so we declare another boolean is eligible and by the way look at the
names I have used for these variables they're very meaningful and descriptive
so here's the rule an applicant is
103:30 - 104:00 eligible if they have high income or
good credit if one of these conditions is true they are eligible so we write
has high income or so these two vertical bars represent the or operator so if
they have high income or good credit then they are eligible so with the or
operator if at least one condition is true the result will be true in this
example when Java evaluates this
104:00 - 104:30 expression it starts from the left side
this boolean variable is true so it doesn't matter what we have after Java
will not evaluate the rest of this expression it simply returns true
however if this variable was false Java would continue evaluating this
expression hoping that the next boolean value or the next boolean expression is
true so this is the or operator and finally we have the not operator that we
use to reverse a value let me show you how that works
so
104:30 - 105:00 let's declare another boolean variable
has criminal record we set this to false so here's the rule we want to implement
in order for someone to be eligible for a loan they should either have high
income or good credit and they should not have any criminal records so let's
see how we can implement this rule we have implemented the first part they
should either have high income or good credit now we want to make sure they
don't have any criminal records so we
105:00 - 105:30 need to combine the result of this
expression with this boolean value using the and operator so first we wrap this
expression in parentheses then we apply the end operator and here we add has
criminal record now you want to make sure they don't have criminal record and
this is where we use the not operator so the not operator will reverse the value
of this boolean variable or expression in this case this variable is set to
false so when we apply the not operator
105:30 - 106:00 to it the result would be true so if the
first condition is true and the second condition is true then that person is
eligible for a new loan so as you can see these logical operators are very
useful in implementing real word rules next we're going to talk about if
statements in this tutorial we're going to look at if statements in Java if
statements are extremely important
106:00 - 106:30 because they allow us to build programs
that can make decisions based on certain conditions here's an example in this
file we have a bunch of conditions if temperature is greater than 30 perhaps
you want to display two messages to the user it's a hot day drink plenty of
water otherwise if it's between 20 and 30 you want to print it's a nice day and
otherwise we want to print it's a cold day so let's see how we can implement
these rules in a Java program back to
106:30 - 107:00 our main file we start by declaring a
variable temperature we set it to 32 now we use an if statement followed by a
pair of parentheses inside this parenthesis we type
an expression or a boolean value so let's say temp is greater than 30 now if
this condition is true the statement that we had after this if statement will
be executed so let's print it's a hot
107:00 - 107:30 day let's run the program we get this
message because temperature is greater than 30 now what if you want to print
another message like drink plenty of water here we should add curly braces to
define a code block so if this condition is true all the code that we have inside
of this block would be executed let's add another message here drink water
okay so this was our first condition now let's add a second condition so after
the right brace we type LS if once again
107:30 - 108:00 we add our parentheses and inside these
parentheses we type a boolean expression if 10 is greater than 20 and it's less
than or equal to 30 you want to print a different message
like beautiful day now here I haven't added the braces because we have a
single statement so braces are only required if we have multiple statements
now this is a little bit controversial
108:00 - 108:30 some people believe we should always add
braces whether we have a single statement or not other people like
myself believe this creates unnecessary noise in the code in this tutorial I'm
gonna add the braces first and then remove them so you can see the
difference so let's add a pair of curly braces here and finally our last
condition so if none of these two conditions are true let me print a
different message so here we simply type LS we don't have any more conditions so
let's add a code block and print cold
108:30 - 109:00 day now let me define a few terms here
we have an if statement and this statement has three clauses or three
sections here's the first Clause here's the second Clause and here's the third
Clause pay attention to how a formatted this if statement so first we have the
if Clause the else if and else clauses are placed after these
right braces so we have some kind of
109:00 - 109:30 hierarchy here here we have a parent
followed by two children now let's get rid of these unnecessary braces and
reformat our code to see the difference so I'm gonna remove the braces for the
else clause and also one more time here that's better now we can simplify this
boolean expression basically we don't need this piece of code here here's the
reason if the first condition is not
109:30 - 110:00 true what does it mean that means the
temperature is less than or equal to 30 so this expression here is unnecessary
let's delete this and simplify our code that's better now look at how this code
is formatted on the top we have if the else if Clause is a little bit indented
but the else Clause is not indented it's at the same level as the if Clause and
this looks a little bit ugly the code is not symmetrical so if you want to get
rid of the curly braces a better way to
110:00 - 110:30 format this code is like this so instead
of adding the else if or else classes after curly braces we add them on a new
line now all these clauses are at the same level the code is easier to read in
this tutorial I'm gonna show you a very cool technique for simplifying if
statements so let's start by declaring a variable called income and set it to
120,000 now here we can use an
110:30 - 111:00 underscore in between these three digits
to make our code more readable now let's say we want to declare a boolean
variable called has high income if the income is more than $100,000 you want to
set this to true otherwise we want to set this to false so here we can write
an if statement like this if income is greater than $100,000 we want to set has
high income to true however we get a
111:00 - 111:30 compilation error here
let's take a look declaration not allowed here
so we cannot declare a variable here we can only declare variables inside code
blocks like this code block over here so to declare this variable we need to add
curly braces to define a new code block now we have a different problem this
variable that we have defined is scoped
111:30 - 112:00 to this code block so it's only
available here we cannot access it outside of this block let me show you so
if we print has high income you can see we have a compilation error cannot
resolve symbol has high income because this variable is not available outside
of the block in which it's declared so to solve this problem we can declare
this variable after setup this block boolean has high income and then we can
simply set it to true in this block now
112:00 - 112:30 we don't need these braces anymore so
let's simplify the code we add an else clause otherwise we said has high income
to false let's remove this print method we don't need it anymore so this is one
way to implement this scenario but this code looks very amateurish a
professional programmer doesn't write code like this let's improve it step by
step one way to improve this is to give this boolean variable an initial value
for example we can set it to false
112:30 - 113:00 initially and then we implement this
condition so if the income is more than $100,000 then we set this variable to
true with this we no longer need is else Clause
so that was one improvement but it's still not ideal in situations like this
we can completely get rid of this if statement here let me show you instead
of hard-coding false here we type our
113:00 - 113:30 expression income is greater than
$100,000 so here we have a boolean expression if this boolean expression
evaluates to true this boolean variable is going to be true otherwise it's going
to be false so this is the simplest the most elegant and the most professional
way to implement this scenario now one more improvement before we finish this
tutorial I personally prefer to wrap this
expression in parentheses even though technically we don't need parentheses
here but these parentheses make our code
113:30 - 114:00 more clear more readable let me show you
so I'm gonna wrap this inside these parentheses now it's very clear we're
obviously on the right side of this assignment operator we have a boolean
expression in this tutorial we're gonna look at the ternary operator in Java so
we're gonna continue with the example from the last tutorial we had this
income variable imagine this is the
114:00 - 114:30 income or customers now depending on
their income you want to put these customers in
different classes if their income is more than $100,000 you want to put them
in the first class otherwise we want to put them in the economy class so here's
one way to implement the scenario we declare this string variable class name
note that we cannot call this class because class is a reserved keyword so
class name now we write our first condition if income is greater than
$100,000 we said class name to first
114:30 - 115:00 otherwise we set it to economy now as you learn in the last tutorial
this code looks very amateurish a professional programmer doesn't write
code like this so one way to simplify this is to give this variable an initial
value so we assume they are in the economy class and then we check this
condition if this condition is true we put them in the first class so with this
we can get rid of this else clause that
115:00 - 115:30 is better now in the last tutorial I
showed you how to simplify this even further but the technique you learned
there cannot be used here in other words we cannot add income greater than
$100,000 here because here we have a boolean expression but on the left side
we have declared a string variable so we want to set this to a different string
depending on the result of this expression and this is where we use the
ternary operator so we start with our
115:30 - 116:00 condition then we type a question mark
if this condition is true we add this value here otherwise we add the other
value so this question mark and colon is the ternary operator in Java it has
three pieces first we have a condition if this condition is true this value
will be returned and assigned to our class named variable otherwise this
other value will be returned now we can
116:00 - 116:30 completely get rid of this if statement
so put the ternary operator in your tool box it's very helpful next we're going
to look at switch statements in Java in this tutorial we're going to look at
switch statements in Java we use three statements to execute different parts of
code depending on the value of an expression kind of similar to if
statements let me show you so let's say
116:30 - 117:00 we're gonna write a program and check
the role of the current user and then we're gonna print different messages or
give them different features depending on their row so let's declare a string
variable called role and here we set this to admin now to check the role of
the user we can write an if statement like this if role equals admin then
perhaps we want to print you are an admin now
you might be wondering why we have this
117:00 - 117:30 condition here it's obvious that this
condition is always true because we have set roll to admin but this is just for
demonstration in a real program we are not gonna hard code this admin here so
we're gonna read the role of the current user from somewhere else
we don't know what it is at the time of writing code okay so here we have one
condition let's write another condition else if
role equals moderator perhaps we want to display a different message so you are a
moderator and finally if the role is
117:30 - 118:00 none of these values you want to print
you are a guest so this is one way to implement this scenario using an if
statement we can also implement this using a switch statement and sometimes
that looks a little bit cleaner let me show you so we start with a switch
statement then we add parentheses and inside this parenthesis we add our
variable in this case row next we define
118:00 - 118:30 a block of code and in this block we add
one or more case clauses so we have a case for an admin we add a colon here
now what do we want to do here if the role is admin you want to print you are
an admin so I'm gonna copy this line from here and then paste it over here
now after this line we need to add a break statement to jump out of this
switch block okay then we add another case Clause so case moderator once again
you got a colon and here we're gonna
118:30 - 119:00 print this other message so we paste it
here and then we're gonna break now optionally we can have a default
clause here so if none of these previous cases apply the code that we write in
this section will be executed so here we want to print you are a guest
now here we don't need to use a break statement because we're at the end of
the switch block so will automatically jump out of this block in contrast if we
didn't use this break statement here
119:00 - 119:30 Java will continue executing these other
lines here so if the role is admin first it will execute this line and then it
will jump to this case block it will execute this other line and then after
it executes this break statement it will jump out of this switch block okay so
this is how we use a switch statement now compare this with wave statement
some people prefer to use if statements others prefer to use a switch statement
now one more thing before we finish this
119:30 - 120:00 tutorial here we're comparing the value
of role with strings but we could also use integers other than the long type so
if roll was a byte short or an integer our cases would look like this case one
case two and so on now here we have a compilation error because roll is a
string let's change this to an integer and we can initialize this to one so as
you can see with sweet statements we can
120:00 - 120:30 execute different code depending on the
value of an expression all right now it's time for an exercise
this exercise I'm gonna give you is a popular interview question so I want you
to write a program that behaves like this here we should enter a number if
this number is divisible by five we get this so if you run the program again and
enter ten once again we get fit now if
120:30 - 121:00 this number is divisible by 3 we get
buzz if this number is divisible by both five and three like fifteen or thirty or
whatever we get fizzbuzz and if this number is not divisible by five or three
like two we get the same number printed on the terminal so go ahead and spend
five to ten minutes on this exercise you'll see my solution next
121:00 - 121:30 all right to read the number first we
need to use the scanner object so scanner we import this and instantiate
it and as you know here we need to pass system that in to read data from the
terminal now we print a message so we're gonna use the print method instead of
print line here we add a label like number and then we call scanner the next
int to read a number we store it in this
121:30 - 122:00 variable number okay so the first part
is done now we need to check to see if this number is divisible by five or not
so we can write an if statement like this if number here we use the modulus
operator which returns the remainder of a division so we divide this by five and
if the remainder equals zero that means this number is divisible by 5 so we
print fizz now
122:00 - 122:30 otherwise if this number is divisible by
3 we print buzz we need another condition if this number is divisible by
5 and 3 so here we use the and operator number divisible by 3 equals 0 in this
case we want to print fizz buzz otherwise you want to print the same
number like this now this is not the
122:30 - 123:00 right solution as I will show you in a
second this program has a book but it's a very common solution that I see
amongst my students so let's run this program and see what is wrong here
all right here we enter five we get fizz utiful what if you enter ten ten is also
divisible by 5 so we get fits so far so good what about a number that is
divisible by 3 we get buzz good what if
123:00 - 123:30 we enter a number that is divisible by
both 5 & 3 like 15 we get physican why is that here's the reason with this
implementation if we enter 15 this first condition will evaluate to true so we
get fizz these other else clauses will be ignored and that is why this line
will not be executed so in situations like this you should have the most
specific conditions on the top and the
123:30 - 124:00 most generic ones on the bottom in this
case we want to move this condition to the top so if the number is divisible by
5 & 3 we're gonna print fizzbuzz so this is very specific otherwise if the number
is only divisible by 5 we print fizz else if it's divisible by 3 we print
buzz and finally if none of his conditions is true then we print the
same number now let's run the program
124:00 - 124:30 one more time so we enter 15 and we get
fizzbuzz beautiful so here's one way to solve this problem now I've seen some
people argue that we have repeated this expression twice number is divisible by
5 we have that here on line 12 as well as line 14 in programming we have this
concept called dry which is short for don't repeat yourself so some people
argue that here we have repeated this expression and this is not a good
solution here is another way let me show
124:30 - 125:00 you so we're gonna get rid of this
second condition here instead we're gonna add a code block over here so if
the number is divisible by 5 first we check to see if the number is also
divisible by 3 if that's the case we print fizzbuzz
otherwise we print just fizz like this okay now we no longer need
these two lines because we already implemented this concept here so first
we check to see if the number is
125:00 - 125:30 divisible by five if not we check to see
if it's divisible by three and otherwise so here is another way to solve this
problem but in my opinion this approach is kind of amateurish and ugly because
these nested if-else statements are considered a bad practice now this is
not terribly bad but the more you nest these L statements the more confusing
your code is going to be to other people so I personally prefer the previous
solution even though we had a bit of
125:30 - 126:00 repetition in the code the more you
program the more you build software the more you realize that there is no way to
build ideal software programming and problem solving is all about trade-offs
every solution has certain strengths and certain weaknesses this solution doesn't
have any repetition or duplication in the code but it has a nested structure
and these nested structures make our code hard to read and understand the
previous solution had a bit of repetition but it had a flat structure
there is no nesting here and this code
126:00 - 126:30 is cleaner and easier to read there are
times that we want to repeat one or more statements for example let's say we have
this hello world message here let's say we want to print this five times on the
terminal we don't want to repeat this code like this this looks very ugly
that's where we use loops in Java we have a few different types of loops the
first one that I'm going to talk about in this tutorial is for loops so let's
see how we can use a for loop here I'm
126:30 - 127:00 going to delete all this code you start
by typing the for keyword followed by parentheses and inside these parentheses
we need to do three things first we need to declare a loop or counter variable so
let's declare a variable called I and initialize it to 0 quit often use
variable names like I J and K for loop counters next we add a semicolon to
terminate the first statement then we
127:00 - 127:30 write a boolean expression that
determines how many times this loop is gonna get executed so I
than five as long as I is less than five this loop will be executed once again we
add a semicolon and finally we increment I by one like this so this is the basic
structure for a for loop now here we can repeat one or more statements using this
for loop so we can add our hello world message here like here we have a single
statement so we don't need braces but if
127:30 - 128:00 you have multiple statements that we
want to repeat we need to define a code block here now I'm gonna remove this
because you don't really need them so let's run this code and see what we get
you get hello world printed five times on the terminal beautiful now let me
explain how this code gets executed when Java sees this for loop first it will
execute this statement so here we are initializing I to zero then Java
evaluates this condition is this
128:00 - 128:30 condition true obviously it is because
zero is less than five so the control moves to line seven this line gets
executed now at the end of this iteration or at the end of this loop the
control moves here so I is incremented by one now we are at
the beginning of the second iteration once again this condition is evaluated
is one less than five obviously it is so once again the body of this loop gets
executed now fast forward at the end of
128:30 - 129:00 the fifth iteration I will become five
five is not less than five so the loop condition will be false and control
moves outside of this for loop now here's one thing you need to remember if
you want to execute something five times you can initialize your loop counter or
loop variable to zero and use the less than operator here another way is to
initialize this to one and then use the less than or equal to operator here now
to make this more interesting let's
129:00 - 129:30 print I over here so here we add a space
and then concatenate this string with I take a look so we get hello ward one two
three four five in contrast if we initialize I to zero and use the less
than operator we will get hello word zero one two
three four we can also print these numbers in reverse order so we
initialize I to five and execute this
129:30 - 130:00 loop as long as I is greater than zero
but here instead of incrementing I we decrement it now we get hello world five
four three two one so this is all about for loops next
we're gonna look at while loops in this tutorial we're gonna talk about while
loops in Java while loops are very
130:00 - 130:30 similar to for loops in terms of their
functionality but they're different in terms of syntax let me show you so we're
gonna continue with the example from the last tutorial I'm gonna rewrite this
code using a while loop so first we declare a loop variable and I initialize
it to zero next we type while and here in
parentheses we type our loop condition while I is greater than zero then we're
gonna execute the code inside this block
130:30 - 131:00 so I'm gonna copy this from here paste
it in this block and finally we need to decrement I like this so at the end of
each iteration we decrement I just like our for loops so as you can see we can
achieve the same thing using a for loop or a while loop
however the implementation using the for loop is a little bit lighter and cleaner
so in situations where you know ahead of time how many times you want to execute
one or more statements it's better to
131:00 - 131:30 use a for loop while loops are better in
situations where we don't know exactly how many times you want to repeat
something for example let's say we're going to write a program and ask the
user to continuously enter something until they type quit the moment they
type quit we're gonna terminate the program in that situation we don't know
how many times the user is going to enter something so let's write that
program using a while loop I'm gonna delete everything from here all right we're gonna start with our
while loop now what is our loop
131:30 - 132:00 condition here we don't have a counter
variable in this example instead we want to check to see if the user entered quit
or not so here we can declare a string called input and initialize it to an
empty string then we can write a while loop like this while input does not
equal to quit now this code is not gonna work because input is a string which is
a reference type and we cannot use
132:00 - 132:30 comparison operators between reference
types because these operators will compare the address or a string objects
not their value so if you have two strings quit and quit but stored in
different memory locations to have different addresses so we can use the
inequality operator to compare their value instead we need to use the equals
method of string objects so we want to check to see if the input equals quit
now here we need to apply the not operator so as long as the input does
not equal quit we're gonna continuously
132:30 - 133:00 ask the user to enter something so here
we can print a label like input and then we can use a scanner object to read
something from the terminal so let's create a scanner object and instantiate
it using system dot in I didn't call scanner that next this will return a
string so we can store it in this input
133:00 - 133:30 variable now with this implementation in
every iteration we're going to create a new scanner object so if the user enters
10 numbers we're gonna create 10 scanner objects in memory this is unnecessary
and it's actually a bad practice because it's going to pollute our memory so it's
better to create the scanner object outside of a while loop and then simply
use it here also here we are assuming that the user is typing everything in
lowercase so if they type quit in
133:30 - 134:00 uppercase or any combinations of
lowercase and uppercase characters this logic is not gonna work the way we want
so over here right after reading something from the terminal we're gonna
call the to lowercase method of string objects to
convert it to lowercase now to make this program more interesting let's echo back
whatever the user enters so we simply print that on the terminal now let's run
this and see what happens
134:00 - 134:30 so I'm going to enter if your numbers
like 1 2 & 3 whatever we type gets a code back but the moment we type quit
our program terminates so while loops are useful in situations where we don't
know ahead of time how many times we want to repeat something in Java we have
another type of loop called a do-while loop it's very similar to a while loop
but it gets executed at least once let
134:30 - 135:00 me show you what I mean so I'm gonna
rewrite the same code using a do-while loop we start with a do keyword then we
create a code block at the end of this code block we type while followed by our
loop condition so not input dot equals quit and then we terminate this using a
semicolon now inside the body of this loop we'll simply copy all these lines
we have here
135:00 - 135:30 now compared these two types of loops
with while loops we check the condition first so if the condition is false the
first time this loop will never get executed in contrast with do-while loops
we check the condition last so do-while loops always get executed at least once
even if the condition is false that is the only difference the reality most of
the time we use while loops do-while loops are rarely used but there are
certain cases for that so just be aware
135:30 - 136:00 of them but most of the time prefer to
use wire loops we're gonna continue with the example
from the last tutorial this program we have written has a tiny problem let me
show you so I'm gonna run this enter a couple numbers these numbers get echo
back beautiful if we type quit the program terminates
but the word quit also gets echoed back this is a bit weird so let's look at a
couple ideas for solving this problem
136:00 - 136:30 back to our code one way to solve this
problem is to check the input before printing it so here we can type an if
statement if the input does not equal quit then we're print it so not equal
input dot equals quit if this condition is true then we're going to print the
input let's take a look so one to quit
136:30 - 137:00 beautiful we solved the problem there is
another way to solve this problem as well let me show you we can reverse this
condition so if the user types quit you can immediately jump out of the loop
using the break statement so I'm gonna remove the nut operator if the user
types quit we're gonna break out of the loop otherwise we're gonna continue
execution and print this input on a terminal so when Java sees the break
statement it will ignore everything else
137:00 - 137:30 after and it will terminate the loop
let's run the program once again we enter a couple numbers
followed by quit beautiful so this is the break statement we also have the
continuous statement that moves control to the beginning of a loop let me show
you so let's imagine if the user types pass we don't want to echo that but also
we don't want to terminate the loop you want to ask the user to try one more
time so after we read the input we can check to see if input equals pass this
is where we use the continuous statement
137:30 - 138:00 when Java sees this it would move
control to the beginning of the loop so all these other statements are gonna get
ignored and what the user types is not gonna get printed on the terminal let's
run the program and see this in action so we type 1 2 pass it doesn't get
echoed back one more time and finally quit so to recap the break statement
terminates a loop and the continue
138:00 - 138:30 statement moves control to the beginning
of a loop now one last thing before finish this tutorial in this
implementation we don't really need this loop condition because the moment user
types quit this break statement is gonna kick in and terminate the loop so we can
simplify this code by using a true as our loop condition so this is always
true and this loop is gonna get executed forever until the user types quit this
is a very common technique that you see
138:30 - 139:00 amongst professional programmers just
remember if you're using this technique make sure to have a break statement
otherwise you will end up with an infinite loop that executes forever it
never terminates and that can be very dangerous in terms of memory consumption
so if you're using while true make sure you have a break statement in your loop the last type of loop we want to look at
is the for each loop in Java we use for
139:00 - 139:30 each loops to iterate over arrays or
collections let me show you so I'm going to start by declaring a string array
called fruit and we initialize this with three items let's say Apple mango and
orange now let's say we want to iterate over this array and print each item on a
terminal we can use any of the loops you learn about earlier like a for loop or a
while loop but we can also use the for each loop which is a bit easier let me
show you first I'm going to use the for
139:30 - 140:00 loop to iterate over this array so we
type for here we declare our loop variable or loop counter into I we set
it to zero as long as I is less than fruits that length we're going to
increment I by one after each iteration and here we simply print fruits of I
let's run the program and see what we get so we get each item on a new line
beautiful now there is another way to
140:00 - 140:30 write the same code using the for each
loop here we type for in parentheses with declare and loop variable but the
type of this variable should be based on the type of items in our array so here
we have a string array and that means every item in this array is a string so
here we should declare a string variable we call it fruit here we type a colon
and then the name of our array fruits now in each iteration fruit will hold
the value of one item in this array so
140:30 - 141:00 here we don't have to declare a numeric
counter we don't have to write a boolean expression like this we don't have to
increment our counter it's much easier to iterate over an array now if we print
fruit we get the exact same result as before take a look
so the first three items are from our for loop and here's the result our for
each loop so this is the for each loop however
this for each loop has a couple of
141:00 - 141:30 limitations one limitation is that it's
always forward only so we cannot iterate over this array from the end to the
beginning in contrast we can easily do this with a for loop so here we can
initialize I to fruits that length then we change this operator to greater than
and replace this value with zero so as long as I is greater than zero we're
going to decrement I the second limitation of the for each loop is that
here we don't have access to the index
141:30 - 142:00 of each item all we have is this loop
variable which holds the value of each item in this array in contrast in our
for loops we can access both the index and the actual item so I represents the
index of each item and fruits of I returns the item at the given index so
if you need the index then you'll have to use the for loop otherwise it's much
easier to use the for each loop
142:00 - 142:30 all right now let's get back to our
mortgage calculator and implement some basic error handling
so here I've changed this question by adding this label that identifies the
range of values we can enter so the minimum amount of loan we can get is
$1,000 and maximum is 1 million dollars so if I enter 1 here I get this message
enter a number between one thousand and one million and now we are asked this
question one more time if I keep
142:30 - 143:00 entering invalid values I get asked the
same question now let's enter a valid value like 1 million dollars next we'll
have to enter the annual interest rate now here we need to enter a value that
is greater than 0 and less than or equal to 30 so if I enter 0 we get this
message enter a value greater than 0 and less than or equal to 30
once again we're asked this question one more time so let's enter a valid value
like 3.9 to here we need to enter a
143:00 - 143:30 value between 1 and 30 so if you enter 0
we get an error message and we're asked the same question so let's enter 30 and
finally we get the result here's our mortgage or monthly payments so go ahead
and spend five to ten minutes on extending this mortgage calculator by
adding error-handling to it you'll see my solution X
143:30 - 144:00 all right let me show you how I'm gonna
solve this problem step by step so for each question we want to validate the
value that the user enters if the value is invalid you want to keep asking the
same question so this is where we can use an infinite loop let me show you so
here's our first question principal I'm gonna wrap these two lines inside an
infinite loop while true so we're gonna keep asking the same
question until the user enters a valid
144:00 - 144:30 value so here after we read the
principle we can write an if statement like this if principle is greater than
or equal to 1000 and it is less than or equal to 1 million and here we can use
an underscore to separate these digits to make our code more readable so if the
user enters a valid value then we can break out of this infinite loop
otherwise we're gonna print an error message so enter a value between 1001
million like this ok now if you look on
144:30 - 145:00 the right side here you can see this red
bar this indicates an error and here in this preview window you can see exactly
where we have an error it's down below on line 30 where we calculate the
mortgage so if you click on this red bar we jump over here principal is
highlighted in red so here we have a compilation error cannot resolve symbol
principle here is the reason because
145:00 - 145:30 we've wrapped these few lines inside
this while loop and earlier I told you that whenever you declare a variable
that variable scope to the Block in which it's defined so this is where we
have declared the principal variable and it's scoped to this block it's not
available outside of this block that's why we get this compilation error so to
solve this problem we need to declare this outside of this while loop we can
do it right here after radicular our
145:30 - 146:00 constants so let's say int principle and
we can initialize it to 0 now we remove the declaration from here and the error
is gone now we need to repeat the same pattern with other questions so real
quick here's our second question where we read the annual interest once again
we add an infinite loop now the moment we read the annual
interests invalidate the data so if
146:00 - 146:30 annual interest is greater than or equal
to let's say one and it is less than or equal to 30 then we're gonna break out
of this infinite loop now here we should also calculate the
monthly interest so the proper way to do this is like this if the user enters a
valid value we add a code block here first we calculate the monthly interest
and then break out of the loop otherwise we print an error message enter a value
between 1 and 30 okay now if you look to
146:30 - 147:00 the right side again we have two
compilation errors monthly interest is not resolved because we have declared it
inside of this block so let's move the declaration to the top here we remove
the float keyword and declare monthly interest over here
that's better and finally for the last
147:00 - 147:30 question one more time we're to wrap it
in this infinite loop this is where we read the number of
years and right after this line we need to do our data validation so if yours is
greater than or equal to one and it's less than or equal to 30 here we add a
code block this is where we calculate the number of payments and then we break
actually I forgot to type an S here
147:30 - 148:00 otherwise if the user enters an invalid
value will simply print an error message enter a value between 1 and 30 now here
once again we have a compilation error because number of payments cannot be
resolved so we remove the declaration from here and we'll be to the top right
here number of payments so this is how
148:00 - 148:30 we add data validation to this program
the problem is that this code the code inside the main method is now getting a
little bit too long and this hurt the maintainability of our program someone
else reading this code they have to look at all these statements to figure out
what's going on this is where we need to break this code down into smaller easier
to read and easier to understand chunks and that's what I'm gonna show you next so in this section you'll learn how to
control the flow of execution of your
148:30 - 149:00 programs we started off by talking about
the comparison operators for comparing primitive values then we talked about
the logical operators like and or and not I showed you how we can use these
operators for implementing real word rules and then we talked about three
types of control flow statements you learn about conditional statements like
if and switch for making decisions in our programs then you learn about loops
for executing code repeatedly we looked
149:00 - 149:30 at four types of loops for loops while
loops do-while loops and for each loops and finally we looked at the break and
continue statements for breaking or jumping to the beginning of a loop I
hope you learned a lot and been enjoying the course so far as Martin Fowler said any fool can write
code that a computer can understand good
149:30 - 150:00 programmers write code that humans can
understand I can't agree more if you have seen any of my courses you probably
know that I've put a lot of emphasis on writing clean code so I have dedicated
this entire section on clean coding we're going to continue extending our
mortgage calculator and add new features to it along the way you will see our
code starts to get messy and hard to maintain so I will show you a few
techniques for changing the structure of the code and make it clean and beautiful
are you ready let's jump in and get
150:00 - 150:30 started hey guys maj here i want to congratulate
you on your determination for learning I would really appreciate it if you
support me by liking and sharing this video also subscribe to my channel and
enable notifications so next time I upload a video you get notified now if
you want to learn more I would encourage you to enroll in my ultimate Java series
as I told you earlier this YouTube tutorial is the first two hours of this
series if you're serious about learning Java and want to become a professional
job of developer I highly encourage you
150:30 - 151:00 to enroll in this series in case you're
interested I put the link down below in the description box thank you on have a
fantastic day