4. Members Of Class
Srinivas Prasad K T
Engineering Manager @ Decathlon Technology || Ex Harman || Ex E2Open || Oracle Java? || Spring Boot? || WDIO? || Playwright? || Java Script & Type Script? || Scrum? || Gatling? || AI? || Tricentis Tosca? || ACCELQ?
Members of Class
Fields:
Methods:?
Static members
The static keyword in java is used for memory management mainly. We can apply java static keyword with variables, methods, blocks and nested class. The static keyword belongs to the class than instance of the class.
The static can be:
Java static variable
If you declare any variable as static, it is known static variable.
Advantage of static variable
It makes your program memory efficient (i.e. it saves memory).
Java static method
If you apply static keyword with any method, it is known as static method.
Advantages
Disadvantages
I would go further than other people who've answered this question - public static methods should probably?only ever be used?on stateless classes with no public constructor. You shouldn't use them on factory classes because of the disadvantages above - especially the problem that if I want to subclass the factory, so that the factory method can produce a subclass of the object it was originally a factory for, I can't if it's a static method.
Programs:
public class DemoStatic
{
static int i=10;
public static void main(String[] args)
{
System.out.println("Program starts...");
System.out.println("The value of i is: "+DemoStatic.i);
System.out.println("Program ends...");
}
}
Output:
Program starts...
The value of i is: 10
Program ends...
public class DemoStaticMethod
{
public static void test()
{
System.out.println("Running static test method: ");
}
public static void main(String[] args)
{
System.out.println("Program starts...");
DemoStaticMethod.test();
System.out.println("Program ends...");
}
}
Output:
Program starts...
Running static test method:?
Program ends...
public class DemoNonStaticVariables
{
int i = 10;
public static void main(String[] args)
{
System.out.println("Program starts...");
DemoNonStaticVariables d = new DemoNonStaticVariables();
System.out.println("The value of i is : "+d.i);
System.out.println("Program ends...");
}
}
Output:
Program starts...
The value of i is : 10
Program ends...
public class DemoNonStaticMethod
{
public void test()
{
System.out.println("Running non-static test() method: ");
}
public static void main(String[] args)
{
System.out.println("program starts...");
DemoNonStaticMethod d = new DemoNonStaticMethod();
d.test();
System.out.println("Program ends...");
}
}
Output:
program starts...
Running non-static test() method:?
Program ends...
Memory?
Computer memory is any physical device capable of storing information temporarily or permanently.
Read only memory: Write once, read multiple times
Read/Write memory: it is classified into two types,
Note:? - Program is made-up of two segments
Programs
public class Demo
{
static int i = 10;
int k = 21;
public static void main(String[] args)
{
System.out.println("Program starts...");
System.out.println("Value of i is: "+Demo.i);
Demo d = new Demo();
System.out.println("Value of k is: "+d.k);
System.out.println("Program ends...");
}
}
Output:
Program starts...
Value of i is: 10
Value of k is: 21
Program ends...
Global variables And Local variables
A class can contain any of the following variable types.
On class level variables are classified into two types
Global Variables:
Local variables:
Note: -?
‘Illegal modifier for parameter i; only final is permitted’
Program:
public class Demo
{
static int m = 10;//Static global variable
int n = 21; // non-static global variable
public static void main(String[] args)
{
System.out.println("Program starts...");
int i = 10;
System.out.println("Value of local variable i is: "+i);
System.out.println("Value of static global variable m is: "+Demo.m);// Referring static global variable on class name
Demo d = new Demo();
System.out.println("Value of non-static global variable n is: "+d.n);// referring non-static global variable by using reference variable
System.out.println("Program ends...");
}
}
Output:
Program starts...
Value of local variable i is: 10
Value of static global variable m is: 10
Value of non-static global variable n is: 21
Program ends...
public class Demo1
{
static int i = 10;
int k = 21;
public static void main(String[] args)
{
System.out.println("Program starts...");
System.out.println("Value of i is: "+Demo1.i);
Demo1 d1 = new Demo1();
System.out.println("Value of k is: "+d1.k);
Demo1 d2 = new Demo1();
d2.k = 40;
System.out.println("Value of k is: "+d2.k);
System.out.println("Program ends...");
}
}
Output:
Program starts...
Value of i is: 10
Value of k is: 21
Value of k is: 40
Program ends...
Note:?
领英推荐
Execution:
Programs:
public class Demo1
{
static int i = 10;
static void test()
{
int j = 20;
System.out.println("Value of j is: "+j);
}
public static void main(String[] args)
{
System.out.println("Program starts...");
Demo1.test();
System.out.println("Program ends...");
}
}
Output:
Program starts...
Value of j is: 20
Program ends...
public class Demo1
{
static int i = 10;
static void test()
{
System.out.println("Value of i is: "+Demo1.i);
}
static void test1()
{
System.out.println("Value of i is: "+Demo1.i);
}
public static void main(String[] args)
{
System.out.println("Program starts...");
Demo1.test();
Demo1.i = 12;
Demo1.test1();
System.out.println("Program ends...");
}
}
Output:
Program starts...
Value of i is: 10
Value of i is: 12
Program ends...
public class Demo1
{
static int add(int a, int b)
{
System.out.println("Running Add() method: ");
int sum = a+b;
return sum;
}
public static void main(String[] args)
{
System.out.println("Program starts...");
int result = Demo1.add(12, 34);
System.out.println("Result is: "+result);
System.out.println("Program ends...");
}
}
Output:
Program starts...
Running Add() method:?
Result is: 46
Program ends...
Program to pass the value of instance to the another member
public class PassValueOfInstanceMembers
{
int i = 10;
double d = 23.23;
static void sample(int a)
{
System.out.println("Running sample method()");
System.out.println("The value of a is: "+a);
}
public static void main(String[] args)
{
System.out.println("Program starts...");
PassValueOfInstanceMembers p = new PassValueOfInstanceMembers();
PassValueOfInstanceMembers.sample(p.i);//First get the i value than pass to sample method
System.out.println("Program ends...");
}
}
Output:
Program starts...
Running sample method()
The value of a is: 10
Program ends...
public class Demo11
{
int i = 10;
double d = 23.12;
static void sample(Demo11 d)
{
System.out.println("Running sample method...");
System.out.println("Value of i is: "+d.i);
System.out.println("Value of d is: "+d.d);
}
public static void main(String[] args)
{
System.out.println("Program starts...");
Demo11 d1 = new Demo11();
Demo11.sample(d1); // Passing the address of the instance
System.out.println("Program ends...");
}
}
Output:
Program starts...
Running sample method...
Value of i is: 10
Value of d is: 23.12
Program ends...
Blocks
There are two types of Blocks, They are
Static initialization blocks or Static Blocks:
static?
{
????// whatever code is needed for initialization goes here
}
Ex:?
public class Demo4
{
// Global variables
static int i = 10;
// Declaration and initialization
static
{
i = 28;
// Initialization
}
public static void main(String[] args)
{
System.out.println("Program starts...");
System.out.println("Value of i is: "+Demo4.i);
System.out.println("Program ends...");
}
}
Output:
Program starts...
Value of i is: 28
Program ends...
Programs:?
public class Demo
{
static
{
System.out.println("Running 1st static block...");
}
public static void main(String[] args)
{
System.out.println("Program starts...");
System.out.println("Program ends...");
}
static
{
System.out.println("Running 2nd static block...");
}
}
Output:
Running 1st static block...
Running 2nd static block...
Program starts...
Program ends...
Instance initializer block:
class?Bike
{??
????int?speed=100;??
}??
class Bike
{
int speed;
Bike()
{
System.out.println("speed is "+speed);
}
{
speed=100;
}
public static void main(String args[])
{
System.out.println("Program starts...");
Bike b1=new Bike();
Bike b2=new Bike();
System.out.println("Program ends...");
}
}
Output:
Program starts...
speed is 100
speed is 100
Program ends...
Rules for instance initializer block :
public class Demo1
{
{
System.out.println("Running 1st non-static block...");
}
public static void main(String[] args)
{
System.out.println("Program starts...");
Demo1 d = new Demo1();
System.out.println("----------------");
Demo1 d1 = new Demo1();
System.out.println("Program ends...");
}
{
System.out.println("Running 2nd non-static block...");
}
}
Output:
Program starts...
Running 1st non-static block...
Running 2nd non-static block...
----------------
Running 1st non-static block...
Running 2nd non-static block...
Program ends...
public class Demo2
{
static
{
System.out.println("Running static block...");
}
{
System.out.println("Running non-static block...");
}
public static void main(String[] args)
{
System.out.println("Program starts...");
Demo2 d = new Demo2();
System.out.println("Program ends...");
}
}
Output:
Running static block...
Program starts...
Running non-static block...
Program ends...
public class Demo2
{
static
{
System.out.println("Running static block...");
}
{
System.out.println("Hi, welcome to non-static block");
}
public static void main(String[] args)
{
System.out.println("Program starts...");
Demo2 d = new Demo2();
System.out.println("Program ends...");
}
static
{
System.out.println("Hi, Welcome to static block");
}
{
System.out.println("Running non-static block...");
}
}
Output:
Running static block...
Hi, Welcome to static block
Program starts...
Hi, welcome to non-static block
Running non-static block...
Program ends...