Java i lecture_2

59
Java I--Copyright © 2000-2004 Tom Hunter

Transcript of Java i lecture_2

Page 1: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Page 2: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Chapter 2

Introduction to Java Applications

Page 3: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

• A Java Application must have the method main.

• A Java Application begins executing at main.

• Let’s look at details of an Application:

Java Applications Are A Series of Classes

Page 4: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• This is a basic Application.

• Notice the comments. These are required in this course. Java is free form, but you’ll be happy if you get in the habit of documenting like this.

• Also, whenever you type an opening curly bracket, type the closing one right away.

• Your curly brackets must always--in this class--line up as shown.

Page 5: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• The line above in blue is the class definition for Welcome1.

• Every class name must be Capitalized.

• Notice, every scrap of code is within this class.

• Since it is named Welcome1, this Application is saved in a file called Welcome1.java, spelled exactly the same.

• The compiler will make a file called Welcome1.class.

Page 6: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• The word Welcome1 is an identifieridentifier.

• An identifieridentifier is a user-defined word, which consists of:

lettersdigits_ (underscore)$ (a dollar sign)

• An identifier cannot begin with a digit.

Page 7: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• Notice that we put the word public before the word class.

• This means the class can be called by anything.

• The alternatives to public are discussed in Chapter 8.

Page 8: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• The method main is also declared public.

• This should just be copied until Chapter 6, when we know methods better.

Page 9: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• void means nothing is returned to the operating system when the program finishes.

• The ( String args[] ) works with “arguments” that were passed when the program was executed.

• Although you cannot omit it ( String args[] ), we don’t discuss this topic just yet, so please copy it.

Page 10: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• The System.out.println puts the message in quotes on the command console.

• If we used System.out.print, then the cursor would notnot do a carriage return / line feed after it prints the text.

• Notice the opening and closing blue curly brackets. The unit of code enclosed in them is called a “block.”

• It is also called the “body” of the method.

This is called the Standard output

object.

Page 11: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.println( “Welcome to Java!” );

} // end of main()} // end of class Welcome1

• You will find that you very rarely use this Standard output object.

• Instead, you will use the GUI objects.

• Notice in red the semicolon. ; All executable statements in Java ends in a semicolon.

Page 12: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.print( “Welcome ” );System.out.println( “to Java!” );

} // end of main()} // end of class Welcome1

• This will still produce the same text as the previous version.

Page 13: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

public class Welcome1{

public static void main( String args[] ){

System.out.print( “Welcome\nto\nJava! ” );} // end of main()

} // end of class Welcome1

• Notice the “ \n ”. The slash is an escape character. It tells the System object that whatever follows the slash is special:

\n new line\t tab\r carriage return\\ backslash\” quote

Welcome toJava!

Page 14: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane

public class Welcome4{

public static void main( String args[] ){

JOptionPane.showMessageDialog( null, “Hi Java!” );

System.exit( 0 )} // end of main()

} // end of class Welcome1

First GUI: JOptionPane

• This adds an import statement, which tells the compiler you want to use somebody else’s class.

• The “ javax.swing ” is like a DOS path.

Page 15: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane

• You must know these classes, and how to use them.• This path helps the compiler find the class you wish to use.• The javax.swing portion of this name is called the “package.” • Classes in the same package have a connection we will explore later. • Suffice it to say that they are very chummy.

First GUI: JOptionPane

Page 16: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

First GUI: JOptionPaneimport javax.swing.JOptionPane

public class Welcome4{

public static void main( String args[] ){

JOptionPane.showMessageDialog( null, “Hi Java!” );

System.exit( 0 )} // end of main()

} // end of class Welcome1

• The Statement JOptionPane.showMessageDialog means:

“I want object JOptionPane to perform its methodshowMessageDialog(). Also, I’m passing the data:“null” and “Hi Java!” In Java, we call that data“arguments.”

Page 17: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Welcome4{

public static void main( String args[] ){

JOptionPane.showMessageDialog( null, “Hi Java!” );

System.exit( 0 );} // end of main()

} // end of class Welcome4

• System.exit( 0 ); This statement uses the method “exit” of class System to end the application. GUI Applications always require this statement to terminate correctly.

• Class System is imported automatically, in package java.lang

Page 18: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Build An Application

