You are on page 1of 10

Introduction to Java Programming

Java is a powerful object­oriented programming language introduced by Sun Microsystems in 1995,
which  has   built­in  support   to  create  programs  with  a   graphical   user   interface   (GUI),   utilize  the
Internet, create client­server solutions, and much more. Programs written in Java can run, without
change, on any of the common computer operating systems Windows 95/NT, Macintosh, and Unix. A
variant of Java programs called applets can be embedded inside a web page and execute on the
computer that is viewing the page, automatically and in a secure environment. 

As   a   language,   Java   is   closely   related   to   C++,   which   is   also   object­oriented   but   retains   a   lot   of
idiosyncrasies   inherited   from   its   predecessor   language   C.   Java   has   removed   the   inconsistent
elements from C++, is exclusively object­oriented, and can be considered a modern version of C++. 1
Because of its logical structure Java has quickly become a popular choice as a teaching language, 2
and because of its extensive Internet support and the promise of writing programs once and using
them on every operating system Java is becoming more and more accepted in industry.

Basic Java Programming Guidelines


Every Java program must follow these guidelines:

 Java is case sensitive, i.e. the word Program is different from program.
 Curly brackets { and } are used to group statements together.
 An executable Java program must contain at least the following lines as a framework:

public class Name


{ public static void main(String args[])
{ ... program code ...
}
}

 Every statement whose next statement is not a separate group must end in a semicolon.
 A Java program containing the above framework must be saved using the filename
Name.java, where Name (including correct upper and lower cases) is the word that follows
the keywords public class and the file extension is .java.

p u b lic c la s s N a m e
public static void main(String args[])
program code

In other words, to create a Java program you first create a text file containing the lines

public class Name


{
public static void main(String args[])

1
Java does have disadvantages. For example, programs written in Java are generally slower than those in C++ and it
is difficult to accomplish system-level tasks in Java.
2
Java compilers and tools are available for free, an important consideration for academic and student budgets.
{
... more lines ...
}
}

The file containing our code is called the source code file.

Source Code
A Java source code file is a text file that contains programming code written according to the
Java language specifications, resembling a mixture of mathematical language and English. A
computer cannot execute source code, but humans can read and understand it.

Java source code files should be saved as Name.java, where Name is the name that appears in the
first line of the program: public class Name. That Name is referred to as the name of the class,
or program. By convention its first letter is capitalized.

p u b lic c la s s N a m e
public static void main(String args[])
save as
program code

Figure: Saving a Java source code file

Here is an example of a Java source code file. We will later explain what the various lines mean; for
now it is simply a text file that looks as shown.

Example: The first source code file
Create a source code file containing the necessary Java code to get the computer to write "Hi – this
is my first program" on the screen.

Our first Java program looks as follows:

public class Test


{
public static void main(String args[])
{
System.out.println("Hi – this is my first program");
}
}

This program, or class, is called Test and must be saved under the file name Test.java.

Compiling a Java Program or Class

A source code file, which is more or less readable in plain English, needs to be transformed into
another format before the computer can act upon it. That translation process is called compiling and
is accomplished using the Java compiler javac from the Java Developer's Kit (JDK), which could be
invoked by an IDE such as BlueJ.
Compiling
Compiling is the process of transforming the source code file into a format that the computer can
understand and process. The resulting file is called the byte-code, or class, file. The name of the
class file is the same as the name of the program plus the extension .class. The program javac
from the Java Developer's Kit is used to transform a source code file into a class file.

p u b lic c la s s N a m e
public static void main(String args[])
save as ja v a c
pr ogram code

Figure: Compiling and creating class file

If a source code contains any errors, they are flagged by the compiler. You need to fix them and re­
compile until there are no further errors.

Tip:  In case of an error, the  javac  compiler shows the line number and position of where  it


thinks the error occurred in your source code.

 If the compiler points out an error, then there is an error at or before the indicated position.
 If the compiler reports a certain number of errors, than this is the least amount of errors.
 If one error is fixed, other errors may automatically disappear or new ones may appear.

Fix your source code a few errors at a time. Recompile often to see if the number of errors and
the   error   messages   change  until   no   errors   are  reported.   If  you  can   not  find   an   error   at  the
position indicated by the compiler, look at the code before that position.

Executing a Java Program or Class

