Question? Leave a message!




Lecture notes on Java Programming

object oriented programming lecture notes java and how learn java programming. And what's java programming language used for pdf free download
DanialOrton Profile Pic
DanialOrton,Hawaii,Professional
Published Date:09-07-2017
Your Website URL(Optional)
Comment
INSTITUTE OF AERONAUTICAL ENGINEERING (Auronomous) DUNDIGAL – 500 043, HYDERABAD Department of Information Technology Subject Code: A40503 Subject Name: JAVA PROGRAMMING Year and Semester: II YR and II SEM Lecture Notes UNIT-I OOP concepts- Data abstraction- encapsulation- inheritance- benefits of inheritance- polymorphism-classes and objects- procedural and object oriented programming paradigm. Java programming – History of java- comments data types-variables-constants-scope and life time of variables-operators-operator hierarchy-expressions-type conversion and casting- enumerated types- control flow – block scope- conditional statements-loops-break and continue statements- simple java stand alone programs-arrays-console input and output- formatting output-constructors-methods-parameter passing- static fields and methods- access control- this reference- overloading methods and constructors-recursion-garbage collection- building strings- exploring string class. UNIT II: Inheritance – Inheritance hierarchies- super and subclasses- member access rules- super keyword- preventing inheritance: final classes and methods- the object class and its methods Polymorphism – dynamic binding- method overriding- abstract classes and methods Interface – Interfaces VS Abstract classes- defining an interface- implement interfaces- accessing implementations through interface references- extending interface. Inner classes – Uses of inner classes- local inner classes- anonymous inner classes- static inner classes- examples. Packages – Defining- creating and accessing a package- understanding CLASSPATH- importing packages. UNIT III: Exception Handling – Dealing with errors- benefits of exception handling- the classification of exceptions – exception hierarchy- checked exceptions and unchecked exceptions- usage of try- catch-throw-throws and finally-rethrowing exceptions- exception specification- built in exceptions- creating own exception sub classes. Multithreading – Differences between multiple processes and multiple threads- thread states- creating threads- interrupting threads- thread priorities- synchronizing threads- inter – thread communication- producer consumer pattern UNIT I V: Collection Framework in java – Introduction to java collections- overview of java collection frame work-generics-commonly used collection classes- Array List- vector -hash table-stack- enumeration-iterator-string tokenizer -random -scanner -calendar and properties Files – streams – byte streams- character stream- text input/output- binary input/output- random access file operations- file management using file class. Connecting to Database – JDBC Type 1 to 4 drivers- connecting to a database- querying a database and processing the results- updating data with JDBC. UNIT V GUI Programming with Java – The AWT class hierarchy- introduction to swing- swing Vs AWT-hierarchy for swing components- containers- JFrame-JApplet-JDialog-Jpanel-overview of some swing components – JButton-JLabel- JTextField-JTextArea- java lab course description simple applications- Layout management – Layout manager types – border- grid and flow Event Handling: Events- Event sources- Event classes- Event Listeners- Relationship between Event sources and Listeners- Delegation event model- Example: handling a button click- handling mouse events- Adapter classes. Applets – Inheritance hierarchy for applets- differences between applets and applications- life cycle of an applet- passing parameters to applets- applet security issues. TEXT BOOK: 1. Java Fundamentals – A comprehensive Introduction- Herbert Schildt and Dale Skrien REFERENCES 1. Java for programmers-P.J.Dietel and H.M.Dietel Pearson education(or)Java: How to program P.J.Dietel and H.M.Dietel-PHI 2. Object Oriented programming through Java -P.Radha Krishna -Universities Press 3 Thinking in Java- Bruce Eckel-Pearson Education 4. Programming in Java- S.Malhotra and S. Choudhary- Oxford University Press. UNIT-1 Topics: OOP concepts- Data abstraction- encapsulation- inheritance- benefits of inheritance- polymorphism-classes and objects- procedural and object oriented programming paradigm. Java programming – History of java- comments data types-variables-constants-scope and life time of variables-operators-operator hierarchy-expressions-type conversion and casting- enumerated types- control flow – block scope- conditional statements-loops-break and continue statements- simple java stand alone programs-arrays-console input and output- formatting output-constructors-methods-parameter passing- static fields and methods- access control- this reference- overloading methods and constructors-recursion-garbage collection- building strings- exploring string class. Introduction Everywhere you look in the real world you see objects—people, animals, plants, cars, planes, buildings, computers and so on. Humans think in terms of objects. Telephones, houses, traffic lights, microwave ovens and water coolers are just a few more objects. Computer programs, such as the Java programs you’ll read in this book and the ones you’ll write, are composed of lots of interacting software objects. We sometimes divide objects into two categories: animate and inanimate. Animate objects are “alive” in some sense—they move around and do things. Inanimate objects, on the other hand, do not move on their own .Objects of both types, however, have some things in common. They all have attributes (e.g., size, shape, color and weight), and they all exhibit behaviors (e.g., a ball rolls, bounces, inflates and deflates; a baby cries, sleep crawls, walks and blinks; a car accelerates, brakes and turns; a towel absorbs water). We will study the kinds of attributes and behaviors that software objects have. Humans learn about existing objects by studying their attributes and observing their behaviors. Different objects can have similar attributes and can exhibit similar behaviors. Comparisons can be made, for example, between babies and adults and between humans and chimpanzees. Object-oriented design provides a natural and intuitive way to view the software design process—namely, modeling objects by their attributes and behaviors just as we describe real-world objects. OOD also models communication between objects. Just as people send messages to one another (e.g., a sergeant commands a soldier to stand at attention), objects also communicate via messages. A bank account object may receive a message to decrease its balance by a certain amount because the customer has withdrawn that amount of money. Object-Oriented: Although influenced by its predecessors, Java was not designed to be source-code compatible with any other language. This allowed the Java team the freedom to design with a blank slate. One outcome of this was a clean, usable, pragmatic approach to objects. Borrowing liberally from many seminal object-software environments of the last few decades, Java manages to strike a balance between the purist’s “everything is an object” paradigm and the pragmatist’s “stay out of my way” model. The object model in Java is simple and easy to extend, while simple types, such as integers, are kept as high-performance nonobjects. OOD encapsulates (i.e., wraps) attributes and operations (behaviors) into objects, an object’s attributes and operations are intimately tied together. Objects have the property of information hiding. This means that objects may know how to communicate with one another across well-defined interfaces, but normally they are not allowed to know how other objects are implemented ,implementation details are hidden within the objects themselves. We can drive a car effectively, for instance, without knowing the details of how engines, transmissions, brakes and exhaust systems work internally—as long as we know how to use the accelerator pedal, the brake pedal, the wheel and so on. Information hiding, as we will see, is crucial to good software engineering. Languages like Java are object oriented. Programming in such a language is called object-oriented programming (OOP), and it allows computer programmers to implement an object-oriented design as a working system. Languages like C, on the other hand, are procedural, so programming tends to be action oriented. In C, the unit of programming is the function. Groups of actions that perform some common task are formed into functions, and functions are grouped to form programs. In Java, the unit of programming is the class from which objects are eventually instantiated (created). Java classes contain methods (which implement operations and are similar to functions in C) as well as fields (which implement attributes). Java programmers concentrate on creating classes. Each class contains fields, and the set of methods that manipulate the fields and provide services to clients (i.e., other classes that use the class). The programmer uses existing classes as the building blocks for constructing new classes. Classes are to objects as blueprints are to houses. Just as we can build many houses from one blueprint, we can instantiate (create) many objects from one class. Classes can have relationships with other classes. For example, in an object-oriented design of a bank, the “bank teller” class needs to relate to the “customer” class, the “cash drawer” class, the “safe” class, and so on. These relationships are called associations. Packaging software as classes makes it possible for future software systems to reuse the classes. Groups of related classes are often packaged as reusable components. Just as realtors often say that the three most important factors affecting the price of real estate are “location, location and location,” people in the software community often say that the three most important factors affecting the future of software development are “reuse, reuse and reuse.” Reuse of existing classes when building new classes and programs saves time and effort. Reuse also helps programmers build more reliable and effective systems, because existing classes and components often have gone through extensive testing, debugging and performance tuning. Indeed, with object technology, you can build much of the software you will need by combining classes, just as automobile manufacturers combine interchangeable parts. Each new class you create will have the potential to become a valuable software asset that you and other programmers can use to speed and enhance the quality of future software development efforts. NEED FOR OOP PARADIGM: Object-Oriented Programming: Object-oriented programming is at the core of Java. In fact, all Java programs are object- oriented—this isn’t an option the way that it is in C++, for example. OOP is so integral to Java. Therefore, this chapter begins with a discussion of the theoretical aspects of OOP. Two Paradigms of Programming: As you know, all computer programs consist of two elements: code and data. Furthermore,a program can be conceptually organized around its code or around its data. That is, some programs are written around “what is happening” and others are written around “who is being affected.” These are the two paradigms that govern how a program is constructed. The first way is called the process-oriented model. This approach characterizes a program as a series of linear steps (that is, code). The process-oriented model can be thought of as code acting on data. Procedural languages such as C employ this model to considerable success. Problems with this approach appear as programs grow larger and more complex. To manage increasing complexity, the second approach, called object-oriented programming, was conceived. Object-oriented programming organizes a program around its data (that is, objects) and a set of well-defined interfaces to that data. An object-oriented program can be characterized as data controlling access to code. As you will see, by switching the controlling entity to data, you can achieve several organizational benefits. Procedure oriented Programming: In this approach, the problem is always considered as a sequence of tasks to be done. A number of functions are written to accomplish these tasks. Here primary focus on “Functions” and little attention on data. There are many high level languages like COBOL, FORTRAN, PASCAL, C used for conventional programming commonly known as POP. POP basically consists of writing a list of instructions for the computer to follow, and organizing these instructions into groups known as functions. Atypical POP structure is shown in below: Normally a flowchart is used to organize these actions and represent the flow of control logically sequential flow from one to another. In a multi-function program, many important data items are placed as global so that they may be accessed by all the functions. Each function may have its own local data. Global data are more vulnerable to an in advent change by a function. In a large program it is very difficult to identify what data is used by which function. In case we need to revise an external data structure, we should also revise all the functions that access the data. This provides an opportunity for bugs to creep in. Drawback: It does not model real world problems very well, because functions are action oriented and do not really corresponding to the elements of the problem. Characteristics of POP:  Emphasis is on doing actions.  Large programs are divided into smaller programs known as functions.  Most of the functions shared global data.  Data move openly around the program from function to function.  Functions transform data from one form to another.  Employs top-down approach in program design. OOP: OOP allows us to decompose a problem into a number of entities called objects and then builds data and methods around these entities. DEF: OOP is an approach that provides a way of modularizing programs by creating portioned memory area for both data and methods that can used as templates for creating copies of such modules on demand. That is ,an object a considered to be a partitioned area of computer memory that stores data and set of operations that can access that data. Since the memory partitions are independent, the objects can be used in a variety of different programs without modifications. OOP Chars:  Emphasis on data .  Programs are divided into what are known as methods.  Data structures are designed such that they characterize the objects.  Methods that operate on the data of an object are tied together .  Data is hidden.  Objects can communicate with each other through methods.  Reusability.  Follows bottom-up approach in program design. Organization of OOP: method method method Evolution of Computing and Programming: Computer use is increasing in almost every field of endeavor. Computing costs have been decreasing dramatically due to rapid developments in both hardware and software technologies. Computers that might have filled large rooms and cost millions of dollars decades ago can now be inscribed on silicon chips smaller than a fingernail, costing perhaps a few dollars each. Fortunately, silicon is one of the most abundant materials on earth it is an ingredient in common sand. Silicon chip technology has made computing so economical that about a billion general-purpose computers are in use worldwide, helping people in business, industry and government, and in their personal lives. The number could easily double in the next few years. Over the years, many programmers learned the programming methodology called structured programming. You will learn structured programming and an exciting newer methodology, object-oriented programming. Why do we teach both? Object orientation is the key programming methodology used by programmers today. You will create and work with many software objects in this text. But you will discover that their internal structure is often built using structured-programming techniques. Also, the logic of manipulating objects is occasionally expressed with structured programming. Language of Choice for Networked Applications: Java has become the language of choice for implementing Internet-based applications and software for devices that communicate over a network. Stereos and other devices in homes are now being networked together by Java technology. At the May 2006 JavaOne conference, Sun announced that there were one billion java-enabled mobile phones and hand held devices Java has evolved rapidly into the large-scale applications arena. It’s the preferred language for meeting many organizations’ enterprise- wide programming needs. Java has evolved so rapidly that this seventh edition of Java How to Program was published just 10 years after the first edition was published. Java has grown so large that it has two other editions. The Java Enterprise Edition (Java EE) is geared toward developing large-scale, distributed networking applications and web-based applications. The Java Micro Edition (Java ME) is geared toward developing applications for small, memory constrained devices, such as cell phones, pagers and PDAs. Data Abstraction An essential element of object-oriented programming is abstraction. Humans manage complexity through abstraction. For example, people do not think of a car as a set ofte ns of thousands of individual parts. They think of it as a well-defined object with its own unique behavior. This abstraction allows people to use a car to drive to the grocery store without being overwhelmed by the complexity of the parts that form the car. They can ignore the details of how the engine, transmission, and braking systems work. Instead they are free to utilize the object as a whole. A powerful way to manage abstraction is through the use of hierarchical classifications. This allows you to layer the semantics of complex systems, breaking them into more manageable pieces. From the outside, the car is a single object. Once inside, you see that the car consists of several subsystems: steering, brakes, sound system, seat belts, heating, cellular phone, and so on. In turn, each of these subsystems is made up of more specialized units. For instance, the sound system consists of a radio, a CD player, and/or a tape player. The point is that you manage the complexity of the car (or any other complex system) through the use of hierarchical abstractions. Encapsulation An object encapsulates the methods and data that are contained inside it .the rest of the system interacts with an object only through a well defined set of services that it provides. Inheritance  I have more information about Flora – not necessarily because she is a florist but because she is a shopkeeper.  One way to think about how I have organized my knowledge of Flora is in terms of a hierarchy of categories: Fig : A Class Hierarchy for Different kinds of Material objects CLASSES AND OBJECTS Concepts of classes and objects: Class Fundamentals Classes have been used since the beginning of this book. However, until now, only the most rudimentary form of a class has been used. The classes created in the preceding chapters primarily exist simply to encapsulate the main( ) method, which has been used to demonstrate the basics of the Java syntax. Thus, a class is a template for an object, and an object is an instance of a class. Because an object is an instance of a class, you will often see the two words object and instance used interchangeably. The General Form of a Class When you define a class, you declare its exact form and nature. You do this by specifying the data that it contains and the code that operates on that data. A class is declared by use of the class keyword. The classes that have been used up to this point are actually very limited examples of its complete form. Classes can (and usually do) get much more complex. The general form of a class definition is shown here: class classname type instance-variable1; type instance-variable2; // ... type instance-variableN; type methodname1(parameter-list) // body of method type methodname2(parameter-list) // body of method // ... type methodnameN(parameter-list) // body of method The data, or variables, defined within a class are called instance variables. The code is contained within methods. Collectively, the methods and variables defined within a class are called members of the class. In most classes, the instance variables are acted upon and accessed by the methods defined for that class. Thus, it is the methods that determine how a class’ data can be used. Declaring Objects As just explained, when you create a class, you are creating a new data type. You can use this type to declare objects of that type. However, obtaining objects of a class is a two-step process. First, you must declare a variable of the class type. This variable does not define an object. Instead, it is simply a variable that can refer to an object. Second, you must acquire an actual, physical copy of the object and assign it to that variable. You can do this using the new operator. The new operator dynamically allocates (that is, allocates at run time) memory for an object and returns a reference to it. This reference is, more or less, the address in memory of the object allocated by new. Ex: Box mybox = new Box(); This statement combines the two steps just described. It can be rewritten like this to show each step more clearly: Box mybox; // declare reference to object mybox = new Box(); // allocate a Box object A Closer Look at new As just explained, the new operator dynamically allocates memory for an object. It has this general form: class-var = new classname( ); Here, class-var is a variable of the class type being created. The classname is the name of the class that is being instantiated. The class name followed by parentheses specifies the constructor for the class. A constructor defines what occurs when an object of a class is created. Constructors are an important part of all classes and have many significant attributes. Most real-world classes explicitly define their own constructors within their class definition. However, if no explicit constructor is specified, then Java will automatically supply a default constructor. This is the case with Box. HISTORY OF JAVA Java was conceived by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan at Sun Microsystems, Inc. in 1991. It took 18 months to develop the first Working version. This language was initially called “Oak” but was renamed “Java”in 1995. Between the initial implementation of Oak in the fall of 1992 and the public Announcement of Java in the spring of 1995, many more people contributed to the designand evolution of the language. Bill Joy, Arthur van Hoff, Jonathan Payne, Frank Yellin, and Tim Lind Holm were key contributors to the maturing of the original prototype. The trouble With C and C++ (and most other languages) is that they are designed to be compiled For a specific target. Although it is possible to compile a C++ program for just about Any type of CPU, to do so requires a full C++ compiler targeted for that CPU. The Problem is that compilers are expensive and time-consuming to create. An easier—and more cost- efficient—solution was needed. In an attempt to find such a solution,Gosling and others began work on a portable, platform-independent language thatcould be used to produce code that would run on a variety of CPUs under differing Environments. This effort ultimately led to the creation of Java. As mentioned earlier, Java derives much of its character from C and C++. This is by intent. The Java designers knew that using the familiar syntax of C and echoing the object- oriented features of C++ would make their language appealing to the legions of experienced C/C++ programmers. In addition to the surface similarities, Java shares some of the other attributes that helped make C and C++ successful. First, Java was designed, tested, and refined by real, working programmers. The Java Buzzwords: No discussion of the genesis of Java is complete without a look at the Java buzzwords. Although the fundamental forces that necessitated the invention of Java are portability and security, other factors also played an important role in molding the final form of the language. The key considerations were summed up by the Java team in the Following list of buzzwords:  Simple  Secure  Portable  Object-oriented  Robust  Multithreaded  Architecture-neutral  Interpreted  High performance  Distributed  Dynamic Simple Java was designed to be easy for the professional programmer to learn and use effectively. Assuming that you have some programming experience, you will not find Java hard to master. If you already understand the basic concepts of object-oriented programming, learning Java will be even easier. Best of all, if you are an experienced C++ programmer, moving to Java will require very little effort. Because Java inherits the C/C++ syntax and many of the object- oriented features of C++, most programmers have little trouble learning Java.. Object-Oriented Although influenced by its predecessors, Java was not designed to be source-code compatible with any other language. Borrowing liberally from many seminal object-software environments of the last few decades, Java manages to strike a balance between the purist’s “everything is an object” paradigm and the pragmatist’s “stay out of my way” model. Robust The multi platformed environment of the Web places extraordinary demands on a program, because the program must execute reliably in a variety of systems. Thus, the ability to create robust programs was given a high priority in the design of Java. To better understand how Java is robust, consider two of the main reasons for program failure: memory management mistakes and mishandled exceptional conditions (that is, run-time errors). Memory management can be a difficult, tedious ask in traditional programming environments. For example, in C/C++, the pro grammer must manually allocate and free all dynamic memory. This sometimes leads to problems, because programmers will either forget to free memory that has been previously allocated or, worse, try to free some memory that another part of their code is still using. Java virtually eliminates these problems by managing memory allocation and deallocation for you. Multithreaded Java was designed to meet the real-world requirement of creating interactive, networked programs. To accomplish this, Java supports multithreaded programming, which allows you to write programs that do many things simultaneously. The Java run-time system comes with an elegant yet sophisticated solution for multiprocess .synchronization that enables you to construct smoothly running interactive systems. Architecture-Neutral A central issue for the Java designers was that of code longevity and portability. One of the main problems facing programmers is that no guarantee exists that if you write a program today, it will run tomorrow—even on the same machine. Operating system up grades, processor upgrades, and changes in core system resources can all combine to make a program malfunction. The Java designers made several hard decisions in the Java language and the Java Virtual Machine in an attempt to alter this situation. Their goal was “write once; run anywhere, any time, forever.” To a great extent, this goal was accomplished. Interpreted and High Performance As described earlier, Java enables the creation of cross-platform programs by compiling into an intermediate representation called Java bytecode. This code can be interpreted on any system that provides a Java Virtual Machine. Most previous attempts at cross platform solutions have done so at the expense of performance. Other interpreted systems, such as BASIC, Tcl, and PERL, suffer from almost insurmountable performance deficits. Java, however, was designed to perform well on very low-power CPUs. Distributed Java is designed for the distributed environment of the Internet, because it handles TCP/IP protocols. In fact, accessing a resource using a URL is not much different from accessing a file. The original version of Java (Oak) included features for intra address-space messaging. This allowed objects on two different computers to execute procedures remotely. Java revived these interfaces in a package called Remote MethodInvocation (RMI). This feature brings an unparalleled level of abstraction to client/server programming. Dynamic Java programs carry with them substantial amounts of run-time type information that is used to verify and resolve accesses to objects at run time. This makes it possible to dynamically link code in a safe and expedient manner. This is crucial to the robustness of the applet environment, in which small fragments of bytecode may be dynamically updated on a running system. DATA TYPES Java defines eight simple (or elemental) types of data: byte, short, int, long, char, float,double, and boolean. These can be put in four groups:  Integers This group includes byte, short, int, and long, which are for whole valued signed numbers.  Floating-point numbers This group includes float and double, which represent numbers with fractional precision.  Characters This group includes char, which represents symbols in a character set, like letters and numbers.  Boolean This group includes boolean, which is a special type for representing true/false values. Integers Java defines four integer types: byte, short, int, and long. All of these are signed, positive and negative values. Java does not support unsigned, positive-only integers. Many other Computer languages, including C/C++, support both signed and unsigned integers. Name Width Range long 64 –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 int 32 –2,147,483,648 to 2,147,483,647 short 16 –32,768 to 32,767 byte 8 –128 to 127 byte The smallest integer type is byte. This is a signed 8-bit type that has a range from –128to 127. Variables of type byte are especially useful when you’re working with a streamof data from a network or file. They are also useful when you’re working with rawbinary data that may not be directly compatible with Java’s other built-in types. Syntax: byte b, c; short short is a signed 16-bit type. It has a range from –32,768 to 32,767. It is probably the least-used Java type, since it is defined as having its high byte first (called big-endian format). This type is mostly applicable to 16-bit computers, which are becoming increasingly scarce. Here are some examples of short variable declarations: short s; short t; int The most commonly used integer type is int. It is a signed 32-bit type that has a range from –2,147,483,648 to 2,147,483,647. In addition to other uses, variables of type int are commonly employed to control loops and to index arrays. Any time you have an integer expression involving bytes, shorts, ints, and literal numbers, the entire expression Is promoted to int before the calculation is done. long long is a signed 64-bit type and is useful for those occasions where an int type is notlarge enough to hold the desired value. The range of a long is quite large. This makesit useful when big, whole numbers are needed. For example, here is a program thatcomputes the number of miles that light will travel in a specified number of days. Floating-Point Types Floating-point numbers, also known as real numbers, are used when evaluating expressions that require fractional precision. For example, calculations such as square root, or transcendentals such as sine and cosine, result in a value whose precision requires a floating-point type. Their width and ranges are shown here: Name Width Bits Approximate Range double 64 4.9e–324 to 1.8e+308 float 32 1.4e−045 to 3.4e+038 float The type float specifies a single-precision value that uses 32 bits of storage. Single precision is faster on some processors and takes half as much space as double precision, but will become imprecise when the values are either very large or very small. Variables of type float are useful when you need a fractional component, but don’t require a large degree of precision. For example, float can be useful when representing dollars and cents. Here are some example float variable declarations: float hightemp, lowtemp; double Double precision, as denoted by the double keyword, uses 64 bits to store a value. Double precision is actually faster than single precision on some modern processors that have been optimized for high-speed mathematical calculations. Here is a short program that uses double variables to compute the area of a circle: // Compute the area of a circle. class Area public static void main(String args) double pi, r, a; r = 10.8; // radius of circle pi = 3.1416; // pi, approximately a = pi r r; // compute area System.out.println("Area of circle is " + a); Characters In Java, the data type used to store characters is char. However, C/C++ programmers beware: char in Java is not the same as char in C or C++. In C/C++, char is an integertype that is 8 bits wide. This is not the case in Java. Instead, Java uses Unicode to representcharacters.. There are no negative chars. The standard set of characters known asASCII still ranges from 0 to 127 as always, and the extended 8-bit character set, ISO-Latin-1,ranges from 0 to 255. Booleans Java has a simple type, called boolean, for logical values. It can have only one of twopossible values, true or false. This is the type returned by all relational operators, suc has a b. boolean is also the type required by the conditional expressions that govern the control statements such as if and for. Here is a program that demonstrates the boolean type: THE JAVA LANGUAGEThere are three interesting things to notice about this program. First, as you can see,when a boolean value is output by println( ), “true” or “false” is displayed. Second,the value of a boolean variable is sufficient, by itself, to control the if statement. Thereis no need to write an if statement like this: if(b == true) ... Third, the outcome of a relational operator, such as , is a boolean value. This is why the expression 10 9 displays the value “true.” Further, the extra set of parentheses around 10 9 is necessary because the + operator has a higher precedence than the . Variables The variable is the basic unit of storage in a Java program. A variable is defined by the combination of an identifier, a type, and an optional initializer. In addition, all variables have a scope, which defines their visibility, and a lifetime. These elementsare examined next. Declaring a Variable In Java, all variables must be declared before they can be used. The basic form of a variable declaration is shown here: type identifier = value, identifier = value ... ; The type is one of Java’s atomic types, or the name of a class or interface. (Class and interface types are discussed later in Part I of this book.) The identifier is the name of the variable. ANGUAGE Here are several examples of variable declarations of various types. Note that some include an initialization. int a, b, c; // declares three ints, a, b, and c. int d = 3, e, f = 5; // declares three more ints, initializing // d and f. byte z = 22; // initializes z. double pi = 3.14159; // declares an approximation of pi. char x = 'x'; // the variable x has the value 'x'. The Scope and Lifetime of Variables So far, all of the variables used have been declared at the start of the main( ) method. However, Java allows variables to be declared within any block. As explained in Chapter 2, a block is begun with an opening curly brace and ended by a closing curlybrace. A block defines a scope. Thus, each time you start a new block, you are creating a new scope. As you probably know from your previous programming experience, a scope determines what objects are visible to other parts of your program. It also determines the lifetime of those objects. Most other computer languages define two general categories of scopes: global and local. However, these traditional scopes do not fit well with Java’s strict, object oriented model. The scope defined by a method begins with its opening curly brace. To understand the effect of nested scopes, consider the following program: // Demonstrate block scope. Arrays An array is a group of like-typed variables that are referred to by a common name. Arrays of any type can be created and may have one or more dimensions. A specific elementin an array is accessed by its index. Arrays offer a convenient means of grouping related information. One-Dimensional Arrays A one-dimensional array is, essentially, a list of like-typed variables. To create an array, you first must create an array variable of the desired type. The general form of a one dimensional array declaration is type var-name ; Here, type declares the base type of the array. The base type determines the data type of each element that comprises the array. // Demonstrate a one-dimensional array. class Array THE JAVA LANGUAGE public static void main(String args) int month_days; month_days = new int12; month_days0 = 31; month_days1 = 28; month_days2 = 31; month_days3 = 30; month_days4 = 31; month_days5 = 30; month_days6 = 31; month_days7 = 31; month_days8 = 30; month_days9 = 31; month_days10 = 30; month_days11 = 31; System.out.println("April has " + month_days3 + " days."); Multidimensional Arrays In Java, multidimensional arrays are actually arrays of arrays. These, as you mightexpect, look and act like regular multidimensional arrays. However, as you will see there are a couple of subtle differences. To declare a multidimensional array variable,specify each additional index using another set of square brackets. For example, the following declares a two-dimensional array variable called twoD. int twoD = new int45; This allocates a 4 by 5 array and assigns it to twoD. Internally this matrix is implemented as an array of arrays of int. // Demonstrate a two-dimensional array. class TwoDArray public static void main(String args) int twoD= new int45; int i, j, k = 0; for(i=0; i4; i++) for(j=0; j5; j++) twoDij = k; k++; for(i=0; i4; i++) for(j=0; j5; j++) System.out.print(twoDij + " "); System.out.println(); This program generates the following output: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 As stated earlier, since multidimensional arrays are actually arrays of arrays, the length of each array is under your control. For example, the following program creates a two dimensional array in which the sizes of the second dimension are unequal.