Java Basics

 

(lectures programs)

 

OnLine Documentations

 

 

 Everything is an Object

 

First Example:    HelloDate  Run  Applet

public class HelloDate {

 public static void main(String[] args) {

  System.out.println("Hello CS476/CS576 students, it's:");

  System.out.println(new Date() );
 }

}

To Compile:

%  make

OR

% javac  HelloDate.java

To Run:

% java  HelloDate


 

 

 Controlling Program Flow

 

Operators: precedence & assignment.

Decision: if  &  switch.

Looping: while & for.

 

Example: VowelsAndConsonants Run Applet

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

    for (int i = 0; i < 100; i++) {
      char c = (char)(Math.random() * 26 + 'a');
      System.out.print(c + ": ");
      switch (c) {

      case 'a': 
      case 'e':
      case 'i':
      case 'o':
      case 'u':
          System.out.println("vowel");

          break;
      case 'y':
      case 'w':
         System.out.println( "Sometimes a vowel");

         break;
      default:
           System.out.println("consonant");

      }}}

}


 

 

 The Java IO System

 

Example:  IOStreamDemo.java

public class IOStreamDemo {

   public static void main (String[] args)

       throws IOException {

// Print the length and content of the input file

File file = new File(args[0]);

long length = file.length();

System.out.println("file lenght is: " + length);

BufferedReader inpf = new BufferedReader(

                      new FileReader(file));

String str;

System.out.println ("The content of " +  file);

while((str = inpf.readLine())!= null)

     System.out.println(str);

// Transfer bytes from in to out

      String infile = args[0];

      String outfile = args[1];

      InputStream fin = new FileInputStream(infile);

      OutputStream fout = new FileOutputStream(outfile);

      byte[] buf = new byte[1024];

      int len;

      while ((len = fin.read(buf)) > 0) {

         fout.write(buf, 0, len);

      }

      fin.close();

      fout.close();

// Reading standard input and Append to file.

      FileOutputStream appendedFile =

                          new FileOutputStream(outfile,true);

      BufferedReader stdin = new BufferedReader(

                          new InputStreamReader(System.in));

      String st="";

      System.out.print("Enter line or type CTRL-D to finish:");

      while (true)  {

        try {

                st = stdin.readLine();

        }

        catch(EOFException e) {

           System.err.println("End of stream");

        }

        if ( st == null) break;

        System.out.println(st);

        appendedFile.write(st.getBytes());

        appendedFile.write('\n');

      }

// Reading input by lines:

      BufferedReader in = new BufferedReader(

                          new FileReader(outfile));

      String s, s2 = new String();

      while((s = in.readLine())!= null)

         s2 += s + "\n";

      in.close();

// Reading from String

      try {

         BufferedReader in2 = new BufferedReader(

                              new StringReader(s2));

         PrintWriter out1 =  new PrintWriter(

             new BufferedWriter(new FileWriter(outfile)));

         int lineCount = 1;

         while((s = in2.readLine()) != null )

            out1.println(lineCount++ + ": " + s);

         out1.close();

      }

      catch(EOFException e) {

         System.err.println("End of stream");

      }

// Print the content of the output file

     BufferedReader inf = new BufferedReader(

                          new FileReader(outfile));

     System.out.println ("\n\nThe content of " +  outfile );

      while((st = inf.readLine())!= null)

           System.out.println(st);

   }

}

 

To execute:

% java   IOStreamDemo   InputFile  OutFile


 

 Initilization & Cleanup

Example 1:  ArrayNew  Run Applet

 

public class ArrayNew {

  static Random rand = new Random();

  public static void main(String[] args) {

    int[] a;

    a = new int[rand.nextInt(20)];

    System.out.println("length of a = " + a.length);

    for  (int i = 0; i < a.length; i++)

      System.out.println("a[" + i + "] = " + a[i]);

       }

}

 

Example 2:  Garbage    Run Applet

 

class Chair {

   static boolean f = false;

  static int created = 0;

   int i;

  Chair() {

    i = ++created;

    if ( (i % 10000) == 0)    

        System.out.print( ".");

  }

  public void finalize() {

       f = true;

  }

}

public class Garbage {

  public static void main(String[] args) {

    while (!Chair.f) {

          new Chair();

    }

    System.out.println("Total Chairs Created="+Chair.created“);

   }

}


 

 

 

 

 Collections of Objects

 

ArrayList:   CatsAndDogs  Run  applet

 

class Pet {

  void print() {

  }

 }

class Cat extends Pet{

  private int catNumber;

  Cat (int i) {

    catNumber = i;

  }

  void print() {

    System.out.println("Cat number " + catNumber);

  }

}

class Dog extends Pet{

  private int dogNumber;

  Dog (int i) {

    dogNumber = i;

  }

  void print() {

    System.out.println("Dog number " + dogNumber);

  }

}

public class CatsAndDogs {

  public static void main (String[] args) {

    ArrayList cats = new ArrayList();

    for (int i = 0; i < 7; i++)

      cats.add (new Cat (i));

    // Not a problem to add a dog to cats:

    cats.add(new Dog (7));

    Iterator e = cats.iterator();

    while (e.hasNext())

         ((Pet)e.next()).print();

    // Cat and Dog are detected only at run-time

  }

}

 

HashMap:   Statistics  Run  applet

class Counter {

  int i = 1;

  public String toString() {

    return Integer.toString(i);

  }

}

public class Statistics {

  public static void main (String[] args) {

    HashMap hm = new HashMap();

    for (int i = 0; i < 260; i++) {     

      Character r =

        new Character((char)(Math.random() * 26 + ‘a’));

      if (hm.containsKey(r))

        ((Counter) hm.get(r)).i++;

      else

        hm.put (r, new Counter());

    }

    for(int i = 0; i < 26; i++) {

      Character r =  new Character((char)(i + ‘a’));

      if(hm.containsKey(r)){

         Counter c = (Counter)hm.get(r);

          System.out.println (r + " -> " + c + "\n");

      }

    }

  }

}


 

 Reusing Classes

 

Composition:  Car  Run  applet

class Engine {

  public void start() {}

  public void rev() {}

  public void stop() {}

}

class Wheel {

  public void inflate(int psi) {

      System.out.println("inflated to:" + psi +  "\n");

  }

}

class Window {

  public void rollup() {

     System.out.println("Rolled Up\n");

  }

  public void rolldown() {

      System.out.println("Rolled Down\n");

  }

}

class Door {

  public Window window = new Window();

  public void open() {}

  public void close() {}

}

public class Car {

  public Engine engine = new Engine();

  public Wheel[] wheel = new Wheel[4];

  public Door left  = new Door(),

              right = new Door(); // 2-door

  public Car() {

    for (int i = 0; i < 4; i++)

        wheel[i] = new Wheel();

  }

  public static void main (String[] args) {

    Car car = new Car();

    car.left.window.rollup();

    car.wheel[0].inflate(72);

 }

}

Type Identification

 

Example:  Shapes  Run  applet

class Shape {

  void draw() {

     System.out.println(this + " Generic  Draw");

  }

}

class Circle extends Shape {

  public String toString() { return "Circle"; }

 

  void draw() {

    System.out.println("Circle Specfic Draw");

  }

}

class Square extends Shape {

  public String toString() { return "Square"; }

}

class Triangle extends Shape {

  public String toString() { return "Triangle"; }

}

public class Shapes {

  public static void main (String[] args) {

    List s = new ArrayList();

    s.add (new Circle());

    s.add (new Square());

    s.add (new Triangle());

    Iterator e = s.iterator();

    while (e.hasNext())

        ( (Shape) e.next() ).draw();

  }

}