Skip to content

Java is the most widely used and in-demand programming language. It's used in 90% of fortune 500 company websites, most big banks and financial companies, almost all Android apps, and much, much more...

Notifications You must be signed in to change notification settings

avinashbest/core-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 

Repository files navigation

Function :

  • A block of code that performs a task.
 void sendEmail(){ ... } 
  • camelNamingConvention

Class:

  • A container for related functions.
 public class Main { public void main() { ... } } 
  • PascalNamingConvention

Compilation Process:

preview

  • JRE: Java Runtime Environment

preview

 avinashbest/ $ javac Main.java
 avinashbest/ $ cd ..
 src/ $ java com.avinashbest.Main

Interesting Facts about Java:

  • Java was developed by James Gosling in 1995.

preview

Types:

  • Primitive: for storing simple values, like numbers, characters, booleans.

preview

  • How primitive types are stored in memory.
 public class Main { public static void main(String[] args) { int x = 1; int y = 1; } }

preview

  • Reference: for storing complex objects, like date, mail, message

  • How primitive types are stored in memory.

 public class Main { public static void main(String[] args) { Point point1 = new Point(1, 1); Point point2 = point1; } }

preview

String:

 public class Main { public static void main(String[] args) { String message = "Hello World" + "!!"; System.out.println(message.endsWith("!!")); System.out.println(message.startsWith("!!")); System.out.println(message.length()); System.out.println(message.indexOf("l")); System.out.println(message.indexOf("sky")); System.out.println(message.replace("!", "*")); System.out.println(message.toLowerCase(Locale.ROOT)); System.out.println(message.toUpperCase(Locale.ROOT)); System.out.println(message.trim()) ; /*To remove unnecessary space.*/ /*NOTE: IN JAVA, ALL THE METHOD WHICH PERFORM OPERATION ON STRING RETURNS A NEW STRING.*/ /*ALL THE STRING IN JAVA ARE IMMUTABLE*/ System.out.println(message); } }

Escape Sequence:

 public class Main { public static void main(String[] args) { String message1 = "Hello \"Avinash\""; String message2 = "C:\\Windows\\..."; String message3 = "C:\nWindows\n..."; String message4 = "C:\tWindows\t..."; System.out.println(message1); System.out.println(message2); System.out.println(message3); System.out.println(message4); } }

Arrays:

 public class Main { public static void main(String[] args) { int[] number = {2, 4, 6, 8, 10}; System.out.println(number.length); Arrays.sort(number); System.out.println(Arrays.toString(number)); } }

Multi-Dimensional Arrays:

 public class Main { public static void main(String[] args) { int[][] numbers = {{1, 2, 3}, {4, 5, 6}}; System.out.println(Arrays.toString(numbers)); System.out.println(Arrays.deepToString(numbers)); } }

Arithmetic Expressions:

 public class Main { public static void main(String[] args) { int result = 10 + 3; System.out.println(result); result = 10 - 3; System.out.println(result); result = 10 / 3; System.out.println(result); result = 10 * 3; System.out.println(result); result = 10 % 3; System.out.println(result); } }

