Java

Assessment
  • Annotations

  • Collections

  • Exception Handling

  • Flow of control

  • Garbage Collection

  • Generics

  • Interfaces and Inheritance

  • IO

  • Java Type System

  • Lambdas

Questions

.https://docs.oracle.com/javase/tutorial/java/generics/bounded.html

Weak reference

.https://docs.oracle.com/javase/8/docs/api/java/lang/ref/WeakReference.html

public class Main {
  public static void main(String[] args) {
    System.out.print("hi");
  }
  static { System.out.print("how"); }    
}

// howhi

Reflection

.https://www.oracle.com/technical-resources/articles/java/javareflection.html

import java.lang.reflect.*;

   public class Main {
      private int f1(
       Object p, int x) throws NullPointerException
      {
         if (p == null)
            throw new NullPointerException();
         return x;
      }

      public static void main(String args[])
      {
         try {
           Class cls = Class.forName("Main");

            Method methlist[] 
              = cls.getDeclaredMethods();
            for (int i = 0; i < methlist.length;
               i++) {  
               Method m = methlist[i];
               System.out.println("name = " + m.getName());
               System.out.println("decl class = " +
                              m.getDeclaringClass());
               Class pvec[] = m.getParameterTypes();
               for (int j = 0; j < pvec.length; j++)
                  System.out.println("param #" + j + " " + pvec[j]);
               Class evec[] = m.getExceptionTypes();
               for (int j = 0; j < evec.length; j++)
                  System.out.println("exc #" + j 
                    + " " + evec[j]);
               System.out.println("return type = " +
                                  m.getReturnType());
               System.out.println("-----");
            }
         }
         catch (Throwable e) {
            System.err.println(e);
         }
      }
   }

// name = main
// decl class = class Main
// param #0 class [Ljava.lang.String;
// return type = void
// -----
// name = f1
// decl class = class Main
// param #0 class java.lang.Object
// param #1 int
// exc #0 class java.lang.NullPointerException
// return type = int
// -----

StringBuffer and StringBuilder

.https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html``

// x byte
// y int
z = x/y * 2.0;

You want subclasses in any package to have access to members of a superclass. Which is the most restrictive access that accomplishes this objective?

Polymorphism, Typecasting, Encapsulation, or Abstraction?

Object.wait() method does?

Interface vs Abstract?

Lambda Expressions

.https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class StoreInventory {
    Set<String> superCycleSet = new TreeSet<>();
    List<String> myStoreList = new ArrayList<>();

    public StoreInventory() {
        myStoreList.add("Bicycle");
        myStoreList.add("Tricycle");
        myStoreList.add("Scooter");
    }

    public void printStoreInventory() {
        myStoreList.forEach(i -> System.out.println("My Store item: " + i));
    }
}
import java.util.Map;
import java.util.TreeMap;

public class FruitStand {
    private Map<String, Integer> prices = new TreeMap<>();

    public FruitStand(){
        prices.put("Apple", 1);
        prices.put("Avocado", 2);
        prices.put("Banana", 1);
        prices.put("Mango", 2);
        prices.put("Starfruit", 4);
    }

    public void printPrices() {
        prices.forEach((key, value) -> System.out.println("Fruit: " + key + ", $" + value));
    }
}
public class MultithreadApp {

    Thread thread1;
    Thread thread2;

    public MultithreadApp() {
        thread1 = new Thread(new Runnable() {
            @Override
            public void run(){
                System.out.println("Thread #1 is running");
            }
        });

        // Task 1
        thread2 = new Thread(() -> System.out.println("Thread #2 is running"));
    }

    public void startThreads() {
        thread1.start();
        // Task 2
        thread2.start();
    }
}

Last updated

Was this helpful?