The Java compiler does not produce an executable file, so Java programs can not execute under the
operating system of your machine. Instead they execute inside a  Java Virtual Machine, which is
invoked using the java program of the JDK.

Executing a Class File


To execute a Java program the Java Developer's Kit provides a program called java. When
executing that program with your class file as parameter the following happens:

 the Java Virtual Machine (JVM) is created inside your computer


 the JVM locates and reads your class files
 the JVM inspects your class file for any security violations
 the JVM executes, or interprets, your class file according to its instructions if possible
Under Windows and Unix, execute a program by typing at the command prompt java Name,
where Name is the name of the program (no extension). On a Macintosh, double-click the java
icon and select the appropriate class file.

Most IDE’s allow for a convenient way to execute a file. In BlueJ you right­click on a compiled class
and select the “main” method.

p u b lic c la s s N a m e
public static void main(String args[])
save as ja v a c ja v a
pr og ram code

Figure: Executing a class file

A good question at this point is which line in a Java program executes first. 

Default Program Entry Point


The default program entry point is that part of a class (or program) where execution begins. For
every Java class (or program), the standard program entry point consists of the line:

public static void main(String args[])

If that line is not present in your source code, the JVM can not execute your program and
displays an error message.

At   this   point,   we   need   to   explain   what   the   Java   Virtual   Machine   is   and   how   it   relates   to   the
operating system and to Java class files.

Java Virtual Machine (JVM)


The Java Virtual Machine (JVM) is a platform-independent engine used to run Java applets and
applications. The JVM knows nothing of the Java programming language, but it does understand
the particular file format of the platform and implementation independent class file produced by
a Java compiler. Therefore, class files produced by a Java compiler on one system can execute
without change on any system that can invoke a Java Virtual Machine. 3

When invoked with a particular class file, the JVM loads the file, goes through a verification
process to ensure system security, and executes the instructions in that class file.

The JVM, in other words, forms a layer between the operating system and the Java program that is
trying  to  execute.   That  explains  how  one  Java   program  can  run  without  change  on  a   variety   of
systems: it can not! A Java program runs on only  one  system, namely the Java Virtual Machine.
That   virtual   system,   in   turn,   runs   on   a   variety   of   operating   systems   and   is   programmed   quite

3
In general, the Java Virtual Machine is an abstractly specified class file interpreter that can be realized by different
software makers. The JVM that comes with the JDK was created by SUN Microsystems, but any other JVM is also
able to run the same class files. Different JVM's can vary in efficiency, but they all must run the same class files.
differently for various systems. To the Java programmer, it provides a unified interface to the actual
system calls of the operating system.4

You can include graphics, graphical user interface elements, multimedia, and networking operations
in a Java program and the JVM will negotiate the necessary details between the class file(s) and the
underlying operating system. The JVM produces exactly the same results – in theory – regardless of
the underlying operating system. In the Basic (or C, or C++) programming language, for example,
you can create code that specifies to multiply two integers 1000 and 2000 and store the result as
another   integer.   That   code   works   fine   on   some   systems,   but   can   produce   negative   numbers   on
others.5  In   Java,   this   can   not   happen:   either   the   code   fails   on   all   platforms,   or   it   works   on   all
platforms.

Java S ource
C ode

U n ix W in M ac

ja v a c ja v a c ja v a c
U n ix W in M ac

J a v a B y te J a v a V ir tu a l
C ode M a c h in e

O p e r a tin g -s y s te m U n ix W in M ac
d e p e n d e n t to o ls
ja v a ja v a ja v a
O p e r a tin g -s y s te m
in d e p e n d e n t
Figure 1.09: Illustrating the machine dependent/independent parts of Java programs

Because the JVM is in effect its own computer, it can shield the actual computer it is running on
from   potentially   harmful   effects   of   a   Java   program.   This   is   especially   important   because   Java
programs known as applets can automatically start executing on your machine when you are surfing
the web if the appropriate feature of your web browser is enabled. If these programs were allowed to
meddle with your system, you could accidentally execute a program that would proceed to erase your
entire disk. That, of course, would prompt people to disable Java on their web browser, which in turn
would be bad news for anyone who supports the Java concept.

Basic Data Types:

Primitive Java Data Types


Java supports the following primitive, or basic, data types:

4
This is somewhat similar to old Basic programs: a simple Basic program can run on virtually any system that has a
Basic interpreter installed since the interpreter mediates between the program trying to run and the operating system.
5
Programming languages have a largest possible integer whose value can differ on different systems. A C++
program executing on a machine with a largest integer bigger than 2,000,000 produces the correct result, but on a
system where the largest integer is, say, 32,767 it fails. The JVM has the same largest integer on every platform.
 int, long, or short to represent integer numbers
 double or float to represent decimal numbers
 char to represent character values
 boolean to represent logical values
 void to represent "no type"

Each numeric type has a largest and smallest possible value, as indicated in table 1.10. 6

Most programs use int for integers and double for decimal numbers, while  long, short, and float
are needed only in special situations.

Type Range
double largest positive/negative value: ±1.7976931348623157E308
smallest non­zero value: ±4.9E­324
significant digits: 16 digits after decimal point
float largest positive/negative value: ±3.4028235E38
smallest non­zero value: ±1.4E­45
significant digits: 8 digits after decimal point
int largest  value 2147483647
smallest value: ­2147483648
short largest  value 32767
smallest value: ­32768
long largest  value 9223372036854775807
smallest value: ­9223372036854775808
Table: Ranges for valid decimal types
Each type can contain values called literals or unnamed constants in a particular format. 

Literals
Literals are constant values for the basic data types. Java supports the following literals:

 int, short: digits only, with possible leading plus (+) or minus (-) sign
 long: like int literals, but must end with an "L"
 double: digits including possible periodic point or leading plus ( +) or minus (-) sign,
or numbers in scientific notation #.###############E±###,7 where each #
represents a digit
 float: like double literals, but must end with an "F"
 char: Single Unicode characters enclosed in single quotes, including the special
control sequences described in table 1.11 8
 boolean: true or false

In addition, Java has an object literal called null for object references.

6
Java also supports a basic type byte, which we do not need currently, and another very useful type String,
introduced later
7
For example, the double number 1.23456E002 = 1.234562 = 123.456
8
 Unicode characters support characters in multiple languages and are defined according to their "Unicode Attribute
table" (see http://www.unicode.org/). Every character on a standard US keyboard is a valid Unicode character.
Character literals include the following special characters called control sequences:

Control Meaning Control Meaning


Sequence Sequence
\n new line \t tab character
\b backspace \r return
\f form feed \\ backslash
\' single quote \" double quote
Table: Common character control sequences
The ranges for the numeric types are the same, regardless of the underlying operating system (after
all, programs run under the JVM, not the native operating system). In languages such as C or C++
an   integer   sometimes   has   a   range   similar   to   a   Java   short,   and   sometimes   that   of   a   Java   int,
depending   on   the   underlying   operating   system,   which   can   cause   different   results   if   the   same
program runs on different systems.

To use the basic data types to store information, we must define variables that have one of these
types: 

Declaration of Variables
To declare a variable that can store data of a specific type, the syntax:

type varName [, varName2,..., varNameN];

is used, where type is one of the basic data types, varName is the name of the variable, and
varName2, ..., varNameN are optional additional variables of that type. Variables can be
declared virtually anywhere in a Java program.

Variables must have a name and there are a few rules to follow when choosing variable names:

Valid Names for Variables


A variable name must start with a letter, a dollar sign ' $', or the underscore character ' _',
followed by any character or number. It can not contain spaces. The reserved keywords listed in
the table below can not be used for variable names. Variable names are case-sensitive.

Java Reserved Keywords
Abstract boolean break byte case catch
Char Class const continue default do
Double Else extends false final finally
Float For goto if implements import
instanceof Int interface long native new
null Package private protected public return
short Static super switch synchronized this
throw Throws transient true try void
volatile While
Table 1.12: Reserved keywords in Java

Example: Declaring variables
Declare one variable each of type int, double, char, and two variables of type boolean.
This is an easy example. We declare our variables as follows:

int anInteger;
double aDouble;
char aChar;
boolean aBoolean, anotherBoolean;

Assigning a Value to a Variable


To assign a value to a declared variable, the assignment operator " =" is used:

varName = [varName2 = ... ] expression;