Increment / Decrement Operator:

 public class Main { public static void main(String[] args) { int x = 1; x++; System.out.println(x); ++x; System.out.println(x); x = 1; int y = x++; // post-increment System.out.println(x + "\t" + y); y = ++x; //pre-increment System.out.println(x + "\t" + y); x += 2; //x = x + 2 System.out.println(x); x -= 2; //x = x - 2 System.out.println(x); x *= 2; //x = x * 2 System.out.println(x); x /= 2; //x = x / 2 System.out.println(x); x %= 2; //x = x % 2 System.out.println(x); } }

Order of Operations:

preview

 public class Main { public static void main(String[] args) { int x = (10 + 3) * 2; } }

Type Casting:

 public class Main { public static void main(String[] args) { /*Implicit Casting*/ /*byte > short > int > long > float > double*/ short x = 1; int y = x + 2; System.out.println(y); /*Explicit Casting*/ double a = 1.1; int b = (int) (a + 2); System.out.println(b); /*Parsing String in Integer*/ String str = "123"; System.out.println(Integer.parseInt(str)); } }

The Math Class:

 public class Main { public static void main(String[] args) { System.out.println(Math.round(1.2F)); System.out.println(Math.round(1.2)); System.out.println(Math.ceil(1.2)); System.out.println(Math.floor(1.2)); System.out.println(Math.max(200, 300)); System.out.println(Math.min(200, 300)); System.out.println(Math.random());//by default return a doubleType random number b/w 0 to 1 System.out.println(Math.round(Math.random() * 100)); System.out.println((int) (Math.random() * 100)); } }

Formatting Numbers:

 public class Main { public static void main(String[] args) { NumberFormat currency = NumberFormat.getCurrencyInstance(); String result = currency.format(123456.789); System.out.println(result); NumberFormat percent = NumberFormat.getPercentInstance(); String percentage = percent.format(0.1); System.out.println(percentage); System.out.println(NumberFormat.getCurrencyInstance().format(134343134313L)); } }

Reading Input:

 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Age: "); byte age = scanner.nextByte(); System.out.print("Name: "); // String name = scanner.next(); //returns the next token String name = scanner.nextLine().trim(); //returns next line System.out.println("You are " + age); System.out.println("Your name " + name); } }

Mortgage Calculator - v1.0:

 public class Main { public static void main(String[] args) { final byte MONTHS_IN_YEAR = 12; final byte PERCENT = 100; Scanner scanner = new Scanner(System.in); System.out.print("Principal: "); int principal = scanner.nextInt(); System.out.print("Annual Interest Rate: "); float annualInterest = scanner.nextFloat(); float monthlyInterest = annualInterest / PERCENT / MONTHS_IN_YEAR; System.out.print("Period (Years): "); byte years = scanner.nextByte(); int numberOfPayments = years * MONTHS_IN_YEAR; /*calculating mortgage*/ double mortgage = principal * (monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments) / (Math.pow(1 + monthlyInterest, numberOfPayments) - 1)); System.out.println("Mortgage: " + NumberFormat.getCurrencyInstance().format(mortgage)); } }

Comparison Operators:

 public class Main { public static void main(String[] args) { int x = 1; int y = 1; System.out.println(x == y); System.out.println(x != y); System.out.println(x > y); System.out.println(x >= y); System.out.println(x < y); System.out.println(x <= y); } }

Logical Operators:

 public class Main { public static void main(String[] args) { int temperature = 22; boolean isWarm = temperature > 20 && temperature < 30; System.out.println(isWarm); boolean hasHighIncome = true; boolean hasGoodCredit = true; boolean hasCriminalRecord = false; boolean isEligible = (hasGoodCredit || hasHighIncome) && !hasCriminalRecord; System.out.println(isEligible); } }

if-statement:

 public class Main { public static void main(String[] args) { int temperature = 32; if (temperature > 32) { System.out.println("It's a hot day"); System.out.println("Drink water"); } else if (temperature > 20) { System.out.println("Beautiful day"); } else { System.out.println("Cold day"); } /*Simplifying if-statement*/ int income = 120_000; boolean hasHighIncome; if (income > 100_000) { hasHighIncome = true; } else { hasHighIncome = false; } /*Above Expression can be simplified by professional be like*/ int income = 120_000; boolean hasHighIncome = income > 100_000; } }

Ternary Operators:

 public class Main { public static void main(String[] args) { int income = 120_000; String className; if (income > 100_000) { className = "First"; } else { className = "Economy"; } /*Simplification can be done as*/ income = 120_000; className = "Economy"; if (income > 100_000) { className = "First"; } /*More Simplification can be done using Ternary Operator*/ income = 120_000; className = (income > 100_000) ? "First" : "Economy"; } }

Switch Statements:

 public class Main { public static void main(String[] args) { String role = "admin"; switch (role) { case "admin": System.out.println("You're an admin"); break; case "moderator": System.out.println("You're a moderator"); break; default: System.out.println("You're a guest"); } if (role == "admin") { System.out.println("You're an admin"); } else if (role == "moderator") { System.out.println("You're a moderator"); } else { System.out.println("You're a guest"); } } }

Exercise: FizzBuzz:

 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Number: "); int number = scanner.nextInt(); boolean moduloFive = (number % 5) == 0; boolean moduloThree = (number % 3) == 0; if (moduloFive && moduloThree) { System.out.println("FizzBuzz"); } else if (moduloFive) { System.out.println("Fizz"); } else if (moduloThree) { System.out.println("Buzz"); } else { System.out.println(number); } } }

Loops in Java:

 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); /*FOR LOOPS*/ for (int i = 0; i < 5; i++) { System.out.println("Hello, Java!"); } /*WHILE LOOPS: USED WHEN DON'T KNOW HOW MANY TIMES WE NEED TO EXECUTE CODE*/  int i = 0;  while (i < 5) {  System.out.println("Hello, Java!");  i++;  }   String input = "";  while (!input.equals("quit")) {  System.out.print("Input: ");  input = scan.next().toLowerCase(Locale.ROOT);  System.out.println(input);  }  /*DO-WHILE LOOPS: SIMILAR TO WHILE-LOOP BUT IT EXECUTES ATLEAST 1 TIME*/  do {  System.out.print("Input: ");  input = scan.next().toLowerCase(Locale.ROOT);  System.out.println(input);  } while (!input.equals("quit"));  }  }

