More Related Content


More from Svetlin Nakov(20)


Java Foundations: Methods

  1. Java Foundations Methods in Java Defining and Using Methods. Overloads
  2. Your Course Instructors Svetlin Nakov George Georgiev
  3. The Judge System Sending your Solutions for Automated Evaluation
  4. Testing Your Code in the Judge System  Test your code online in the SoftUni Judge system:
  5. Methods Defining and Using Methods, Overloads
  6. Table of Contents 1. What Is a Method? 2. Naming and Best Practices 3. Declaring and Invoking Methods  Void and Return Type Methods 4. Methods with Parameters 5. Value vs. Reference Types 6. Overloading Methods 7. Program Execution Flow 7
  7. What Is a Method Void Methods
  8. Simple Methods  Named block of code, that can be invoked later  Sample method definition:  Invoking (calling) the method several times: 9 public static void printHello () { System.out.println("Hello!"); } Method named printHello printHello(); printHello(); Method body always surrounded by { }
  9.  More manageable programming  Splits large problems into small pieces  Better organization of the program  Improves code readability  Improves code understandability  Avoiding repeating code  Improves code maintainability  Code reusability  Using existing methods several times Why Use Methods? 10
  10.  Executes the code between the brackets  Does not return result Void Type Method 11 public static void printHello() { System.out.println("Hello"); } public static void main(String[] args) { System.out.println("Hello"); } main() is also a method Prints "Hello" on the console
  11. Naming and Best Practices
  12.  Methods naming guidelines  Use meaningful method names  Method names should answer the question:  What does this method do?  If you cannot find a good name for a method, think about whether it has a clear intent Naming Methods 13 findStudent, loadReport, sine Method1, DoSomething, HandleStuff, SampleMethod
  13. Naming Method Parameters  Method parameters names  Preferred form: [Noun] or [Adjective] + [Noun]  Should be in camelCase  Should be meaningful  Unit of measure should be obvious 14 firstName, report, speedKmH, usersList, fontSizeInPixels, font p, p1, p2, populate, LastName, last_name, convertImage
  14.  Each method should perform a single, well-defined task  A Method's name should describe that task in a clear and non-ambiguous way  Avoid methods longer than one screen  Split them to several shorter methods Methods – Best Practices 15 private static void printReceipt() { printHeader(); printBody(); printFooter(); } Self documenting and easy to test
  15.  Make sure to use correct indentation  Leave a blank line between methods, after loops and after if statements  Always use curly brackets for loops and if statements bodies  Avoid long lines and complex expressions Code Structure and Code Formatting 16 static void main(args) { // some code… // some more code… } static void main(args) { // some code… // some more code… }
  16. Declaring and Invoking Methods {…}
  17.  Methods are declared inside a class  main() is also a method  Variables inside a method are local public static void printText(String text) { System.out.println(text); } Declaring Methods 18 Method Name Return Type Parameters Method Body
  18.  Methods are first declared, then invoked (many times)  Methods can be invoked (called) by their name + (): Invoking a Method 19 public static void printHeader() { System.out.println("----------"); } public static void main(String[] args) { printHeader(); } Method Declaration Method Invocation
  19.  A method can be invoked from:  The main method – main() Invoking a Method (2) public static void main(String[] args) { printHeader(); } public static void printHeader() { printHeaderTop(); printHeaderBottom(); } static void crash() { crash(); }  Some other method  Its own body – recursion
  20. Methods with Parameters double String long
  21.  Method parameters can be of any data type  Call the method with certain values (arguments) Method Parameters 22 public static void main(String[] args) { printNumbers(5, 10); } static void printNumbers(int start, int end) { for (int i = start; i <= end; i++) { System.out.printf("%d ", i); } } Passing arguments at invocation Multiple parameters separated by comma
  22.  You can pass zero or several parameters  You can pass parameters of different types  Each parameter has name and type public static void printStudent(String name, int age, double grade) { System.out.printf("Student: %s; Age: %d, Grade: %.2fn", name, age, grade); } Method Parameters (2) 23 Parameter type Parameter name Multiple parameters of different types
  23.  Create a method that prints the sign of an integer number n: Problem: Sign of Integer Number 24 2 The number 2 is positive. -5 The number 0 is zero. 0 The number -5 is negative.
  24. Solution: Sign of Integer Number 25 public static void main(String[] args) { printSign(Integer.parseInt(sc.nextLine())); } public static void printSign(int number) { if (number > 0) System.out.printf("The number %d is positive.", number); else if (number < 0) System.out.printf("The number %d is negative.", number); else System.out.printf("The number %d is zero.", number); }
  25.  Write a method that receives a grade between 2.00 and 6.00 and prints the corresponding grade in words  2.00 - 2.99 - "Fail"  3.00 - 3.49 - "Poor"  3.50 - 4.49 - "Good"  4.50 - 5.49 - "Very good"  5.50 - 6.00 - "Excellent" Problem: Grades 26 3.33 Poor 4.50 Very good 2.99 Fail
  26. public static void main(String[] args) { printInWords(Double.parseDouble(sc.nextLine())); } public static void printInWords(double grade) { String gradeInWords = ""; if (grade >= 2 && grade <= 2.99) gradeInWords = "Fail"; //TODO: make the rest System.out.println(gradeInWords); } Solution: Grades 27
  27.  Create a method for printing triangles as shown below: Problem: Printing Triangle 28 1 1 2 1 2 3 1 2 1 1 1 2 1 2 3 1 2 3 4 1 2 3 1 2 1 3 4
  28.  Create a method that prints a single line, consisting of numbers from a given start to a given end: Solution: Printing Triangle (1) 29 public static void printLine(int start, int end) { for (int i = start; i <= end; i++) { System.out.print(i + " "); } System.out.println(); }
  29.  Create a method that prints the first half (1..n) and then the second half (n-1…1) of the triangle: Solution: Printing Triangle (2) 30 public static void printTriangle(int n) { for (int line = 1; line <= n; line++) printLine(1, line); for (int line = n - 1; line >= 1; line--) printLine(1, line); } Method with parameter n Lines 1...n Lines n-1…1
  30. Live Exercises
  31. Returning Values From Methods
  32. The Return Statement  The return keyword immediately stops the method's execution  Returns the specified value  Void methods can be terminated by just using return 33 public static String readFullName(Scanner sc) { String firstName = sc.nextLine(); String lastName = sc.nextLine(); return firstName + " " + lastName; } Returns a String
  33. Using the Return Values  Return value can be:  Assigned to a variable  Used in expression  Passed to another method 34 int max = getMax(5, 10); double total = getPrice() * quantity * 1.20; int age = Integer.parseInt(sc.nextLine());
  34.  Create a method which returns rectangle area with given width and height Problem: Calculate Rectangle Area 35 3 4 12 5 10 50 6 8 48 7 8 56
  35. Solution: Calculate Rectangle Area 36 public static double calcRectangleArea( double width, double height) { return width * height; } public static void main(String[] args) { double width = Double.parseDouble(sc.nextLine()); double height = Double.parseDouble(sc.nextLine()); double area = calcRectangleArea(width, height); System.out.printf("%.0f%n",area); }
  36.  Write a method that receives a string and a repeat count n  The method should return a new string Problem: Repeat String 37 abc 3 abcabcabc String 2 StringString
  37. public static void main(String[] args) { String inputStr = sc.nextLine(); int count = Integer.parseInt(sc.nextLine()); System.out.println(repeatString(inputStr, count)); } private static String repeatString(String str, int count) { String result = ""; for (int i = 0; i < count; i++) result += str; return result; } Solution: Repeat String 38
  38.  Create a method that calculates and returns the value of a number raised to a given power Problem: Math Power 39 public static double mathPower(double number, int power) { double result = 1; for (int i = 0; i < power; i++) result *= number; return result; } 5.53 256 28 166.375
  39. Live Exercises
  40. Value vs. Reference Types Memory Stack and Heap
  41. Value vs. Reference Types 42
  42.  Value type variables hold directly their value  int, float, double, boolean, char, …  Each variable has its own copy of the value Value Types 43 int i = 42; char ch = 'A'; boolean result = true; Stack 42 A true (4 bytes) (2 bytes) (1 byte) result ch i
  43.  Reference type variables hold а reference (pointer / memory address) of the value itself  String, int[], char[], String[]  Two reference type variables can reference the same object  Operations on both variables access / modify the same data Reference Types 44
  44. Value Types vs. Reference Types int i = 42; char ch = 'A'; boolean result = true; Object obj = 42; String str = "Hello"; byte[] bytes ={ 1, 2, 3 }; HEAP STACK true (1 byte) result A (2 bytes) ch 42 (4 bytes) i int32@9ae764 obj 42 4 bytes String@7cdaf2 str Hello String byte[]@190d11 bytes 1 2 3 byte []
  45. Example: Value Types 6 public static void main(String[] args) { int num = 5; increment(num, 15); System.out.println(num); } public static void increment(int num, int value) { num += value; } num == 5 num == 20
  46. Example: Reference Types 7 public static void main(String[] args) { int[] nums = { 5 }; increment(nums, 15); System.out.println(nums[0]); } public static void increment(int[] nums, int value) { nums[0] += value; } nums[0] == 20 nums[0] == 20
  47. Live Exercises
  48. Overloading Methods
  49.  The combination of method's name and parameters is called signature  Signature differentiates between methods with same names  When methods with the same name have different signature, this is called method "overloading" public static void print(String text) { System.out.println(text); } Method Signature 50 Method's signature
  50.  Using the same name for multiple methods with different signatures (method name and parameters) Overloading Methods 51 Different method signatures static void print(int number) { System.out.println(number); } static void print(String text) { System.out.println(text); } static void print(String text, int number) { System.out.println(text + ' ' + number); }
  51.  Method's return type is not part of its signature  How would the compiler know which method to call? Signature and Return Type 52 public static void print(String text) { System.out.println(text); } public static String print(String text) { return text; } Compile-time error!
  52.  Create a method getMax() that returns the greater of two values (the values can be of type int, char or String) Problem: Greater of Two Values 53 z char a z 16 int 2 16 bbb String aaa bbb
  53. Live Exercises
  54. Program Execution Flow
  55. public static void printLogo() { System.out.println("Company Logo"); System.out.println(""); } public static void main(String[] args) { System.out.println("before method executes"); printLogo(); System.out.println("after method executes"); }  The program continues, after a method execution completes: Program Execution
  56. Main  "The stack" stores information about the active subroutines (methods) of a computer program  Keeps track of the point to which each active subroutine should return control when it finishes executing Program Execution – Call Stack Method B Method A Main Call Stack call Start Method A Method B call return return
  57.  Create a program that multiplies the sum of all even digits of a number by the sum of all odd digits of the same number:  Create a method called getMultipleOfEvensAndOdds()  Create a method getSumOfEvenDigits()  Create getSumOfOddDigits()  You may need to use Math.abs() for negative numbers Problem: Multiply Evens by Odds Evens: 2 4 Odds: 1 3 5 -12345 Even sum: 6 Odd sum: 9 54
  58. Live Exercises
  59.  …  …  … Summary  Break large programs into simple methods that solve small sub-problems  Methods consist of declaration and body  Methods are invoked by their name + ()  Methods can accept parameters  Methods can return a value or nothing (void)
  60.  …  …  … Next Steps  Join the SoftUni "Learn To Code" Community  Access the Free Coding Lessons  Get Help from the Mentors  Meet the Other Learners

Editor's Notes

  1. Hello, I am Svetlin Nakov from the Software University (SoftUni). Together with my colleague George Georgiev, we continue teaching this free Java Foundations course and the basic concepts from Java programming, such as arrays, lists, methods, strings, classes, objects and exceptions, to prepare you for the "Java Foundations" official exam from Oracle. In this lesson your instructor George will explain and demonstrate how to use methods in Java. Methods allow developers to declare sub-programs in their classes and programs. Declaring a method means to give a name for certain block of commands and invoke these commands later by their name. Methods can accept parameters (input data) and return a result (output data). This is the reason why they are sometimes called "functions" (like in math). Your instructor George will explain how methods work through live coding examples and will give you some hands-on exercises to gain practical experience. Are you ready? Let's start learning!
  2. Before the start, I would like to introduce your course instructors: Svetlin Nakov and George Georgiev, who are experienced Java developers, senior software engineers and inspirational tech trainers. They have spent thousands of hours teaching programming and software technologies and are top trainers from SoftUni. I am sure you will like how they teach programming.
  3. Most of this course will be taught by George Georgiev, who is a senior software engineer with many years of experience with Java, JavaScript and C++. George enjoys teaching programming very much and is one of the top trainers at the Software University, having delivered over 300 technical training sessions on the topics of data structures and algorithms, Java essentials, Java fundamentals, C++ programming, C# development and many others. I have no doubt you will benefit greatly from his lessons, as he always does his best to explain the most challenging concepts in a simple and fun way.
  4. Before we dive into the course, I want to show you the SoftUni judge system, where you can get instant feedback for your exercise solutions. SoftUni Judge is an automated system for code evaluation. You just send your code for a certain coding problem and the system will tell you whether your solution is correct or not and what exactly is missing or wrong. I am sure you will love the judge system, once you start using it!
  5. // Solution to problem "01. Student Information". import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(; String name = sc.nextLine(); int age = Integer.parseInt(sc.nextLine()); double grade = Double.parseDouble(sc.nextLine()); System.out.printf("Name: %s, Age: %d, Grade: %.2f", name, age, grade); } }
  6. In this section the instructor George will explain the concept of "methods" and how to use methods in Java. In Java, methods (which are called functions in some other programming languages) allow developers to declare sub-programs in their classes and programs. Declaring a method means to give a name for certain block of commands and invoke these commands later by their name. Methods can accept parameters (input data) and return a result (output data). This is the reason why they are sometimes called "functions", like in math. Let's learn how to work with methods in Java. George will give you many examples and hands-on exercises to develop your practical skills.
  7. (c) 2007 National Academy for Software Development - All rights reserved. Unauthorized copying or re-distribution is strictly prohibited.*
  8. Add Image!
  9. (c) 2007 National Academy for Software Development - All rights reserved. Unauthorized copying or re-distribution is strictly prohibited.*
  10. Did you like this lesson? Do you want more? Join the learners' community at Subscribe to my YouTube channel to get more free video tutorials on coding and software development. Get free access to the practical exercises and the automated judge system for this coding lesson. Get free help from mentors and meet other learners. Join now! It's free. SOFTUNI.ORG