i# First Program in Java (Hello, Java!) ```java // To import everything from package directory-[java >> lang ] import java.lang.*; // class name same as that of .java file class HelloJava{ // main method public static void main(String args[]){ System.out.println("Hello, Java!"); } } ``` ## Import Statement ### If programmer wants to use any pre-defined class than it should be imported in the program through *import* statement ### Import statement makes the JVM go to the Java Standard Library, execute the code there and substitute the result ito the program ### In this process, no code was copied into source program; hence no wastage of memory and processor time ```powershell """ To run Program from CLI [In: Input] :: [op: Output] """ [In] javac HelloJava.java [In] java HelloJava.java [op] Hello Java ``` ## class ### `class` is a keyword which is used for creating user defined datatype. Each and every java program starts its execution from `main()` ### public + Since `main()` method can be accessed by every java programme, hence its access specifier must be `public` ### static + Since `main()` method is executing only once throughout the life of entire java program and it is not called with any object hence nature of `main()` is static ### void + `main()` method doesn't return anything value hence its datatype is `void` ## String args[ ] ### `String` is a class and each and every `main()` method of java takes **array of objects of String class** ## println( ) ### `println()` is a predefined method present in predefined class called **PrintStream** class + To access `println()` method, we require an object of **PrintStream** class. + An object of **PrintStream** class called **`out`** is created by **SunMicro System** in an another predefined class called **`System`** as a static data member. + Hence, to access **`println()`** and **`print()`** method, **`System`** class is used + In **`System.out.println()`** : **System** is **class**; **out** is **object**; **println()** is method + **_`static`_** **`public void main (String args[]){}`** is same as **_`public`_** **`static void main(){}`** + **`String args[]`** is same as **`String something_else[]`** ## Programme to display value of a variable ```java class Display{ public static void main(String args[]){ int a = 100; System.out.println("Value of a is: " + a); } } ``` ### Output ```powershell Value of a is: 100 ``` ## Programme to display sum of two numbers ```java class Sum{ public static void main(String args[]){ int a = 10; int b = 80; int c = a + b; System.out.println("Sum of" + a "and" + b + "is" + c); } } ``` ### Output ```powershell Sum of 10 and 80 is 90 ``` ### Out of the following classes, the same class will run in the name of which the program has been saved ```java class One{ public static void main(){ class Two{ public static void main(){ // code here } } } } ``` ### A programme can not have Two main( ) methods in single main class ```java class Test{ public static void main(){ System.out.println("First main method"); } public static void main(){ System.out.println("Second main method"); } } ``` ### Class is a collection of data member and methods ```java // Filename: Demo.java class First{ int a, b, c; void accept(){ a = 100; b = 900; } void sum(){ c = a + b; } void display(){ System.out.println("Sum is " + c); } } class Demo{ public static void main(String args[]){ First obj1 = new First(); obj.accept(); obj.sum(); obj.display(); } } ``` ## Another way ```java // Filename: Demo.java class First{ int a, b, c; // data members void accept(int x, int y){ // (x, y) :: local parameters a = x; b = y; } void sum(){ c = a + b; } void display(){ return c; } } class Demo{ public static void main(String args[]){ First obj = new First(); obj.accept(99, 1); obj.sum(); System.out.println(obj.display()); } } ``` ## Play with Java classes ```java class Demo { int x; public static void main (String args[]){ System.out.println(x); } } /* Output: Error... */ ``` ### Note + ### 1 non static method can call another static method directly if both belong to same class + ### 1 non static method can call another non static method directly if both belong to same class + ### 1 static can call another instance method (non-static) w.r.t. object + ### 1 instance method can call another static method directly if both belong to same class + ### If both methods are from different class, then calling will be w.r.t. class name