Thursday, June 29, 2017

Why do we need to go for Synchronized method ?


val = false
if(!val) {
   val = true;
}

Suppose say there are two threads A and B or even more....

Always the Interviewning time between two threads could be extremely less..probably depending upon the RAM speed of the server or our computer...

So If Thread A checks for the value of false...and before setting it as true..Thread B would access
the same if loop with the value set as false only...

So that's why we need to go for synchronized method so that only one thread can access that block at a time.

Synchronized method() {

val = false
if(!val) {
  val = true;
}

}

Boolean Operator or more than one exclamatory operator

public class Collectionsclassnotinrtdotjar {

        static boolean method(){
boolean moreThanOne = false;
if(!moreThanOne){
return !!!moreThanOne;
}else{
}
return fucking;
}
public static void main(String[] args) throws Exception {

System.out.println(method());

        }

}

Sunday, June 25, 2017

Autocloseable example

try(InputStream in1 = new FileInputStream(filename)){
}

try executing this...

Exception in ternary operator

Object a = (null==mode||"".equalsIgnoreCase(mode))?new Exception("ssssss"):"hj";
System.out.println(a);

final in try catch


What is the output of this program ?

final String c;
try
{
c = "a";
}
catch (Exception e)
{
c = "a";
}

Answer : Compilation error because c has been already assigned value in try block 

Friday, January 6, 2017

Where can you declare System.out.println() in a Java class

        public class SystemOutPrintln {
              System.out.println(".......");
              static{
    System.out.println("static block");
      }
      static void method1(){
    System.out.println("method1");
      }
      public static void main(String[] args) {
    System.out.println("main Method");
      }
        }


        because System is only static

Wednesday, January 4, 2017

Stackoverflowerror or InfiniteRecursion Example

package OverridingMethods;
public abstract class ClassA {
    public void methodF(){
    System.out.print("SuperClass--methodF+++");
    }
}

package OverridingMethods;
public class ClassB extends ClassA{
@Override
public void methodF() {
this.methodF();
System.out.print("SubClass--methodF.... || ");
}
public static void main(String[] args) {
ClassA classa = new ClassB();
classa.methodF();
}
}

Exception in thread "main" java.lang.StackOverflowError
at OverridingMethods.ClassB.methodF(ClassB.java:21)
at OverridingMethods.ClassB.methodF(ClassB.java:21)
at OverridingMethods.ClassB.methodF(ClassB.java:21)
at OverridingMethods.ClassB.methodF(ClassB.java:21)
        .........................................................................................

Scopes of Interface in Java

The scopes are public and just interface [Which means default ]

(no private, protected )

Example :

package OverridingMethods;

(1A) [public] interface interfaceOverrideMethods {
              or just
(2a) interface interfaceOverrideMethods {

void overriddenMethod1();
void overriddenMethod2();
}

(2b)
In the case of ClassImplemtingInterfacefromAnotherPackage has to be in the same package 

package OverridingInterfacesFromAnotherPackage;
import OverridingMethods.*;

public class ClassImplemtingInterfacefromAnotherPackage implements interfaceOverrideMethods{
public void overriddenMethod1() {
}
public void overriddenMethod2() {
}
}


(1B) 

package OverridingMethods;
import OverridingMethods.*;

public class ClassImplemtingInterfacefromAnotherPackage implements interfaceOverrideMethods{
public void overriddenMethod1() {
}
public void overriddenMethod2() {
}

}

Is Correct. 

(1C)

package OverridingInterfacesFromAnotherPackage;
import OverridingMethods.*;

public class ClassImplemtingInterfacefromAnotherPackage implements interfaceOverrideMethods{
public void overriddenMethod1() {
}
public void overriddenMethod2() {
}

}

Is also Correct.

Sunday, January 1, 2017

Possible scenario of when you can get JNI or JVM or classloader error

Sample class
----------------

package java.util;

public class ArrayListClass {
public static void main(String[] args) {

ArrayList list = new ArrayList();
HashMap hmap = new HashMap();
hmap.put(1,1);
hmap.put(2,2);
hmap.put(3,3);
hmap.put(4,4);
hmap.put(5,5);
hmap.put(6,6);

list.add(hmap);

Iterator itr = list.iterator();
System.out.println("ArrayListClass on Iterators.......");
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}


Errors : 
---------

Since you have declared the same name as the java.util Package you will get the error 
as 

JNI or JVM or Classloader error.







Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.util
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:659)
at java.lang.ClassLoader.defineClass(ClassLoader.java:758)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)