Assignments are made by first evaluating the expression on right, then assigning the resulting
value to the variable on the left. Numeric values of a type with smaller range are compatible with
numeric variables of a type with larger range (compare table 13). Variables can be declared and
assigned a value in one expression using the syntax:

type varName = expression [, varname2 = expression2, ...];

The assignment operator looks like the mathematical equal sign, but it is different. For example, as
a mathematical expression

x  2x  1

is an equation which can be solved for x. As Java code, the same expression

x = 2*x + 1;

means to first evaluate the right side  2*x + 1 by taking the current value of x, multiplying it by 2,


and adding 1. Then the resulting value is stored in x (so that now x has a new value).

Value and variable types must be compatible with each other, as shown in table 1.13.

Value Type Compatible Variable Type
double double
int int, double
char char, int, double
boolean boolean
Table 1.13: Value types compatible to variable types

Example: Declaring variables and assigning values
Declare an int, three double, one char, and one boolean variable. Assign to them some suitable
values.

There are two possible solutions. Variables can be declared first and a value can be assigned to them
at a later time:

int anInteger;
double number1, number2, number3;
anInteger = 10;
number1 = number2 = 20.0;
number3 = 30;

char cc;
cc = 'B';
boolean okay;
okay = true;

Alternatively, variables can be declared and initialized in one statement:

int anInteger = 10;


double number1 = 20.0, number2 = 20.0, number3 = 30;
char cc = 'B';
boolean okay = true;

Software   Engineering   Tip:  Variables   serve   a   purpose   and   the   name   of   a   variable   should
reflect   that   purpose   to   improve   the   readability   of   your   program.   Avoid   one­letter   variable
names9. Do not reuse a variable whose name does not reflect its purpose.

Whenever   possible,   assign   an   initial   value   to   every   variable   at   the   time   it   is   declared.   If   a
variable   is   declared   without   assigning   a   value   to   it,   all   basic   types   except   boolean  are
automatically set to 0, boolean is set to false, and all other types are set to null.10

Declare   variables   as   close   as   possible   to   the   code   where   they   are   used.   Do   not   declare   all
variables at once at the beginning of a program (or anywhere else).

Example: Using appropriate variable names
The code segment below computes the perimeter of a rectangle and the area of a triangle. Rewrite that
segment using more appropriate variable names and compare the readability of both segments:

double x, y, z;
x = 10.0;
y = 20.0;
z = 2*(x + y);
w = 0.5 * x * y;

This code computes the perimeter  z  of a rectangle with width   x  and length  y  and the area  w  of a


triangle with base x and height y, so the variable names should reflect that. In addition, variables
should be assigned a value when  they  are declared,  so  the code segment should be rewritten as
follows:

double width = 10.0, height = 20.0;


double perimeterOfRectangle = 2*(width + height);
double base = width;
double areaOfTriangle = 0.5 * base * height;

9
If a variable serves a minor role in a code segment (such as a counter in a loop) it can be declared using a one-letter
variable name.
10
The compiler may display an error message if it encounters variables that are not explicitly initialized.
It is immediately  clear that  the formulas  used  are correct.   Choosing appropriate variable names
clarifies the code significantly and makes it easy to locate potential problems.
n

Basic Arithmetic for Numeric Types


Java support the basic arithmetic operators + (addition), - (subtraction), * (multiplication), /
(division), and % (remainder after integer division) for numeric variables and literals. The order
of precedence is the standard one from algebra and can be changed using parenthesis.

Each operator has a left and right argument and the type of the result of the computation is
determined according to the rules outlined in the table below

Left Right Result


Argument Argument
int int int
int double double
double int double
double double double
Table: Resulting types of the basic arithmetic operations

Example: A Temperature Conversion Program
Create a complete program that converts a temperature from degrees Fahrenheit in degrees Celsius.
Use comments to explain your code.

public class Converter


{
public static void main(String args[])
{
// Printing out a welcoming message
System.out.println("Welcome to my Temperature Converter.");
System.out.println("\nProgram to convert Fahrenheit to Celcius.\n");

// Defining the temperature value in Fahrenheit


double temp = 212.0;

// Applying conversion formula and storing answer in another variable


double convertedTemp = 5.0 / 9.0 * (temp - 32.0);

// Printing out the complete answer


System.out.println(temp + " Fahrenheit = " + convertedTemp + " Celcius.");
}
}

You might also like