package com.interview.basics.java; public class InstanceInitializer { private int a = 10; // instance variable initializer //private int b = c; // <- This causes compiling error private int b = initB(); // b is set to 0, since c is not initialized yet. private int c; { c = 20; // this code block is called instance initializer } private int d = 2 * a; private int e = initE(); private int h = initH(); private int f; private int g; public InstanceInitializer(){ f = a * 100; g = c * 100; } private int initB(){ return 100 * c; } private int initE(){ return 100 * a; } private int initH() { return 100 * c; } public int getA() { return a; } public int getB(){ return this.b; } public int getC(){ return this.c; } public int getD() { return d; } public int getE() { return e; } public int getF() { return f; } public int getG() { return g; } public int getH() { return h; } public static void main(String[] args) { InstanceInitializer init = new InstanceInitializer(); System.out.println("A is initialized as: " + init.getA()); System.out.println("B is initialized as: " + init.getB()); System.out.println("C is initialized as: " + init.getC()); System.out.println("D is initialized as: " + init.getD()); System.out.println("E is initialized as: " + init.getE()); System.out.println("H is initialized as: " + init.getH()); System.out.println("F is initialized as: " + init.getF()); System.out.println("G is initialized as: " + init.getG()); } }