CMSC 202 Java Primer A Sample Java Application

  • Slides: 47
Download presentation
CMSC 202 Java Primer

CMSC 202 Java Primer

A Sample Java Application Version 9/10 2

A Sample Java Application Version 9/10 2

Java Program Basics • All programs begin execution at main • System. out. print(

Java Program Basics • All programs begin execution at main • System. out. print( ) – Outputs text to the screen System. out. print(“Hello”); • System. out. println( ) – Outputs text to the screen and advances to the next line System. out. println(“Hello and advance”); Version 9/10 3

Variable Declarations • Format: type variable-name; • Examples: int total; float salary; • Variables

Variable Declarations • Format: type variable-name; • Examples: int total; float salary; • Variables may be declared anywhere in the code, but may not be used until declared. – Note the declaration of int answer; on line 8 in the sample program. • This feature allows you to declare variables close to where they are used, making code more readable. Version 9/10 More about declarations: 4

Identifiers • Must not start with a digit • Only letters, digits, or the

Identifiers • Must not start with a digit • Only letters, digits, or the underscore symbol allowed • Can be theoretically be of any length • Java is a case-sensitive language. – Rate, rate, and RATE are the names of three different variables. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 7

Naming Conventions • Variables, methods, and objects – Start with a lowercase letter –

Naming Conventions • Variables, methods, and objects – Start with a lowercase letter – Indicate "word" boundaries with an uppercase letter – Restrict the remaining characters to digits and lowercase letters top. Speed bank. Rate 1 time. Of. Arrival • Classes – Start with an uppercase letter – Otherwise, adhere to the rules above First. Program Version 9/10 My. Class Copyright © 2008 Pearson Addison-Wesley. All rights reserved String 8

Primitive Types Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 9

Primitive Types Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 9

Fixed Size for Primitive Types • Java byte-code runs on the Java Virtual Machine

Fixed Size for Primitive Types • Java byte-code runs on the Java Virtual Machine (JVM). – Therefore, the size (number of bytes) for each primitive type is fixed. – The size is not dependent on the actual machine/device on which the code executes. Version 9/10 10

Arithmetic Operators • Assignment =, +=, -=, *=, etc. • Multiplication, addition, mod, etc.

Arithmetic Operators • Assignment =, +=, -=, *=, etc. • Multiplication, addition, mod, etc. *, +, /, % • Increment and Decrement (pre- and post) ++, -Version 9/10 more on operators: 11

Arithmetic Operators and Expressions • If an arithmetic operator is combined with int operands,

Arithmetic Operators and Expressions • If an arithmetic operator is combined with int operands, then result is int. • If an arithmetic operator is combined with double operands, the result is double. • If different types are combined in an expression, the result is the right-most type in the expression as follows: byte short int long float double char – Exception: If the type produced should be byte or short, then the type produced will actually be an int. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 18

Integer and Floating-Point Division • When one or both operands are a floating-point type,

Integer and Floating-Point Division • When one or both operands are a floating-point type, division results in a floating-point type. 15. 0 / 2 15 / 2. 0 15. 0 / 2. 0 evaluates to 7. 5 • When both operands are integer types, division results in an integer type. – Fractional part is discarded (truncation) 15/2 evaluates to 7 • Make at least one of the operands a floating-point type if the fractional portion is needed. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 19

Assignment/Arithmetic Review Arithmetic Operators http: //www. csee. umbc. edu/courses/undergraduate/201/ spring 09/misc/arithmetic. shtml Assignment Operators

Assignment/Arithmetic Review Arithmetic Operators http: //www. csee. umbc. edu/courses/undergraduate/201/ spring 09/misc/arithmetic. shtml Assignment Operators http: //www. csee. umbc. edu/courses/undergraduate/201/ spring 09/misc/assignments. shtml Version 9/10 20

Type Casting • A type cast takes a value of one type and produces

Type Casting • A type cast takes a value of one type and produces a value of another type with an "equivalent" value. int n, m; double ans = n / (double)m; OR double ans = (double)n / (double)m; – The type and value of n and m do not change. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 21

Java Comparison Operators Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 22

Java Comparison Operators Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 22

Boolean Expressions • Operators: &&, ||, ! • Boolean expression evaluates to the values

Boolean Expressions • Operators: &&, ||, ! • Boolean expression evaluates to the values true or false • Simple Boolean expressions: time < limit your. Score == my. Score – Two equal signs (==): equality testing • Single equal sign (=): assignment – A Boolean expression does not need to be enclosed in parentheses, unless it is used in an if-else statement. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 23

Operator Precedence and Associativity Precedence () * / % + (addition) - (subtraction) <

Operator Precedence and Associativity Precedence () * / % + (addition) - (subtraction) < <= > >= == != && || = Version 9/10 Associativity left to right/inside-out left to right left to right to left 24

Java Flow Control • Java supports the usual flow control constructs with the same

Java Flow Control • Java supports the usual flow control constructs with the same basic syntax as C/C++. • Decisions if, if-else, switch • Loops for, while, do-while • Boolean expressions – Java flow control constructs evaluate Boolean expressions, like C/C++ more on flow control: Version 9/10 25

? : Operator • ? : is the ternary operator • General form: (

? : Operator • ? : is the ternary operator • General form: ( boolean expression ? true result : false result ) • Examples int score = 42; int average = 66; int x = ( score > average ? 22 : 33 ); String s = (score > average ? “ above “ : “ below “); System. out. println( “My score is “ + s + “average”); Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 43

Variable Scope Variable scope: • That set of code statements in which the variable

Variable Scope Variable scope: • That set of code statements in which the variable is known to the compiler • Where it can be referenced in your program. • Limited to the code block in which it is defined. – A code block is a set of code enclosed in braces ({ }). One interesting application of this principle allowed in Java involves the for loop construct. Version 9/10 44

for-loop index • Can declare and initialize variables in the heading of a for

for-loop index • Can declare and initialize variables in the heading of a for loop. • These variables are local to the for-loop. • They may be reused in other loops. String s = “hello world”; int count = 1; for (int i = 0; i < s. length(); i++) { count *= 2; } //using 'i' here generates a compiler error Version 9/10 45

Named Constants • No “mystery” values! • Declare constants as named constants, and use

Named Constants • No “mystery” values! • Declare constants as named constants, and use their name instead public static final int INCHES_PER_FOOT = 12; public static final double RATE = 0. 14; – The “final” modifier prevents a value from being changed inadvertently. – More about public and static later – Naming convention for constants • Use all uppercase letters • Designate word boundaries with an underscore character Version 9/10 46

Comments • Line comment – Begins with the symbols // – Compiler ignores remainder

Comments • Line comment – Begins with the symbols // – Compiler ignores remainder of the line – Used for the coder or for a programmer who modifies the code if (birth. Year > current. Year) then. . . // birth year is invalid • Block comment – Begins with /* and ends with */ – Compiler ignores anything in between – Can span several lines – Provides documentation for the users of the program /* File: Date Author: Joe Smith Date: 9/1/09 */ Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 47

Comments & Named Constants Version 9/10 Copyright © 2008 Pearson Addison-Wesley All rights reserved

Comments & Named Constants Version 9/10 Copyright © 2008 Pearson Addison-Wesley All rights reserved 48

Comments and Coding Standards • Check the course website regarding comment and coding standard

Comments and Coding Standards • Check the course website regarding comment and coding standard requirements. http: //www. csee. umbc. edu/courses/undergra duate/202/fall 10/Projects/codingstd. shtml Version 9/10 49

The String Class • No primitive type for strings in Java • String is

The String Class • No primitive type for strings in Java • String is a predefined class in the Java language. – Used to store and process strings • Objects of type String are made up of strings of characters within double quotes. – Any quoted string is a constant of type String. "Live long and prosper. " • A variable (object) of type String can be given the value of a String constant. String blessing = “Live long and prosper. “ String greeting = “Hello”; String name = “Bob”; Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 50

String Concatenation • Use the + operator String greeting = “Hello”; String name =

String Concatenation • Use the + operator String greeting = “Hello”; String name = “Bob”; greeting + name is equal to “Hello. Bob” • Any number of strings can be concatenated together. • When a string is combined with almost any other type of item, the result is a string “The answer is “ + 42 evaluates to “The answer is 42“ • Strings also support the += operator String greeting = ”Hello”; greeting += “ Bob”; changes greeting to “Hello Bob” Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 51

String Methods • The String class contains many useful methods (operations) for stringprocessing applications.

String Methods • The String class contains many useful methods (operations) for stringprocessing applications. • Calling a String method: String-object-name. method-name (arguments); OR variable = String-object-name. method-name (arguments); • Example String greeting = “Hello“; //greeting is an object int count = greeting. length(); System. out. println(“Length is “ + greeting. length()); Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 52

Some Methods in the Class String (1 of 4) Version 9/10 Copyright © 2008

Some Methods in the Class String (1 of 4) Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 53

Some Methods in the Class String (2 of 4) Version 9/10 Copyright © 2008

Some Methods in the Class String (2 of 4) Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 54

Some Methods in the Class String (3 of 4) Version 9/10 Copyright © 2008

Some Methods in the Class String (3 of 4) Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 55

Some Methods in the Class String (4 of 4) Version 9/10 Copyright © 2008

Some Methods in the Class String (4 of 4) Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 56

String Indexes • Count from zero when referring to the position or index of

String Indexes • Count from zero when referring to the position or index of a character in a string. • The characters within the String may be accessed (but not changed) using the char. At( int index) method. Version 9/10 Copyright © 2008 Pearson Addison-Wesley All rights reserved 57

Pitfall: Using == with Strings • The equality operator (==) can test the stored

Pitfall: Using == with Strings • The equality operator (==) can test the stored values of two values of a primitive type. int x = 5, y = 5; if (x == y). . . • // returns true When applied to two objects, == tests to see if they are stored in the same memory location. Example: String string 1 = “hello”; String string 2 = “hello”; if (string 1 == string 2). . . • // returns false To test two strings to see if they have equal values, use the String method equals, or equals. Ignore. Case. if (string 1. equals(string 2)) // returns true or if (string 1. equals. Ignore. Case(string 2)) // returns true Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 58

Escape Sequences • The character following the backslash does not have its usual meaning.

Escape Sequences • The character following the backslash does not have its usual meaning. • It is formed using two symbols, but regarded as a single character. Version 9/10 Copyright © 2008 Pearson Addison-Wesley All rights reserved 59

Arrays • Array: A data structure used to process a collection of data that

Arrays • Array: A data structure used to process a collection of data that is all of the same type. • An array is declared and created using the new operator. Base. Type[] Array. Name = new Base. Type[size]; • The size may be given • as a non-negative integer, or • as an expression that evaluates to a nonnegative integer. char[] line = new char[80]; double[] reading = new double[count]; Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 60

Declaring vs. Creating Arrays • Example double[] score = new double[5]; or, using two

Declaring vs. Creating Arrays • Example double[] score = new double[5]; or, using two statements: double[] score; score = new double[5]; // declares // creates • The 1 st statement declares score to be of the array type double[] (an array of doubles). • The 2 nd statement – creates an array with five numbered values of type double – makes the variable score a name for the array Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 61

The length Instance Variable • An array is considered to be an object. •

The length Instance Variable • An array is considered to be an object. • Every array has exactly one instance variable (characteristic) named length. – When an array is created, the instance variable length is automatically set equal to its size. – The value of length cannot be changed (other than by creating an entirely new array using new). double[] score = new double[5]; – Given score above, score. length has a value of 5. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 62

Initializing Arrays • An array can be initialized when it is declared. • Example:

Initializing Arrays • An array can be initialized when it is declared. • Example: int[] age = {2, 1}; • Given age above, age. length automatically has a value of 3. System. out. print(“Length is “ + age. length); prints Length is 3 Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 63

Initializing Arrays • Using a for loop, double[] reading = new double[100]; for(int index

Initializing Arrays • Using a for loop, double[] reading = new double[100]; for(int index = 0; index < reading. length; index++) { reading[index] = 42. 0; } • If the elements of an array are not initialized explicitly, they will automatically be initialized to the default value for their base type. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 64

An Array Coding Exercise • Write a code fragment that finds the smallest value

An Array Coding Exercise • Write a code fragment that finds the smallest value in an array of integers. Version 9/10 65

Arrays as Parameters • An array may be a method argument. Example: public void

Arrays as Parameters • An array may be a method argument. Example: public void double. Elements(double[] a) { for (int i = 0; i < a. length; i++) a[i] = a[i]*2; } • // a = address // notice use // of a. length Given arrays of double as follows: double[] a = new double[10]; double[] b = new double[30]; the method double. Elements can be invoked as follows: double. Elements(a); double. Elements(b); Version 9/10© 2008 Pearson Addison-Wesley. All rights Copyright reserved 66 6 -66

Pitfall: Use of = with Arrays • An array variable contains the memory address

Pitfall: Use of = with Arrays • An array variable contains the memory address of the array it names. • The assignment operator (=) only copies this memory address. int a[ ] = {1, 2, 3}; int b[ ] = new int[3]; b = a; Version 9/10 // b and a are now names for // the same array Copyright © 2008 Pearson Addison-Wesley. All rights reserved 67

Pitfall: Use of = with Arrays • A for loop is usually used to

Pitfall: Use of = with Arrays • A for loop is usually used to make two different arrays have the same values in each indexed position. int int for i; a[ ] = {1, 2, 3}; b[ ] = new int[3]; (i = 0; (i < a. length) b[i] = a[i]; && (i < b. length); i++) – Note that the above code will not make b an exact copy of a, unless a and b have the same length Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 68

Pitfall: Use of == with Arrays • The equality operator (==) only tests two

Pitfall: Use of == with Arrays • The equality operator (==) only tests two arrays to see if they are stored in the same memory location. (a == b) is true if a and b reference the same array. Otherwise, it is false. • An equals. Array method can be defined to test arrays for value equality. – The following method tests two integer arrays to see if they contain the same integer values. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 69

Code to Test for Value Equality public boolean equals. Array(int[] a, int[] b) {

Code to Test for Value Equality public boolean equals. Array(int[] a, int[] b) { if (a. length == b. length) { int i = 0; boolean elements. Match = true; while (i < a. length && elements. Match) { if (a[i] != b[i]) elements. Match = false; i++; } return elements. Match; } else return false; } Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 70

Partially Filled Arrays • The exact size needed for an array – is not

Partially Filled Arrays • The exact size needed for an array – is not always known when a program is written, or – it may vary from one run of the program to another. • One solution: – Declare the array to be of the largest size that the program could possibly need, and – keep track of how much of the array is actually used. • An array position that has not been given a meaningful value must never be referenced. Version 9/10 Copyright © 2008 Pearson Addison-Wesley. All rights reserved 71

Partially Filled Arrays int my. Array = new int[50]; int count = 0; //

Partially Filled Arrays int my. Array = new int[50]; int count = 0; // number of filled array positions my. Array[0] = 7; count++; my. Array[1] = 8; count++; // possibly more values added to the array int num. Values = sum. Array. Values(my. Array, count); System. out. println(“The sum of all array values is “ + num. Values); Version 9/10 72