• When you are building an Application, there is a set template for design that you automatically follow.

• Get in the habit of doing exactly as will be done on the next few slides.

Addition

Page 19: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

1.) You tell the compiler to import any of the extra classes you will be using in your Application.

Page 20: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

} // end of class Addition

2.) Define your class name, and right away place the opening and closing brackets--with the comment.

Page 21: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

System.exit( 0 );} // end of main()

} // end of class Addition

3.) Add the main method, and the System.exit( 0 ) that you know it will require--include the comment.

Page 22: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

String firstNumber,secondNumber;

System.exit( 0 );} // end of main()

} // end of class Addition

4.) Include any local variables you will need in this method. A local variable is visible and accessible only within the method.

These two are “String” references. That means they have the potential to point to objects of type String.However, at this point, they point to nothing.They are empty references.

f

Page 23: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

String firstNumber,secondNumber;

int number1,number2,sum;

System.exit( 0 );

} // end of main()} // end of class Addition

5.) Now we have added three integer variables. They are not objects. They hold three integers--without any methods or classes. number1, number2 and number3 are called primitive variables.

Notice,‘int’ does not

start with acapitalletter.

Page 24: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

String firstNumber,secondNumber;

int number1,number2,sum;

firstNumber = JOptionPane.showInputDialog( “First Num” );

secondNumber = JOptionPane.showInputDialog( “Second Num” );

• Look at the Java Documentation for the JOptionPane object. You will first see the hierarchy of this object within the Java object hierarchy:

String argument

is received.

d

String is

returned

by the

method.

Page 25: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

• This is the hierarchy for the JOptionPane.

• We will cover “inheritance” starting in Chapter 8, but you need to begin learning these API class libraries.

• The Class JOptionPane has several methods. A class’s methods are its capabilities.

• For now, you should know that method showInputDialog()

receives a String argument, and

returns a String result.

Page 26: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

String firstNumber,secondNumber;

int number1,number2,sum;

firstNumber = JOptionPane.showInputDialog( “First Num” );

secondNumber = JOptionPane.showInputDialog( “Second Num” );

• These InputDialog boxes are created by this code. • But, since they are Strings, we can’t

add them.

Page 27: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

String firstNumber,secondNumber;

int number1,number2,sum;

firstNumber = JOptionPane.showInputDialog( “First Num” );

secondNumber = JOptionPane.showInputDialog( “Second Num” );

• So, how do we get String “numbers” converted into actual integers that we can do addition on?

• We need some Object that has a method capable of taking a String argument and returning an integer.

Page 28: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

String firstNumber,secondNumber;

int number1,number2,sum;

firstNumber = JOptionPane.showInputDialog( “First Num” );

secondNumber = JOptionPane.showInputDialog( “Second Num” );

number1 = Integer.parseInt( firstNumber );

number2 = Integer.parseInt( secondNumber );

sum = number1 + number2;

• Integer is a class. Its method parseInt() takes a String argument and returns an int.

Page 29: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

import javax.swing.JOptionPane;

