# Methods ## What are methods A java method can be interpreted as a subprogram. It is a collection of statements taht are grouped togehter to perform an operation ## Built- in vs User-defined Methods **Built-in:** Built-in methods are part of the complier package such as `System.out.println` **Function (return) - Type:** it calcualtes and return a value ```java public static int calculate(int number){ return 1; } ``` **Procedure-type:** executes some commands **Function (return)- type:** ```java public static return type method-name (parameter 1) ``` **Procedure-type method:** ```java public static void method-name (paramenter 1) ``` ## How to create a method In general, method declarations has 5 basic components: - **Modifier:** defines access type of the method i.e. from were it can be accessed in your application (For example: public) - **The return type:** the data type of the value returned by the method or void if it does not return a value (procedure and function type) - **Method name:** a specific names that identifies the method that can be used to invoke it later - **Parameter list:** Comma separated list of the input parameter are defined preceded with their data type, within the enclosed parentheses, If there are no parameters, you must use empty parentheses() - **Method body:** It is enclosed between braces. the code that you need to be execute to perfrom your intended operations ```java public int max(int x, int y) { if(x > y) { return x; } return y; } ``` ## How to call a method (method invocation To invoke a method you need the method name with the parameter list defined between parentheses **Exammple:** ``` Method Name (paramter list) ``` Must have () parentheses when calling a method, even with no passing parameters ## Pass-By-Value **What happens:** When a method is called, a copy of the value of each argument is passed to the method **In the second method:** This copy can be changed inside the method, however such a change has no effect on the actual argumnet ```java int num=10; double decimal = 5.2; NumberManeuvers(num decimal); System.out.println("num = " + num + "and decimal = " + decimal); public static void numberManeuvers(int i, double j) { if(i == 10) { j = 6.2; i = 12; } } // output: num = 10 and decimal = 5.2 ``` ## Pass-By-Reference **What happens:** When an object (Array, String) is passed to a method, its memory location address (rreference point) is used **The object:** Arrays & trings behave like objects **In the second method:** When their memory location is passed to the method the oject can be manipulated in the method resulting in actual changes to the object (Array, String) ``` int [] nums = {1, 2, 3}; testingArray(num); System.out.println("num[0] = " + num[0] + ", num[1] = " + num[1] + ", num[2] = " + num[2]); public static void testingArray(int[] value) { value[0] = 4; value[1] = 5; value[2] = 6; } } ``` ## Benefits to methods There are many advantages of using methods. Some of them are listed below: - It makes the program well structured - methods enhance the readability of the code. - It provides an effective way for the user to reuse the existing code. - Allows for easier debugging.