Object-Oriented Programming Topic 2: Fundamental...

26
8-Sep-03 Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming Topic 2: Fundamental Programming Structures in Java Maj Joel Young [email protected] Maj Joel Young

Transcript of Object-Oriented Programming Topic 2: Fundamental...

Page 1: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

8-Sep-03

Air Force Institute of TechnologyElectrical and Computer Engineering

Object-Oriented Programming

Topic 2: Fundamental Programming

Structures in Java

Maj Joel [email protected]

Maj Joel Young

Page 2: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 2

Object-Oriented Programming

DesignJava Identifiers

• Identifiers– Used to name local variables– Names of attributes – Names of classes

• Primitive Data Types Available in Java (size in bytes)– byte (1), -128 to 127– short (2), -32768 to 32767– int (4), -2147483648 to 2147483647– long (8), -9223372036854775808 to 9223372036854775807– float (4), -3.4E38 to 3.4E38, 7 digit precision– double (8), -1.7E308 to 1.7E308, 17 digits precision– char (2), unicode characters– boolean (true, false), discrete values

Page 3: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 3

Object-Oriented Programming

DesignJava Identifiers

• Naming Rules– Must start with a letter– After first letter, can consist of letters, digits (0,1,…,9)– The underscore “_” and the dollar sign “$” are considered letters

• Variables– All variables must be declared in Java– Can be declared almost anywhere (scope rules apply)– Variables have default initialization values

– Integers: 0– Reals: 0.0– Boolean: False

– Variables can be initialized in the declaration

Page 4: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 4

Object-Oriented Programming

DesignJava Identifiers

• Example Declarations

int speed; // integer, defaults to 0

int speed = 100; // integer, init to 100

long distance = 3000000000L; // “L” needed for a long

float delta = 25.67f; // “f” needed for a float

double delta = 25.67; // Defaults to doubledouble bigDelta = 67.8E200d; // “d” is optional here

boolean status; // defaults to “false”

boolean status = true;

• Potential Problems (for the C/C++ crew)

long double delta = 3.67E204; // No “long double” in Java

unsigned int = 4025890231; // No unsigned ints in Java

Page 5: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 5

Object-Oriented Programming

DesignJava Types

• Arrays

int[] numbers = new int[n]

// Array of integers, size is n

– size can be computed at run time, but can't be changed– allocated on heap (thus enabling run time size allocation)– invalid array accesses detected at run time (e.g. numbers[6];)– numbers.length; // read only variable specifying length of array– reference semantics

int[] winning_numbers;

winning_numbers = numbers; // refer to same array

numbers[0] = 13; // changes both

Page 6: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 6

Object-Oriented Programming

DesignJava Types

• StringsString message = "Error " + errnum;

– strings are immutable – can't be changed, although variables can be changed (and old string left for garbage collection)

– message = "Next error " + errnum2;– use StringBuffer to edit strings

StringBuffer buf = new StringBuffer(greeting);

buf.setCharAt( 4, '?');greeting = buf.toString();

Page 7: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 7

Object-Oriented Programming

DesignJava Types

• Strings– String comparison

if (greeting == "hello" ) …. // error, compares location only

if ( greeting.equals("hello")) …. // OKstring1.compareTo(string2)

// negative if string1 < string 2; // zero when equal,

// positive if string1 > string2

string1.substring(2, 6); // return substring between position 2 and 5

Page 8: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 8

Object-Oriented Programming

DesignJava Operators

• Operators/Order of Precedence

8Bitwise OR|

7Bitwise XOR^

6Bitwise AND&

5Bitwise shifts<<,>>

4Addition, subtraction+ or -

3Multiplication, division, modulus* or / or %

2Unary plus, unary minus, complement+ or – or ~

1Parens, array indices, object invocation, increment, decrement

() or [ ] or . or ++ or - -

PrecedenceOperationOperator

Page 9: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 9

Object-Oriented Programming

DesignJava Operators

• Example Usage

int anInt1 = 2, anInt2 = 1, anInt3;

double aDbl1;

anInt3 = anInt1 + anInt2 * 4; // anInt3 gets 6anInt3 = (anInt1 + anInt2) * 4; // anInt3 gets 12

anInt3 = ++anInt2 * 2; // anInt3 gets 4

anInt2 = 1;

anInt3 = anInt2++ * 2; // anInt3 gets 2

anInt2 = 1;

anInt3 = anInt1 & anInt2; // anInt3 gets 0anInt3 = anInt1 ^ anInt2; // anInt3 gets 3

anInt3 = anInt2 << 1; // anInt3 gets 2

anInt3 = 1 / 2; // anInt3 gets 0

aDbl1 = 1 / 2; // aDbl1 gets 0.0

aDbl1 = 1.0 / 2.0; // aDbl1 gets 0.5

Page 10: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 10

Object-Oriented Programming

DesignJava Statements

• Import Statements (discussed later)

• Class/Interface Declarations (discussed later)

• Assignments

• Conditionals

• Loops

• Miscellaneous (mixed in other discussions)

Page 11: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 11

Object-Oriented Programming

DesignJava Statements

• Assignments– General Format: variable = expression ;

Where variable is a previously declared identifier andexpression is a valid combo of identifiers, operators,and method (a.k.a. procedure or function) calls

– Shortcuts:var *= expr ; // Equivalent to var = var * (expr);var /= expr ; // Equivalent to var = var / (expr);

var += expr ; // Equivalent to var = var + (expr);

var -= expr ; // Equivalent to var = var – (expr);

var %= expr ; // Equivalent to var = var % (expr);var++; // Equivalent to var = var + 1;

var--; // Equivalent to var = var - 1;

Page 12: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 12

Object-Oriented Programming

DesignJava Conditional Constructs