public class Addition{

public static void main( String args[] ){

String firstNumber,secondNumber;

int number1,number2,sum;

firstNumber = JOptionPane.showInputDialog( “First Num” );secondNumber = JOptionPane.showInputDialog( “Second Num” ); number1 = Integer.parseInt( firstNumber );number2 = Integer.parseInt( secondNumber);sum = number1 + number2;

JOptionPane.showMessageDialog( null, “The Sum is: ” + sum,“Results”, JOPtionPane.PLAIN_MESSAGE );

System.exit( 0 );

} // end of main()} // end of class Addition

The method showMessageDialog of class JOptionPane takes four arguments:

• null -- this will be explained in a later chapter

• “The Sum is:” + sum --this converts the int sum into a String and concatenates it with the String “The Sum is:”

• “Results” is the message displayed in the title bar.

• JOptionPane.PLAIN_MESSAGE defines the icon.

For the icons, you have five alternate constants to choose from:

JOptionPane.PLAIN_MESSAGE

JOptionPane.ERROR_MESSAGE

JOptionPane.INFORMATION_MESSAGE

JOptionPane.WARNING_MESSAGE

JOptionPane.QUESTION_MESSAGE

In Java, Constants are always all upper case, with words separated by underscores.

Page 30: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

A Caution About String Concatenation• On the previous slide, we concatenated a String with an int: “The Sum is ” + sum.

• Remember the sequence: first, sum was converted from an int to a String, and then that String was concatenated with the other String “The Sum is: ” • So, what would the following code produce?

int number1 = 2;int number2 = 4;

JOptionPane.showMessageDialog( null,“The Sum is: ” + number1 + number2,“Screwy Result”, JOptionPane.WARNING_MESSAGE );

Page 31: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types• A variable called number1 actually refers to a place in memory where the value of the variable is stored.

• Every variable in Java has a:

name,

type,

size, and a

value.

Page 32: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Typesname

Variable names must conform to the rules for identifiers:

• they must begin with a letter,

• after that they can contain digits, dollar signs andunderscores.

• Java uses Unicode for its characters, so any“letter” that is valid for a word in any worldlanguage is therefore valid for a name in Java.

Page 33: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

int num1=2;

• You declare a variable and initialize it on the same line.

• This is a declaration. At this point, the name num1 refers to a location {a pointer} in the computer’s RAM where this variable is stored. • Because an int is declared, we know that four bytes are set aside. • Still, nothing is stored in it yet.

Primitive Data Typestype

• The “type” appears before the identifier name. • The type can be one of the “primitive data types” or it can be any previously defined class.

int num1;

num1 = 2;

Page 34: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Typessize

• When we assign a type [ int, String] to a variable, we are not only declaring a memorylocation.

• We also decide how big of a number or characteris able to be stored in that variable.

Page 35: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Typesvalue

• Finally, the value is what we want the variableto store.

Page 36: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

• Java is a Strongly-typed language. That means, every variable must be declared as a type. In Java, there are 8 primitive types: • 6 of those refer to numbers

--4 for integers types,--2 for floating-point types,

• 1 is the character type char, used for characters in Unicode encoding, and

• 1 is a boolean type for true or false values.

Page 37: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

int

• In contrast to C/C++, an int will always--no matter which operating system--take 4 bytesof storage space.

• Because those 4 bytes are set in stone, you can besure that every JVM that runs your program will be able to store the same size numbers.

• int is the most commonly used number size.

Range:

-2,147,483,648 to 2,147,483,647 (over two billion)

Page 38: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

short

• In Java, a short is defined as 2 bytes, no matterwhich operating system is used.

• You would only use this for special situations, such as when speed is really crucial.

{ For VB programmers, a short is whatyou’ve come to think of as an int . }

Range:

-32,768 to 32,767

Page 39: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

long

• A long is defined as 8 bytes, no matterwhich operating system is used.

Range:

-9,223,372,036,854,775,808L to 9,223,372,036,854,775,807L

• Please notice the upper-case L suffix is appended to any long. This is required.

• Hexadecimal numbers have a prefix: 0x0x1CFE.

Page 40: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

byte

• A byte is defined as 1 byte, no matterwhich operating system is used.

Range:

-128 to 127

• Again, like a short, a byte is only used under rare circumstances.

Page 41: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

float

• A float is defined as 4 bytes, no matterwhich operating system is used.

Range:

approximately 3.40282347E+38F

( 6-7 significant decimal digits )

• Because there are so few decimal places available, float is not used all that often.

Page 42: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

double

• A double is defined as 8 bytes, no matterwhich operating system is used.

Range:

approximately 1.79769313486231570E+308( 15 significant decimal digits )

• “double is the one to have when you’re having more than one--decimal place, that is.”• This is the most common choice for any decimal.• double is the default, not float, therefore, no special character is appended. (See red arrow.)

Page 43: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

char

• A char is defined as 2 bytes, no matter whichoperating system is used. A char type always refersto a character in the Unicode encoding scheme.

[\uFFFF \u is the escape character syntax]About 65,536 different characters can be represented.

• Single quotes denote a char constant

‘H’ is a char constant

“H” is a string that happens to only contain asingle character.

Page 44: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

char

• A char is defined as 2 bytes. A char type is asingle Unicode character. [\uFFFF \u is the escape character syntax--65,536different characters can be represented.]

• Single quotes denote a single-letter char constant

‘H’ is a char constant.

“H” is a String that happens to only contain asingle character--it is not a char.This is a syntax error! The compiler will complain.

Page 45: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Primitive Data Types

boolean

• A boolean type has only two values.

• In contrast to C/C++, in Java 0 and 1 cannot stand in for true or false.

• A boolean type must be assigned the value of theconstants true or false. [Meaning, these exact lowercase words.]

Page 46: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Java Math Operators• Addition +

• Subtraction -

• Multiplication *

• Division /

• Modulus %

All are binary operators, i.e., they work with two numbers. They are executed according to the rules for operator precedence. [page 1240]

(There is no operator for exponentiation in Java)

Page 47: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

• Multiplication *

• What happens if you multiply variables of different types?

Java Math Operators

int x = 2;

double y = 3.889, sum = 0.000;

sum = y * x;

• The integer will be temporarily converted to a double and two doubles will be multiplied.

• Afterwards, the original integer is unchanged.

Page 48: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

• Rules for Temporary Conversions

1st Priority: If either of the operands is of type double, then the other one is converted to double for the calculation.

2nd Priority: Otherwise, if either of the operands is of type float, then the other one is converted to float for the calculation.

3rd Priority: Otherwise, if any of the operands is of type long, then the other one is converted to long for the calculation.

Note: these conversions are automatic because none of them result in a loss of accuracy.

Java Math Operators

Page 49: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

• Static Casts So, what happens when you desire to convert a double to a float? Information will inevitably be lost. • You accomplish this using a cast.

Java Math Operators

int x = 2, sum = 0;

double y = 3.889;

sum = (int)y * x;

{ sum is now equal to 6 }

• Here, a value of just 3 will be used for y. • If you want to round y, you a method from class Math:

sum = (int)Math.round(y) * x;

Page 50: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Java Math Operators

• Division /

• Division can lead to unexpected results:

If both operands are integers, then the result of the division is also an integer.

Any fractional part of the division is discarded.

Therefore: 17/3 = 5

Page 51: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Java Math Operators

• Modulus %

• The modulus operator is confusing at first, but eventually it becomes your good friend.

In contrast to the division operator, it returns the remainder of any division. The modulus operator can only be used when both operands are integers.

17 % 3 = 2

You say this “17 modulus 3 equals 2”

Page 52: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Comparison Operators• These are used for selection structures:

equality ==

not equal !=

greater than >

less than <

greater than or equal >=

less than or equal <=

Page 53: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Comparison Operators

• The equality operator is a common source of mistakes:

equality ==

Note that two equal signs are always used.

The single equal sign [ = ] is only used for assignment, that is, assigning the value on the right to the variable on the left.

num1 = 33;

Page 54: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

Comparison Operators

• When you make a compound symbol using the equal sign, the equal sign is always on the right:

equality ==not equal !=greater than or equal >=

less than or equal <=

Page 55: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

“if” Statement Syntax• Decision Making• The if exactly mirrors C/C++, and it has three variants:1.) if( expression )

