Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming Topic 2: Fundamental Programming Structures in Java Maj Joel Young Joel.Young@afit.edu 13-Apr-15 Maj Joel Young Object-Oriented Programming Design Java Identifiers • Identifiers – Used to name local variables – Names of attributes – Names of classes • Primitive Data Types Available in Java (size in bytes) – – – – – – – – 13-Apr-15 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 Air Force Institute of Technology Electrical and Computer Engineering 2 Object-Oriented Programming Design Java 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 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 3 Object-Oriented Programming Design Java Identifiers • Example Declarations int speed; int speed = 100; long distance = 3000000000L; float delta = 25.67f; double delta = 25.67; double bigDelta = 67.8E200d; boolean status; boolean status = true; // // // // // // // integer, defaults to 0 integer, init to 100 “L” needed for a long “f” needed for a float Defaults to double “d” is optional here defaults to “false” • 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 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 4 Object-Oriented Programming Design Java 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 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 5 Object-Oriented Programming Design Java Types • Strings String 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(); 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 6 Object-Oriented Programming Design Java Types • Strings – String comparison if (greeting == "hello" ) …. // error, compares location only if ( greeting.equals("hello")) …. // OK string1.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 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 7 Object-Oriented Programming Design Java Operators • Operators/Order of Precedence Operator () or [ ] or . or ++ or - - 13-Apr-15 Operation Precedence Parens, array indices, object invocation, increment, decrement 1 + or – or ~ Unary plus, unary minus, complement 2 * or / or % Multiplication, division, modulus 3 + or - Addition, subtraction 4 <<,>> Bitwise shifts 5 & Bitwise AND 6 ^ Bitwise XOR 7 | Bitwise OR 8 Air Force Institute of Technology Electrical and Computer Engineering 8 Object-Oriented Programming Design Java Operators • Example Usage int anInt1 = 2, anInt2 = 1, anInt3; double aDbl1; anInt3 = anInt1 + anInt2 * 4; anInt3 = (anInt1 + anInt2) * 4; anInt3 = ++anInt2 * 2; anInt2 = 1; anInt3 = anInt2++ * 2; anInt2 = 1; anInt3 = anInt1 & anInt2; anInt3 = anInt1 ^ anInt2; anInt3 = anInt2 << 1; anInt3 = 1 / 2; aDbl1 = 1 / 2; aDbl1 = 1.0 / 2.0; 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering // anInt3 gets 6 // anInt3 gets 12 // anInt3 gets 4 // anInt3 gets 2 // // // // // // anInt3 gets 0 anInt3 gets 3 anInt3 gets 2 anInt3 gets 0 aDbl1 gets 0.0 aDbl1 gets 0.5 9 Object-Oriented Programming Design Java Statements • Import Statements (discussed later) • Class/Interface Declarations (discussed later) • Assignments • Conditionals • Loops • Miscellaneous (mixed in other discussions) 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 10 Object-Oriented Programming Design Java Statements • Assignments – General Format: variable = expression ; Where variable is a previously declared identifier and expression is a valid combo of identifiers, operators, and method (a.k.a. procedure or function) calls – Shortcuts: var *= expr var /= expr var += expr var -= expr var %= expr var++; var--; 13-Apr-15 ; // Equivalent to ; // Equivalent to ; // Equivalent to ; // Equivalent to ; // Equivalent to // Equivalent to // Equivalent to var var var var var var var Air Force Institute of Technology Electrical and Computer Engineering = = = = = = = var var var var var var var * / + – % + - (expr); (expr); (expr); (expr); (expr); 1; 1; 11 Object-Oriented Programming Design Java Conditional Constructs • “if” Statements – if with code block if (boolean_expr) { statements } – if with single statement if (boolean_expr) statement; 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 12 Object-Oriented Programming Design Java Conditional Constructs • if” Statements (Continued) – if-else if (boolean_expr) { statements for true } else { statements for false } 13-Apr-15 if true statements Air Force Institute of Technology Electrical and Computer Engineering false statements 13 Object-Oriented Programming Design Java 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) Operator == or != > or < >= or <= ! & or && | or || 13-Apr-15 Operation Equality, not equal Greater than, less than Greater than or equal, less than or equal Unary negation (NOT) Evaluation AND, short circuit AND Evaluation OR, short circuit OR Air Force Institute of Technology Electrical and Computer Engineering 14 Object-Oriented Programming Design Java Conditional Constructs • Boolean Expression Examples int i1 = 1, i2 = 2, i3 = 3, i4 = 0; boolean b1 = true, b2 = false, b3 = true; i2 > i1 (i3 – i2) > i1 (i3 – i2) >= i1 (i2 > i1) & (i2 < i3) (i2 < i1) | (i2 > i1) i2 != i1 (i1 < i2) | ((i1/i4) > 1) (i1 < i2) || ((i1/i4) > 1) (i1 < i2) | (i1++ > 1) (i1 < i2) || (i1++ > 1) b1 && b2 && b3 (b1 || b2) && b3 b1 && (i1 == (i3 – i2)) 13-Apr-15 // // // // // // // // // // // // // true false true true true true Divide by 0 exception true true, i1 contains 2 true, i1 contains 1 false true true Air Force Institute of Technology Electrical and Computer Engineering 15 Object-Oriented Programming Design Java Conditional Constructs • if-else” Statement Example class Example { static public void main(String args[]) true { // A very contrived example int i1 = 1, i2 = 2; statements System.out.print(“Result: “); if (i1 > i2) { System.out.println(“i1 > i2”); } else { System.out.println(“i2 >= i1”); } } } 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering if false statements 16 Object-Oriented Programming Design Java Conditional Constructs • The Switch Statement switch (integer_expression) { case int_value_1: statements break; case int_value_2: statements break; … case int_value_n: statements break; default: statements } 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering if true statements false if true statements false if true statements false statements 17 Object-Oriented Programming Design • Don’t forget the “break” switch (integer_expression) { case int_value_1: statements // No break! case int_value_2: statements break; … case int_value_n: statements break; default: statements } 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering if true statements false if true statements false if true statements false statements 18 Object-Oriented Programming Design Java Conditional Constructs • Example int n = 5; switch (n) { case 1: n = n + 1; break; case 5: n = n + 2; break; default: n = n – 1; } 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering if true statements false if true statements false statements 19 Object-Oriented Programming Design Java 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; } 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering if true statements false if true statements false statements 20 Object-Oriented Programming Design Java 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 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 21 Object-Oriented Programming Design Java Looping Constructs • while loop false while (boolean_expr) { statements } if true statements – • do loop statements do { statements } while (boolean_expr) 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering if true false 22 Object-Oriented Programming Design Java Looping Constructs • for loop for (init_stmnt; bool_expr; update_stmnt) { statements init } false if true statements 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering update 23 Object-Oriented Programming Design Java Looping Constructs • for loop for (init_stmnt; bool_expr; update_stmnt) { statements init } false if true statements 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering update 24 Object-Oriented Programming Design Java 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 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 25 Object-Oriented Programming Design Homework • 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. 13-Apr-15 Air Force Institute of Technology Electrical and Computer Engineering 26