Upload
allan-randall
View
228
Download
0
Embed Size (px)
Citation preview
Collabedit
• www.collabedit.com• Collabedit is an online code editor that lets
people collaborate in real-time. • It works in your web browser so no
installation is needed.
Variables• In Java, every variable has a type. • You declare a variable by placing the type first, followed by
the name of the variable. Here are some examples:– double salary;– int vacationDays;– long earthPopulation;– boolean done;
• Notice the semicolon at the end of each declaration. The semicolon is necessary because a declaration is a complete Java statement.
• A variable name must begin with a letter and must be a sequence of letters or digits.
Initializing Variables
• Variables are intialized using “=“• ‘Variable name’ = ‘value’• For example:– int vacationDays;– vacationDays = 12;
• You can both declare and initialize a variable on the same line. For example:– int vacationDays = 12;
Constants
• the keyword final to denote a constant• you can assign to the variable once, and then
its value is set once and for all. – It is customary to name constants in all uppercase.
• A class variable is any field declared with the static modifier– this tells the compiler that there is exactly one
copy of this variable in existenc
Constants Examplepublic class Constants2
{
public static void main(String[] args)
{
double paperWidth = 8.5;
double paperHeight = 11;
System.out.println("Paper size in centimeters: ” + paperWidth * CM_PER_INCH + "
by " + paperHeight * CM_PER_INCH);
}
public static final double CM_PER_INCH = 2.54;
}
Operators
• Operators are used for:–Arithmetic math (+, -, *, /, ++, --, %)–Relational operators (==,>, <=, &&)–Bitwise math (|, &, >>, <<)
• One issue of which a programmer must be aware is conversion or casting
Arithmetic Operators
• Basic arithmetic– a+b return the sum of a and b– a-b return the difference of a and b– a*b return the product of a and b– a/b return the quotient of and b– a%b return the remainder of a/b (modulus)
• If both operands are integer types, the result is an integer
• If either or both operands are floating-point types, the result is a float
Arithmetic Operators
• Basic arithmetic– a+=b sets a equal to the sum of a and b– a-=b sets a equal to the difference of a and b– a*=b sets a equal to the product of a and b– a/=b sets a equal to the quotient of and b– a%=b sets a equal to the remainder of a/b
• For any operator @: a@=b is equivalent to a=a@b
Arithmetic Expressions
• Dividing any integer type by 0 will raise an exception– Covered later in the course– For now, avoid dividing by 0!
• Dividing any floating-point by 0 sets the result to a special value indicating infinity or NaN (Not a Number)– Does not raise an exception
Increment and Decrement
• Post-Post increment and decrement– a++ or mynum++ is like a+=1 or mynum+=1– b-- or students-- is like b-=1 or students-=1
• If used in an expression, a post-increment or decrement evaluates to the value of the variable before the post-inc or dec
• For example, the following code prints “3”int b,a=3;b = a++;System.out.printf(“%d”,b);
Increment and Decrement Cont’• Pre-increment and decrement• ++mynum is also like mynum+=1• --students is also like students-=1• However, pre-increment and pre-decrement
return the value of the variable after the operation
• For example, the code below returns “4”int b,a=3;b = ++a;System.out.printf(“%d”,b);
Relational Operators• Always return the boolean true or false values– a==b returns true only if a and b are equal– a!=b returns true when a and b are not equal– a<b returns true if a is less than b, false otherwise– a>b returns true is a is greater than b, false otherwise– a<=b returns true if a is less than or equal to b– a>=b returns true if a is greater than or equal to b– !(expr) returns true if expr is false, of false if expr is true
• Short-circuit operators– a && b returns true only if both a and b are true– a || b returns true if either a or b is true, false otherwise
Ternary Operator• Takes the form of expr?val1:val2• If expr is true, val1 is returned• If expr is false, val2 is returned• Example:
double qdouble r;r = 2.5;r *= 5.4/9.1;q = (r>1.5)?3.5:2.5;
• If r>1.5, q =3.5, otherwise, q=2.5
Bitwise Operators
• Generally used on integer types– a|b performs a bitwise OR
• If a bit in either a or b is 1, the corresponding output bit is 1
– a&b performs a bitwise AND• If a bit in both a and b is 1, the output bit is 1, otherwise 0
– a^b performs a bitwise XOR• If one bit is 1 and one 0, the output bit is 1, otherwise 0
– ~a negates each bit• 0111 becomes 1000
Bitwise Shift Operators• a<<n shifts each bit in a n places to the left – eg, 1<<3 shifts each bit 3 places left– Also equivalent to multiplying a by 2^n– Bits added at right are always 0
• a>>n shifts each bit in a n places to the right, sign extending it– If the leftmost bit was 1, bits added are 1– If the bit was 0, bits added are 0
• a>>>n is the same as a>>n, except bits added are always 0– Equivalent to dividing a by 2^n
Simple Math Methods• Math.sqrt(a); returns square root of a• Math.pow(a,n); raises a to the nth power• Trig functions
– Math.sin(a); – Math.cos(a);– Math.tan(a);– Math.atan(a); – Math.atan2(a);
• Exponential function and inverse– Math.exp(a); returns e^a– Math.log(a); returns the log base e of a
• Simply add: import static java.lang.Math.*
Type Casting• Force conversion from one type to another when necessary• Information may be lost• Up to the programmer to determine whether loss of precision is
acceptable• short x = 5, y = 12; The following assignment statement will produce a
compilation error, because the arithmetic expression on the right-hand side of the assignment operator evaluates to int by default.
• short z = x + y; // Error: no conversion from int to short To fix this problem, use a cast:
• short z = (short)(x + y); // OK• : explicit conversion It is possible though to use the following statements,
where the destination variable has the same storage size or a larger storage size:
• int m = x + y; long n = x + y;
String API
• All strings are instances of class String• String greeting = “hello”;• String code_block = “for(x=0;x<2;x++) i*=2;”;• Strings are immutable• Strings can be changed with substrings and
concatenation (discussed momentarily)
String API cont’
• Fetch character at location:– greeting.charAt(0); //’H’– greeting.charAt(4); //’o’
• First character is at position 0, not 1• Retrieve substring:– greeting.substring(1,3); //”el”– First parameter is first character of string to copy
• Second parameter is first char NOT to copy
String API cont’
• Concatenation• Uses (overloads) the + operator• Changing “hello” to “help”:– greeting = greeting.substring(0,3)+”p”;
• Note: use of substring and concatenation• Comparing Strings– greeting.equals(“help”) returns false– greeting.equalsIgnoreCase(“HeLLo”) returns true
• Textbook shows full set of String methods
Reading Input• import java.util.*;– Is required at the beginning of your programs to read
input• To read console input, you first construct a
Scanner that is attached to System.in:Scanner in = new Scanner(System.in);• You can use the various methods of the Scanner class to
read input. – For example, the nextLine method reads a line of input.
System.out.print("What is your name? ");String name = in.nextLine();
Reading Input Cont’
• String firstName = in.next();– Reads a single word delimited by whitespace
System.out.print("How old are you? ");
int age = in.nextInt();
– Read an single integer
• Similarly, the nextDouble method reads the next floating-point number.
Reading Input Cont’
• boolean hasNext()– tests whether there is another word in the input.
• boolean hasNextInt()• boolean hasNextDouble()– tests whether the next character sequence
represents an integer or floating-point number.
Output
• Output to the console: writing text
System.out.println(“This is on its own line”);
System.out.print(“The next output will be here->”);
System.out.printf(“%d %.2f”,3,0.251);
This is on its own line
This next output will be here->3 0.25
Formatting Output
• You can print a number x to the console with the statement System.out.print(x).– will print x with the maximum number of non-zero
digits for that type. For example,double x = 10000.0 / 3.0;
System.out.print(x);
prints3333.3333333333335
Formatting Output Cont’
• System.out.printf("%8.2f", x);• prints x with a field width of 8 characters and
a precision of 2 characters. That is, the printout contains a leading space and the seven characters
• 3333.33• You can supply multiple parameters to printf.
For example:• System.out.printf("Hello, %s. Next year, you'll be %d", name, age);
Input and Output• Input: reading text
– Uses the class Scanner– The type to be read must be specified
• Example:Scanner in = new Scanner(System.in);System.out.print("name: ");String name = in.nextLine();System.out.print("age: ");int age = in.nextInt();System.out.println("You are"+name+” and youare "+age+” years old");
File Input and Output
• To read from a file, construct a Scanner object from a File object, like this:
Scanner in = new Scanner(new File("myfile.txt"));
• If the file name contains backslashes, remember to escape each of them with an additional backslash: "c:\\mydirectory\\myfile.txt".
• Now you can read from the file, using any of the Scanner methods that we already described.
File Output
• To write to a file, construct a PrintWriter object. In the constructor, simply supply the file name:
• PrintWriter out = new PrintWriter("myfile.txt");
• If the file does not exist, it is created. You can simply use the print, println, and printf commands as you did when printing to System.out.
Control Flow
• Block Scope–A block or compound statement is any
number of simple Java statements that are surrounded by a pair of braces.–Blocks define the scope of your variables.– Blocks can be nested inside another block.
Conditional Statementsif (condition) statement
• The condition must be surrounded by parentheses.
• In Java, as in most programming languages, you will often want to execute multiple statements when a single condition is true. {statement1statement2. . .}
If/else
•if (condition) statement1 else statement2•For example:if (yourSales >= target){
performance = "Satisfactory";bonus = 100 + 0.01 * (yourSales - target);
}else{
performance = "Unsatisfactory";bonus = 0;
}
Multi-Conditional Statementif (yourSales >= 2 * target){performance = "Excellent";bonus = 1000;}else if (yourSales >= 1.5 * target){performance = "Fine";bonus = 500;}else if (yourSales >= target){performance = "Satisfactory";bonus = 100;}else{System.out.println("You're fired");}
While Loops• The while loop executes a statement (which may be a
block statement) while a condition is true. • The general form is
while (condition) statementwhile (balance < goal){balance += payment;double interest = balance * interestRate / 100;balance += interest;years++;}System.out.println(years + " years.");
Loops cont’
• In a “while loop” there is a chance that the code in the block is never executed.
• To ensure code is executed at least once use “do while” loopdo statement while (condition);
• This loop executes the statement (which is typically a block) and only then tests the condition.
Do While Loopdo{balance += payment;double interest = balance * interestRate / 100;balance += interest;year++;// print current balance. . .// ask if ready to retire and get input. . .}while (input.equals("N"));
Determinate Loops
• Use a “for loop” when you want loop an exact number of times with a counter
• First you initialize a counter variable• Then set the check condition of the counter
variable• Then modify the value of the counter variable
For Loop odds and ends
• When you declare a variable in the first slot of the for statement, the scope of that variable extends until the end of the body of the for loop.
• if you define a variable inside a for statement, you cannot use the value of that variable outside the loop.
• However you can define variables with the same name in separate for loops
• You can write a while loop using the same contents as a for loop
Switch Statement• Behaves the same as multi-
conditional if/else statement• Execution starts at the case
label that matches the value on which the selection is performed and continues until the next break or the end of the switch.
• If none of the case labels match, then the default clause is executed, if it is present.
Scanner in = new Scanner(System.in);System.out.print("Select an option (1, 2, 3, 4) ");int choice = in.nextInt();switch (choice){
case 1:. . .break;case 2:. . .break;case 3:. . .break;case 4:. . .break;default:// bad input. . .break;
}
“Breaking” Control Flow
• The “break;” statement used for switch statements can also be used for loops
• Labeled break statements exit out of all loops– Set a label with a “name:”(note the colon) – Place it immediately before outermost loop– To break out of all loops have the statement
“break label;” in your code
Breaking Control Flow cont’
label:{. . .if (condition) break label; // exits block. . .}// jumps here when the break statement executes
Continue
• The continue statement transfers control to the header of the innermost enclosing loop
for (count = 1; count <= 100; count++){
System.out.print("Enter a number, -1 to quit: ");n = in.nextInt();if (n < 0) continue;sum += n; // not executed if n < 0
}
Big Numbers
• java.math package: – BigInteger and BigDecimal.
• These are classes for manipulating numbers with an arbitrarily long sequence of digits.– The BigInteger class implements arbitrary
precision integer arithmetic – BigDecimal does the same for floating-point
numbers.
Big Numbers Con’t
• Use the static valueOf method to turn an ordinary number into a big number:
BigInteger a = BigInteger.valueOf(100);
• Unfortunately, you cannot use the familiar mathematical operators such as ”+” and “*” to
BigInteger c = a.add(b); // c = a + b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); // d = c * (b + 2)
Arrays!!!
• An array is a data structure that stores a collection of values of the same type.
• You access each individual value through an integer index.– For example, if a is an array of integers, then a[i]
is the ith integer in the array
Arrays Cont’
• You use the new operator to create the array.int[] a = new int[100];private String[] toppings = new String[20];
• This statement creates an array of 100 integers. – When you create an array of numbers, all elements
are initialized with 0. – Arrays of boolean are initialized with false– Arrays of objects are initialized with null values– Declare array type[] name; or type name[];
How to access arrays
int[] a = new int[100];
for (int i = 0; i < 100; i++)
a[i] = i;
// fills the array with 0 to 99•Once an array is created you can not change its size.•Array.length() will give you number of elements in array.•For Arrays of variable size use array list object. (See Chapter 5 for more on array lists.)
For “each” loop
• you can loop through each element in an array without index values.
• for (variable : collection) { statement }• sets the given variable to each element of the
collection and then executes the statement• The collection expression must be an array or an
object of a class that implements the Iterable interface, such as ArrayListFor example,for (int element : a)System.out.println(element);
More with Arrays
• The call Arrays.toString(a) returns a string containing the array elements,
• enclosed in brackets and separated by commas, such as "[2, 3, 5, 7, 11, 13]".
• To print the array, simply call• System.out.println(Arrays.toString(a));
Initializing Arrays
• If you don’t want your array elements to be 0, false, or null you create your array object and fill at the same time
int[] smallPrimes = { 2, 3, 5, 7, 11, 13 };
Copying Arrays
• You can copy one array variable into another, but then both variables refer to the same array:
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 13;
// now smallPrimes[5] is also 13
Copying Arrays Cont’int[] luckyNumbers = smallPrimes;luckyNumbers[5] = 12; // now smallPrimes[5] is also 12int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length);
•Sort Arrays– To sort an array of numbers, you can use one of the
sort methods in the Arrays class:int[] a = new int[10];. . .Arrays.sort(a);
Command Line Parameters
• Actually you’ve already been exposed to arrays since your first programming assignment.
public static void main(String[] args)
Command Line Cont’
• To input command line parameters to your program using eclipse
• Goto Run->Run Configurations
• Command line arguments
Multidimensional Arrays
• Multidimensional arrays use more than one index to access array elements.
• “Array of arrays”• int[][] a2 = new int[10][5];
// print array in rectangular form for (int r=0; r<a2.length; r++) { for (int c=0; c<a2[r].length; c++) { System.out.print(" " + a2[r][c]); } System.out.println(""); }