Java Notes - Part 1
Java Notes - Part 1
INTRODUCTION
History of Java Java Byte code Buzzwords Compiling and Running Java Program Fundamental Programming Structure in Java Data Types Arrays Variables
JAVA is language that has evolved from C++ which is a direct descendant of C. Most of the characters of JAVA is inherited from C and C++. Derives its Syntax from C. Object Oriented features influenced by C++. Java was conceived by James Gosling (popularly known as Creator of Java), Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan at Sun Microsystems, Inc.in 1991.
It took 18 months to devolop the first working version. This was initially named Oak but was renamed as JAVA in 1995. Although the Java programming language is usually associated with World Wide Web, its primary motivation was to develop a language which is platform - independent(i.e., architecture neutral) that could be used to create software to be embedded in various consumer electronic devices, such as microwave ovens and remote controls.
any type of CPU, to do so it requires a full C++ compiler targeted for that CPU. The problem here is compilers are expensive and time consuming to create.
portable, platform-independent language that could be used to produce code that run on a variety of CPUs under differing environments, which led to the creation of JAVA. 2. World Wide Web also took shape at the same time Java was implemented. With the emergence of WWW, Java was propelled to the forefront of computer language design, because the Web also demanded portable programs.
NOTE
JAVA sometimes referred to as Internet version of C++, because of its application in World Wide Web. Java is to Internet programming what C was to systems programming.
JAVA BYTECODE
Byte code is a highly optimized set of instructions designed to be executed by the Java run-time system, which is called the Java Virtual Machine (JVM). JVM is an Interpreter for Byte code.
THE JAVA VIRTUAL MACHINE The JVM is a virtual computer that resides in memory only. Translating a program into bytecode makes it easier to run a program in a wide variety of environments. Reason : Only the JVM needed to be implemented for each platform. The Java programs are compiled for the JVM is what makes the language so unique but in order for java programs to run on a particular platform, the JVM must be implemented for that platform.
The JVM is the reason why Java is Portable. It provides a layer of Abstraction between the compiled Java Program and the underlying hardware platform and operating system.
JAVA TECHNOLOGY
JAVA TECHNOLOGY IS BOTH A PROGRAMMING LANGUAGE AND A PLATFORM. JAVA PROGRAMMING LANGAUGE With most programming languages, you either compile or interpret a program so that you can run it on your computer. The Java programming language is unusual in that a program is both compiled and interpreted. With the compiler, first you translate a program into an intermediate language called Java bytecodes the platform-independent codes interpreted by the interpreter on the Java platform. The interpreter parses and runs each Java bytecode instruction on the computer.
Compilation happens just once; interpretation occurs each time the program is executed. The following figure illustrates how this works.
You can think of Java bytecodes as the machine code instructions for the Java Virtual Machine (Java VM). Every Java interpreter, whether it's a development tool or a Web browser that can run applets, is an implementation of the Java VM. Java bytecodes help make "write once, run anywhere" possible. You can compile your program into bytecodes on any platform that has a Java compiler. The bytecodes can then be run on any implementation of the Java VM. That means that as long as a computer has a Java VM, the same program written in the Java programming language can run on Windows 2000, a Solaris workstation, or on an iMac.
THE JAVA PLATFORM A platform is the hardware or software environment in which a program runs. We've already mentioned some of the most popular platforms like Windows 2000, Linux, Solaris, and MacOS. Most platforms can be described as a combination of the operating system and hardware. The Java platform differs from most other platforms in that it's a software-only platform that runs on top of other hardware-based platforms. The Java platform has two components: 1. The Java Virtual Machine (Java VM) -- (Already exaplained) 2. The Java Application Programming Interface (Java API)
The Java API is a large collection of ready-made software components that provide many useful capabilities, such as graphical user interface (GUI) widgets. The Java API is grouped into libraries of related classes and interfaces; these libraries are known as packages. The following figure depicts a program that's running on the Java platform. As the figure shows, the Java API and the virtual machine insulate the program from the hardware.
Native code is code that after you compile it, the compiled code runs on a specific hardware platform. As a platformindependent environment, the Java platform can be a bit slower than native code. However, smart compilers, welltuned interpreters, and just-in-time bytecode compilers can bring performance close to that of native code without threatening portability.
JAVA BUZZWORDS The Java programming language is a high-level language that can be characterized by all of the following buzzwords: Simple Object oriented Distributed Interpreted Robust Secure Architecture neutral Portable High performance Multithreaded Dynamic
Simple
Java was designed to be easy for professional programmer
to learn.
In Java, there is small number of clearly defined ways to
Object Oriented
Java is true object oriented language. Almost Everything is an Object paradigm. All program
The object model in Java is simple and easy to extend. Java comes with an extensive set of classes, arranged in
Distributed
Java is designed for distributed environment of the
Interpreted. Java combines both this approach and makes it a two-stage system.
Compiled: Java enables creation of a cross platform
Robust
It provides many features that make the program execute
garbage-collection.
Java, with the help of exception handling captures all
types of serious errors and eliminates any risk of crashing the system.
Secure
Java provides a firewall between a networked
downloading can be done safely without fear of viral infection or malicious intent.
Java achieves this protection by confining a Java program
to the java execution environment and not allowing it to access other parts of the computer.
Architecture Neutral
Java language and Java Virtual Machine helped in
achieving the goal of write once; run anywhere, any time, forever.
Changes and upgrades in operating systems, processors
and system resources will not force any changes in Java Programs.
Portable
Java Provides a way to download programs dynamically to
High Performance
Java performance is high because of the use of bytecode. The bytecode was used, so that it was easily translated into
Multithreaded
Dynamic
Java is capable of linking in new class libraries, methods,
and objects.
It can also link native methods (the functions written in
Implementation of a Java application program consists of series of steps. 1. Create a source file. A source file contains text, written in the Java programming language, that you and other programmers can understand. You can use any text editor to create and edit source files. Save the source code file with .java extension.
instructions that the Java Virtual Machine (Java VM) can understand. The compiler converts these instructions into a bytecode file. To compile the program, run java compiler with the name of the source file in command line: javac <filename>.java
3. Run the program contained in the bytecode file. The Java interpreter installed on your computer implements the Java VM. This interpreter takes your bytecode file and carries out the instructions by translating them into instructions that your computer can understand. At the command prompt to run a stand-alone Java
Program, use java interpreter, type : java <filename> When executed the program displays the output.
Documentation Section Package Statement Import Statements Interface Statements Class Definitions Main Method Calss { Main Method Definition
Of the above Sections shown in the figure, the Main Method class is Essential part, Documentation Section is a suggested part and all the other parts are optional. Documentation Section It Comprises a Set of comment lines giving the name of the program, the author and other details. Comments help in Maintaining the Program. Java uses a Style of comment called documentation comment. /* * */ This type of comment helps is generating the documentation automatically. Package Statement The first statement allowed in a Java file is a package statement. It declares the package name and informs the compiler that the classes defined belong to this package. Example : package student; It is an optional declaration.
Import Statements The statement instructs the interpreter to load a class contained in a particular package. Example : import student.test; Where, student is the package and test is the class. Interface Statements An interface is similar to classes which consist of group of method declaration. It is used when we want to implement the feature of Multiple Inheritance in Java It is an optional declaration. Class Definitions A Java Program can have any number of class declarations. The number of classes depends on the complexity of the program. Main Method Class Every Java Stand alone program requires a main method as its starting point.
A Simple Java Program will contain only the main method class. It creates objects of various classes and uses those objects for performing various operations. When the end of main is reached the program terminates and the control transferred back to the Operating system.
VARIABLES
A Variable is a named piece of memory that is used for storing data in java Program. An object stores its state in variables. A variable is an identifier used for storing a data value.
Definition: A variable is an item of data named by an identifier. A Variable may take different values at different times during the execution if the program, unlike the constants. We must explicitly provide a name and a type for each variable you want to use in your program. The variable's name must be a
legal identifier --an unlimited series of Unicode characters that begins with a letter. You use the variable name to refer to the data that the variable contains. The variable's type determines what values it can hold and what operations can be performed on it. General form of variable declaration :
type name
In addition to the name and type that you explicitly give a variable, a variable has scope. Example of Variable names : average height total height classStrength Rules followed for variable names ( consist of alphabets, digits, underscore and dollar characters) 1. They must not begin with digits. 2. Uppercase and lowercase are not the same. Example: Total and total are two variables which are distinct. 3. It should not be a keyword. 4. Whitespace is not allowed. 5. variable names can be of any length.
EXAMPLE PROGRAM
The MaxVariablesDemo program, shown below, declares eight variables of different types within its main method. The variable declarations are bold:
public class MaxVariablesDemo { public static void main(String args[]) { // integers byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; // real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; // other primitive types char aChar = 'S'; boolean aBoolean = true; // display them all System.out.println("The largest byte value is " +
largestByte); System.out.println("The largest short value is " + largestShort); System.out.println("The largest integer value is " + largestInteger); System.out.println("The largest long value is " + largestLong); System.out.println("The largest float value is " + largestFloat); System.out.println("The largest double value is " + largestDouble); if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is upper case."); } else { System.out.println("The character " + aChar + " is lower case."); } System.out.println("The value of aBoolean is " + aBoolean); }
} OUTPUT The largest byte value is 127 The largest short value is 32767 The largest integer value is 2147483647 The largest long value is 9223372036854775807 The largest float value is 3.40282e+38 The largest double value is 1.79769e+308 The character S is upper case. The value of aBoolean is true SCOPE AND LIFETIME OF VARIABLES Java allows variables to be declared in any block. A block defines a scope. Each time when we start a new block we are starting a new scope. Scope determines what objects are visible to other parts of the program and also determines the lifetime of those objects. Two major scopes in Java are Defined by a class. Defined by a method. The Scope defined by a method begins with its opening curly brace. As a general rule, a variable declared inside
a scope are not visible to the code that is defined outside the scope.
Final Variables
o You can declare a variable in any scope to be final. The value of a final variable cannot change after it has been initialized. Such variables are similar to constants in other programming languages. o To declare a final variable, use the final keyword in the variable declaration before the type: final int aFinalVar = 0; o The previous statement declares a final variable and initializes it, all at once. Subsequent attempts to assign a value to aFinalVar result in a compiler error. o A final local variable that has been declared but not yet initialized is called a blank final. Again, once a final local variable has been initialized, it cannot be set, and any later attempts to assign a value to blankfinal result in a compile-time error.
DATA TYPES
Every variable must have a data type. A variable's data type determines the values that the variable can contain and the operations that can be performed on it. Data types in Java are of two types: 1. Primitive Types( Intrinsic or built-in types ) 2. Derived Types (Reference Types).
The following table lists, by keyword, all of the primitive data types supported by the
Size/Format
Byte-length integer
short
Short integer
16-bit two's complement 32-bit two's complement 64-bit two's complement (real numbers)
int
Integer
long
Long integer
float
double
char
boolean
Arrays, classes, and interfaces are reference types. The value of a reference type variable, in contrast to that of a primitive type,
is a reference to (an address of) the value or set of values represented by the variable. A reference is called a pointer or a memory address in other languages. The Java programming language does not support the explicit use of addresses like other languages do. You use the variable's name instead.
OPERATORS
Operators are used in programs for manipulating data and variables. An operator performs a function on one, two, or three operands. An operator that requires one operand is called a unary operator. For example, ++ is a unary operator that increments the value of its operand by 1. An operator that requires two operands is a binary operator. For example, = is a binary operator that assigns the value from its right-hand operand to its left-hand operand. A ternary operator is one that requires three operands. The Java programming language has one ternary operator
?:
Arithmetic Operators Relational and Conditional Operators Shift and Logical Operators Assignment Operators Other Operators
Arithmetic Operators The following table lists the basic arithmetic operators provided by the Java programming language. Except for +, which is also used to concatenate strings, these operators can be used only on numeric values.
* /
Subtracts op2 from op1 Multiplies op1 by op2 Divides op1 by op2
op1 % op2
These short cut operators increment or decrement a number by one. Shortcut Arithmetic Operators Operator Use Description
++ op++
++
++op
--
op--
--
--op
Here are the Java programming language's other arithmetic operators. Unary Arithmetic Operators
Relational and Conditional Operators Use these relational operators to determine the relationship between two values. Relational Operators Operator Use
> op1 > op2
Description Returns true if op1 is greater than op2 Returns true if op1 is greater than or equal to op2
>=
<
Returns true if op1 is less than op2 Returns true if op1 is less than or equal to
op2
<=
== !=
Returns true if op1 and op2 are equal Returns true if op1 and op2 are not equal
You can use the following conditional operators to form multi-part decisions.
Description Returns true if op1 and op2 are both true; conditionally evaluates op2
||
op1 || op2
!op
Returns true if op is false Returns true if op1 and op2 are both
&
performs bitwise AND operation Returns true if both op1 and op2 are boolean and either op1 or op2 is true;
| op1 | op2
always evaluates op1 and op2; if both operands are numbers, performs bitwise inclusive OR operation Returns true if op1 and op2 are different
op1 ^ op2
that is, if one or the other of the operands, but not both, is true
Shift and Logical Operators Each shift operator shifts the bits of the left-hand operand over by the number of positions indicated by the right-hand operand.
Description Shift bits of op1 left by distance op2; fills with zero bits on the right-hand side Shift bits of op1 right by distance op2;
>>
>>>
Shift bits of op1 right by distance op2; fills with zero bits on the left-hand side
Logical Operators Operator Use Operation Bitwise AND if both operands are numbers;
& op1 & op2
Bitwise OR if both operands are numbers; conditional OR if both operands are boolean Bitwise exclusive OR (XOR) Bitwise complement
Assignment Operators The basic assignment operator looks as follows and assigns the value of op2 to op1.
op1 = op2;
In addition to the basic assignment operation, the Java programming language defines these short cut assignment operators that perform an operation and an assignment using one operator. Shortcut Assignment Operators
Operator Use
+= -= *= /= %= &= |= ^= <<= >>= >>>= op1 += op2 op1 -= op2 op1 *= op2 op1 /= op2 op1 %= op2 op1 &= op2 op1 |= op2 op1 ^= op2 op1 <<= op2 op1 >>= op2
Equivalent to
op1 = op1 + op2 op1 = op1 - op2 op1 = op1 * op2 op1 = op1 / op2 op1 = op1 % op2 op1 = op1 & op2 op1 = op1 | op2 op1 = op1 ^ op2 op1 = op1 << op2 op1 = op1 >> op2
Summary of Other Operators The Java programming language also supports these operators.
Use
op1 ? op2 : op3
[]
type []
[]
type[ op1 ]
Creates and array with op1 elements. Must be used with the new operator. Accesses the element at op2 index
[]
op1[ op2 ]
within the array op1. Indices begin at 0 and extend through the length of the array minus one.
op1.op2
list of parameters can be an empty list. The list is comma-separated. Casts (converts) op1 to type. An
(type) (type) op1
ARRAYS
An array is simply a sequence of either objects or primitives, all the same type and packaged together under one identifier name. An array is a structure that holds multiple values of the same type. The length of an array is established when the array is created (at runtime). After creation, an array is a fixed-length structure. An array element is one of the values within an array and is accessed by its position within the array. Arrays are useful for grouping related information.
or type[] var-name; Where, type declares the base type of the array. Example int[] anArray; // declare an array of integers An array declaration has two components: Array's type Array's name.
Creating an Array
Arrays are created explicitly using Java's new operator. The next step is allocating an array with enough memory for ten integer elements and assigns the array to the variable anArray declared earlier. anArray = new int[10]; // create an array of integers
when creating an array, we use the new operator, plus the data type of the array elements, plus the number of elements desired enclosed within square brackets ('[' and ']'). Syntax new elementType[arraySize]
EXAMPLE PROGRAM
public class ArrayDemo { public static void main(String[] args) { int[] anArray; array of integers anArray = new int[10]; integers // assign a value to each array element and print for (int i = 0; i < anArray.length; i++) { anArray[i] = i; System.out.print(anArray[i] + " "); } System.out.println(); } } // create an array of // declare an
length is not a method. length is a property provided by the Java platform for all arrays.
The for loop in our sample program iterates over each element of anArray, assigning values to its elements. The for loop uses anArray.length to determine when to terminate the loop.