ppt

advertisement
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
Download