Break & Continue Keywords:

 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String input = ""; while (true) { System.out.print("Input: "); input = scan.next().toLowerCase(Locale.ROOT); if (input.equals("pass")) { continue;/*moves control to the beginning of the loop*/ } if (input.equals("quit")) { break;/*break out of the loop*/ } System.out.println(input); } } }

Mortgage Calculator - v2.0:

 public class Main { public static void main(String[] args) { final byte MONTHS_IN_YEAR = 12; final byte PERCENT = 100; int principal; float annualInterest; float monthlyInterest; byte years; int numberOfPayments; Scanner scanner = new Scanner(System.in); while (true) { System.out.print("Principal ($1K - $1M): "); principal = scanner.nextInt(); if (principal >= 1000 && principal <= 1_000_000) { break; } System.out.println("Enter a value between $1000 and $1,000,000"); } while (true) { System.out.print("Annual Interest Rate (1% - 30%): "); annualInterest = scanner.nextFloat(); if (annualInterest >= 1 && annualInterest <= 30) { monthlyInterest = annualInterest / PERCENT / MONTHS_IN_YEAR; break; } System.out.println("Enter a value between 1 and 30"); } while (true) { System.out.print("Period (1 Years- 30 Years): "); years = scanner.nextByte(); if (years >= 1 && years <= 30) { numberOfPayments = years * MONTHS_IN_YEAR; break; } System.out.println("Enter a value between 1 and 30"); } /*calculating mortgage*/ double mortgage = principal * (monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments) / (Math.pow(1 + monthlyInterest, numberOfPayments) - 1)); System.out.println("Mortgage: " + NumberFormat.getCurrencyInstance().format(mortgage)); } }

Creating Methods:

 public class Main { public static void main(String[] args) { String message = greetUser("Avinash", "Kumar"); System.out.println(message); } public static String greetUser(String firstName, String lastName){ return "Hello " + firstName + " " + lastName; } }