statement;

2.) if( expression )statement;

elsestatement;

3.) if( expression )statement;

else if( expression )statement;

elsestatement;

Page 56: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

if( expression )statement;

if( expression ){

statement1; statement2;

}

“if” Statement Syntax

• Simple if• The “expression” must be something that uses the comparison operators and resolves to either true or false.

• The statement is executed if the expression is true.• Only one statement can be made conditional without brackets. If you wish to conditionally execute more than one statement, you use brackets to create a block.

Page 57: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

if( expression )statement;else

statement;

“if” Statement Syntax

• Simple if/else• If the “expression” is true, the if branch executes, if not, the else branch executes.

Page 58: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

if( expression ){

statement1;statement2;

} else{

statement3;statement4; }

“if” Statement Syntax

• Simple if/else• If the “expression” is true, the if branch executes, if not, the else branch executes.

if( expression ){

statement1;statement2;

} //end of if else{

statement3;statement4; } //

end of else

Don’t bother to label the closing brackets unless

you have a really long if.Still you should always line

up your brackets.

Page 59: Java i lecture_2

Java I--Copyright © 2000-2004 Tom Hunter

“if” Statement Syntax

if( expression )statement;else if( expression )

statement;else

statement;

• Compact if/else if/ else• To prevent your nested ‘if’s from marching across the page, you can use this nested if. You can go on nesting them as long as you like, and the last one is just an else.