- 
 -  Java is a very popular object oriented language, partly due to its clear
  design, partly because it is used as the general programming language of the
  web. 
 
 
 
-  For our first Java program we will construct a class QuadraticEquation,
  which describes an equation of the form
    
Its fields are the three parameters a, b, c. An
  object of this class is given by special values for a,
  b, and c.
It has a method to create a new object with given parameters and a method to
  print itself on the screen.
Now we will go through the complete code of the class:
  QuadraticEquation.java
  
 
  
-  A class can be defined in the following way: 
 
 
       public class NAME {
         FIELD1;
         FIELD2;
         ..
         METHOD1  
         METHOD2
      }
 
- The keyword public means that the class can be used freely in all
 programs. 
 
 
- 
 -  On can write non-public classes that are only used for internal purposes of
 e.g. another class. 
 
 
-  A Java program can be broken up in lines arbitrarily (as long as one does not 
 cut a word). Any amount of space is allowed between the words. 
 
 
- 
 -  Usually one indents the lines in a systematic way to emphasize the structure
  of the program. This is only an aid for the human reader. 
 
 
-  A Java program can contain comments, i.e. texts that are meant only as
 explanation for the reader, not as a part of the program proper. Two forms of
 comments are: 
 
 
  
     // any text up to the end of a line
     /* any enclosed text
        even spanning lines */
 
 
-  A field is described by
TYPE FIELDNAME;
 
The type describes, what kinds of values can be used for a field,
 e.g. floating numbers, integer numbers or text strings. The name is used to
 reference the field in the program. 
 
  
-  Some important types are
| Type | 
Values | 
| double | 
floating point numbers with high precision                        (about 16 digits) | 
| integer | 
standard integer numbers (smaller than about 2 billions) | 
| String | 
small texts | 
 
  
-  A method is defined by 
 
 
     RETURNTYPE METHODNAME(ARGUMENTS) {
     COMMAND1;
     COMMAND2;
       ..
     COMMANDn;
   }
 
 
  
-  A special kind of methods are those that create a new object of the given
 class, the constructors. They have the name of the class and no return
 type (not even void). 
 
 
-  The simplest command is the assignment 
 
 
          NAME = VALUE;
 
- where VALUE can be a constant of a given type or another field or
 parameter. 
 
 
-  Constant values can have different forms, according to their type:
| Type | 
some constants | 
| integer | 
42, 0, -123 | 
| double | 
3.141, -0.23, 1.23e5 | 
| String | 
"Hello world", "This is not a String!" | 
 
  
-  One can combine values with operators to get new values like in 
 
 
       NAME = VALUE OP VALUE;
 
-  Usual arithmetics: 
 
 
       a = a1 + 3.0;
     b = a / 24.1;
 
- Glueing of strings (concatenation): 
 
 
       String s;
     s = "Hello " + "World";
     // results in s = "Hello World"
 
- 
 -  A very special operator in Java is the + between strings and anything
 else. It first creates a string from the other object, then combines the
 strings. 
 
 
-  double d; 
d = 42.0; 
s = "Number " + d; 
  // result: s = "Number 42.0"
  
 
 
 
 
- 
 -  Java comes with a large collection of predefined classes for many
 purposes (e.g. input/output, graphics, network connections). A
 special class is the class System, which contains a predefined
 object, which allows output to the screen. One of the methods of out
 is 
println(String s)
 
which prints the string s to the screen. 
 
  
 
- 
 -  The syntax
System.out.println(s)
 
means (leaving out some more complicated details): Get the predefined
 object out of class System and call its method println,
 passing the string s as parameter. 
 
  
-  Next we will look at the simple test program TestQuadraticEquation 
 that uses our class QuadraticEquation:
  TestQuadraticEquation.java
 
 
 
-  Before one can use an object of any class, one has to create it, using one of
 the constructors and the keyword new. 
 
 
-  QuadraticEquation qe1 = new QuadraticEquation(2.0, 10.0, 12.0);
 
 
 
-  If one has an object of a given class, one can reach its fields or
 methods as 
 
 
        OBJECT.FIELDNAME
      OBJECT.METHODNAME(ARGUMENTS)
 
-  qe1.print();
  
 
 
- 
 -  Now we have a kind of ``chicken and egg'' problem: If we have an
 object, we can call its methods. If we are in a method, we can create
 objects. But how do we start? The solution comes in two parts:
 
 
-  Methods that are denoted with the keyword static, can be
  called without an object, by using the class name instead of an
  object name. 
 
 
-  The standard Java class Double has a static method
  parseDouble(String s) to convert a String that describes
  a number, into the corresponding double value. It can be called as 
 
 
       Double.parseDouble(s);
 
 
-  To start a Java program one uses a class that contains a static method
public static void main (String[] args)
 
This method is executed, creates the needed objects and calls the necessary
 methods to get everything running. 
 
  
- 
 -  We postpone the explanation of the argument args for the moment. 
 
 
 
- 
 -  The exact procedure to start a Java program is:
- Create the program as a bunch of source files, one for each class
   (mostly), which have the name MYCLASS.java, MYCLASS
   being the name of the class defined in the file. One of the classes
   (at least) contains a main method.
 
- Compile everything by calling
javac STARTCLASS.java
 
The compiler javac decides itself, which additional classes
   are needed, and compiles them automatically. The result are files
   CLASSNAME.class for each needed class.
 
- Start the program with
java STARTCLASS
 
 
  
-  To run our first example, we call 
 
 
      javac TestQuadraticEquation.java
    java TestQuadraticEquation
 
      2.0*x^2 + 10.0*x + 12.0 
- 
 -  The Java compiler is special in that it doesn't produce a program in
 machine language, but in a universal ``Java byte code''. The program
 java (called the Java Virtual Machine or JVM)
 interprets this byte code and issues corresponding machine
 instructions. 
 
 
- 
 -  This two-step procedure allows to compile a Java program once and run it on
 any kind of computer - if it has a JVM. One can look upon the JVM as a
 program simulating a theoretical computer that understands the byte code as
 its machine language. 
 
 
    
     

Peter Junglas 8.3.2000