• “if” Statements

– if with code block

if (boolean_expr){

statements}

– if with single statement

if (boolean_expr)statement;

Page 13: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 13

Object-Oriented Programming

DesignJava Conditional Constructs

• if” Statements (Continued)

– if-else

if (boolean_expr){

statements for true}

else{

statements for false

}

ifif

statementsstatements

falsetrue

statementsstatements

Page 14: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 14

Object-Oriented Programming

DesignJava Conditional Constructs

• Boolean Expressions

– Boolean expressions use conditional operators such that they result in a value of true or false

– Conditional Operators (Not by order of precedence)

Evaluation OR, short circuit OR| or ||

Evaluation AND, short circuit AND& or &&

Unary negation (NOT)!

Greater than or equal, less than or equal>= or <=

Greater than, less than> or <

Equality, not equal== or !=

OperationOperator

Page 15: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 15

Object-Oriented Programming

DesignJava Conditional Constructs

• Boolean Expression Examples

int i1 = 1, i2 = 2, i3 = 3, i4 = 0;boolean b1 = true, b2 = false, b3 = true;

i2 > i1 // true(i3 – i2) > i1 // false(i3 – i2) >= i1 // true(i2 > i1) & (i2 < i3) // true(i2 < i1) | (i2 > i1) // truei2 != i1 // true(i1 < i2) | ((i1/i4) > 1) // Divide by 0 exception(i1 < i2) || ((i1/i4) > 1) // true(i1 < i2) | (i1++ > 1) // true, i1 contains 2(i1 < i2) || (i1++ > 1) // true, i1 contains 1b1 && b2 && b3 // false(b1 || b2) && b3 // trueb1 && (i1 == (i3 – i2)) // true

Page 16: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 16

Object-Oriented Programming

DesignJava Conditional Constructs

• if-else” Statement Example

class Example{

static public void main(String args[]){

// A very contrived exampleint i1 = 1, i2 = 2;System.out.print(“Result: “);if (i1 > i2){

System.out.println(“i1 > i2”);}else{

System.out.println(“i2 >= i1”);}

}}

ifif

statementsstatements

falsetrue

statementsstatements

Page 17: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 17

Object-Oriented Programming

DesignJava Conditional Constructs

• The Switch Statement

switch (integer_expression){

case int_value_1:statementsbreak;

case int_value_2:statementsbreak;

…case int_value_n:

statementsbreak;

default:statements

}

ififtrue

statementsstatements

ifif

false

truestatementsstatements

ifif

false

truestatementsstatements

statementsstatements

false

Page 18: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 18

Object-Oriented Programming

Design

• Don’t forget the “break”

switch (integer_expression){

case int_value_1:statements// No break!

case int_value_2:statementsbreak;

…case int_value_n:

statementsbreak;

default:statements

}

ififtrue

statementsstatements

ifif

false

truestatementsstatements

ifif

false

truestatementsstatements

statementsstatements

false

Page 19: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 19

Object-Oriented Programming

DesignJava Conditional Constructs

• Example

int n = 5;switch (n)

{

case 1:n = n + 1;

break;case 5:

n = n + 2;break;

default:

n = n – 1;}

ififtrue

statementsstatements

ifif

false

truestatementsstatements

statementsstatements

false

Page 20: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 20

Object-Oriented Programming

DesignJava Conditional Constructs

• Example

char c = ‘b’;int n = 0;

switch (c)

{case ‘a’:

n = n + 1;break;

case ‘b’:n = n + 2;

break;

default:n = n – 1;

}

ififtrue

statementsstatements

ifif

false

truestatementsstatements

statementsstatements

false

Page 21: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 21

Object-Oriented Programming

DesignJava Looping Constructs

• while loop– Exit condition evaluated at top

• do loop– Exit condition evaluated at bottom

• for loop– Exit condition evaluated at top– Includes a initialization statements– Includes a update statements for each iteration

Page 22: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 22

Object-Oriented Programming

DesignJava Looping Constructs

• while loop

while (boolean_expr){

statements

}

• do loop

do{

statements}

while (boolean_expr)

ifif

statementsstatements

false

true

ifif

statementsstatements

false

true

Page 23: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 23

Object-Oriented Programming

DesignJava Looping Constructs

• for loop

for (init_stmnt; bool_expr; update_stmnt)

{statements

}

ifif

statementsstatements

false

true

initinit

updateupdate

Page 24: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 24

Object-Oriented Programming

DesignJava Looping Constructs

• for loop

for (init_stmnt; bool_expr; update_stmnt)

{statements

}

ifif

statementsstatements

false

true

initinit

updateupdate

Page 25: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 25

Object-Oriented Programming

DesignJava Looping Constructs

class Example{

static public void main(String args[]){

int i = 0;System.out.println("while loop");while (i < 10){

System.out.println(i);i++;

}

System.out.println("do loop");do{

System.out.println(i);i--;

}while (i > 0);

System.out.println("for loop");for (i = 0; i < 10; i++){

System.out.println(i);}

} // End main} // End Example

Page 26: Object-Oriented Programming Topic 2: Fundamental ...faculty.nps.edu/kmsquire/cs3901/references/AFIT... · Java Identifiers • Naming Rules – Must start with a letter – After

Air Force Institute of TechnologyElectrical and Computer Engineering8-Sep-03 26

Object-Oriented Programming

DesignHomework

• Go to: http://developer.java.sun.com/developer/infodocs/– Explore the Java API Docs and Tutorials

• Go to: http://java.sun.com/j2se/1.4.2/docs/api/– Explore:

– Read the docs for the String class– Read the docs for the Integer class– Read the docs for the System class

• Enter the code from the Example class (cut and paste from pdf or ppt) and compile and run it.