Mortgage Calculator - v3.0:

 public class Main { public static void main(String[] args) { int principal = (int) readNumber("Principal ($1K - $1M): ", 1000, 1_000_000); float annualInterest = (float) readNumber("Annual Interest Rate (1% - 30%): ", 1, 30); byte years = (byte) readNumber("Period (1 Years- 30 Years): ", 1, 30); double mortgage = calculateMortgage(principal, annualInterest, years); System.out.println("Mortgage: " + NumberFormat.getCurrencyInstance().format(mortgage)); } public static double readNumber(String prompt, double min, double max) { Scanner scanner = new Scanner(System.in); double value; while (true) { System.out.print(prompt); value = scanner.nextDouble(); if (value >= min && value <= max) { break; } System.out.println("Enter a value between " + min + " and " + max); } return value; } public static double calculateMortgage(int principal, float annualInterest, byte years) { final byte MONTHS_IN_YEAR = 12; final byte PERCENT = 100; float monthlyInterest = annualInterest / PERCENT / MONTHS_IN_YEAR; short numberOfPayments = (short) (years * MONTHS_IN_YEAR); return principal * (monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments) / (Math.pow(1 + monthlyInterest, numberOfPayments) - 1)); } }

Mortgage Calculator - Clean Code:

 public class Main { final static byte MONTHS_IN_YEAR = 12; final static byte PERCENT = 100; public static void main(String[] args) { int principal = (int) readNumber("Principal ($1K - $1M): ", 1000, 1_000_000); float annualInterest = (float) readNumber("Annual Interest Rate (1% - 30%): ", 1, 30); byte years = (byte) readNumber("Period (1 Years- 30 Years): ", 1, 30); printMortgage(principal, annualInterest, years); printPaymentSchedule(principal, annualInterest, years); } private static void printPaymentSchedule(int principal, float annualInterest, byte years) { System.out.println(); System.out.println("PAYMENTS SCHEDULE:"); System.out.println("------------------"); for (short month = 1; month <= years * MONTHS_IN_YEAR; month++) { double balance = calculateBalance(principal, annualInterest, years, month); System.out.println(NumberFormat.getCurrencyInstance().format(balance)); } } private static void printMortgage(int principal, float annualInterest, byte years) { System.out.println(); System.out.println("MORTGAGE"); System.out.println("--------"); double mortgage = calculateMortgage(principal, annualInterest, years); System.out.println("Monthly Payments: " + NumberFormat.getCurrencyInstance().format(mortgage)); } public static double readNumber(String prompt, double min, double max) { Scanner scanner = new Scanner(System.in); double value; while (true) { System.out.print(prompt); value = scanner.nextDouble(); if (value >= min && value <= max) { break; } System.out.println("Enter a value between " + min + " and " + max); } return value; } public static double calculateBalance(int principal, float annualInterest, byte years, short numberOfPaymentsMade) { float monthlyInterest = annualInterest / PERCENT / MONTHS_IN_YEAR; short numberOfPayments = (short) (years * MONTHS_IN_YEAR); double balance = principal * (Math.pow(1 + monthlyInterest, numberOfPayments) - Math.pow(1 + monthlyInterest, numberOfPaymentsMade)) / (Math.pow(1 + monthlyInterest, numberOfPayments) - 1); return balance; } public static double calculateMortgage(int principal, float annualInterest, byte years) { float monthlyInterest = annualInterest / PERCENT / MONTHS_IN_YEAR; short numberOfPayments = (short) (years * MONTHS_IN_YEAR); return principal * (monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments) / (Math.pow(1 + monthlyInterest, numberOfPayments) - 1)); } }

Refactoring

  • Changing the structure of the code without changing its behaviour.
  • Keep your methods short
  • Extract repetitive patterns
  • Extract highly related statements

Types of Errors

  • Compile - Time Errors
  • Run - Time Errors

Running a Java Archive (.jar) in local:

 $ java -jar file-name.jar

Thank You !

preview

About

Java is the most widely used and in-demand programming language. It's used in 90% of fortune 500 company websites, most big banks and financial companies, almost all Android apps, and much, much more...

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages