Chapter2 - Primitive Data
Chapter2 - Primitive Data
Data types
• type: A category or set of data values.
– Constrains the operations that can be performed on data
– Many languages ask the programmer to specify types
2
Java's primitive types
• primitive types: 8 simple types for numbers, text, etc.
– Java also has object types, which we'll talk about later
3
Expressions
• expression: A value or operation that computes a value.
• Examples: 1 + 4 * 5
(7 + 2) * 6 / 3
42
4
Arithmetic operators
• operator: Combines multiple values or expressions.
–+ addition
–- subtraction (or negation)
–* multiplication
–/ division
–% modulus (a.k.a. remainder)
5
Integer division with /
• When we divide integers, the quotient is also an integer.
– 14 / 4 is 3, not 3.5
3 4 52
4 ) 14 10 ) 45 27 ) 1425
12 40 135
2 5 75
54
21
• More examples:
– 32 / 5 is 6
– 84 / 10 is 8
– 156 / 100 is 1
• Applications of % operator:
– Obtain last digit of a number: 230857 % 10 is 7
– Obtain last 4 digits: 658236489 % 10000 is 6489
– See whether a number is odd: 7 % 2 is 1, 42 % 2 is 0
7
Precedence
• precedence: Order in which operators are evaluated.
– Generally operators evaluate left-to-right.
1 - 2 - 3 is (1 - 2) - 3 which is -4
9
Mixing types
• When int and double are mixed, the result is a double.
– 4.2 * 3 is 12.6
12
Receipt example
What's bad about the following code?
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
System.out.println("Subtotal:");
System.out.println(38 + 40 + 30);
System.out.println("Tax:");
System.out.println((38 + 40 + 30) * .08);
System.out.println("Tip:");
System.out.println((38 + 40 + 30) * .15);
System.out.println("Total:");
System.out.println(38 + 40 + 30 +
(38 + 40 + 30) * .08 +
(38 + 40 + 30) * .15);
}
}
14
Declaration
• variable declaration: Sets aside memory for storing a value.
– Variables must be declared before they can be used.
• Syntax:
type name;
x
– int x;
15
Assignment
• assignment: Stores a value into a variable.
– The value can be an expression; the variable stores its result.
• Syntax:
name = expression;
x 3
– int x;
x = 3;
x = 4 + 7;
System.out.println("now x is " + x); // now x is 11
17
Declaration/initialization
• A variable can be declared/initialized in one statement.
• Syntax:
type name = value;
myGPA 3.95
– double myGPA = 3.95;
18
Assignment and algebra
• Assignment uses = , but it is not an algebraic equation.
19
Assignment and types
• A variable can only store a value of its own type.
– int x = 2.5; // ERROR: incompatible types
20
Compiler errors
• A variable can't be used until it is assigned a value.
– int x;
System.out.println(x); // ERROR: x has no value
– int x = 3;
int x = 5; // ERROR: x already exists
21
Printing a variable's value
• Use + to print a string and a variable's value on one line.
– double grade = (95.1 + 71.9 + 82.6) / 3.0;
System.out.println("Your grade was " + grade);
• Output:
Your grade was 83.2
There are 65 students in the course.
22
Receipt question
Improve the receipt program using variables.
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
System.out.println("Subtotal:");
System.out.println(38 + 40 + 30);
System.out.println("Tax:");
System.out.println((38 + 40 + 30) * .08);
System.out.println("Tip:");
System.out.println((38 + 40 + 30) * .15);
System.out.println("Total:");
System.out.println(38 + 40 + 30 +
(38 + 40 + 30) * .15 +
(38 + 40 + 30) * .08);
}
}
23
Receipt answer
public class Receipt {
public static void main(String[] args) {
// Calculate total owed, assuming 8% tax / 15% tip
int subtotal = 38 + 40 + 30;
double tax = subtotal * .08;
double tip = subtotal * .15;
double total = subtotal + tax + tip;
24
Text Processing
25
Type char
• char : A primitive type representing single characters.
– A String is stored internally as an array of char
26
The charAt method
• The chars in a String can be accessed using the charAt method.
– accepts an int index parameter and returns the char at that index
27
Comparing char values
• You can compare chars with ==, !=, and other operators:
String word = console.next();
char last = word.charAt(word.length() - 1);
if (last == 's') {
System.out.println(word + " is plural.");
}
28
char vs. int
• Each char is mapped to an integer value internally
– Called an ASCII value
29
char vs. String
• "h" is a String, but 'h' is a char (they are different)
– What is s + 1 ? What is c + 1 ?
– What is s + s ? What is c + c ?
30
Formatting text with printf
System.out.printf("format string", parameters);
– Example:
int x = 3;
int y = -17;
System.out.printf("x is %d and y is %d!\n", x, y);
// x is 3 and y is -17!
•printf does not drop to the next line unless you write \n 31
printf width
– %Wd integer, W characters wide, right-aligned
– %-Wd integer, W characters wide, left-aligned
– %Wf real number, W characters wide, right-aligned
– ...
Output:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
32
printf precision
– %.Df real number, rounded to D digits after decimal
– %W.Df real number, W chars wide, D digits after decimal
– %-W.Df real number, W wide (left-align), D after decimal
Output:
3
your GPA is 3.3
more precisely: 3.254
33
printf question
• Modify our Receipt program to better format its output.
– Display results in the format below, with $ and 2 digits after .
Subtotal: $70.00
Tax: $5.60
Tip: $10.50
Total: $86.10
34
printf answer (partial)
...
// Calculates total owed, assuming 8% tax and 15% tip
public static void results(double subtotal) {
double tax = subtotal * .08;
double tip = subtotal * .15;
double total = subtotal + tax + tip;
// System.out.println("Subtotal: $" + subtotal);
// System.out.println("Tax: $" + tax);
// System.out.println("Tip: $" + tip);
// System.out.println("Total: $" + total);
System.out.printf("Subtotal: $%.2f\n", subtotal);
System.out.printf("Tax: $%.2f\n", tax);
System.out.printf("Tip: $%.2f\n", tip);
System.out.printf("Total: $%.2f\n", total);
}
}
35
Comparing strings
• Relational operators such as < and == fail on objects.
Scanner console = new Scanner(System.in);
System.out.print("What is your name? ");
String name = console.next();
if (name == "Barney") {
System.out.println("I love you, you love me,");
System.out.println("We're a happy family!");
}
– This code will compile, but it will not print the song.
36
The equals method
• Objects are compared using a method named equals.
Scanner console = new Scanner(System.in);
System.out.print("What is your name? ");
String name = console.next();
if (name.equals("Barney")) {
System.out.println("I love you, you love me,");
System.out.println("We're a happy family!");
}
37
String test methods
Method Description
equals(str) whether two strings contain the same characters
equalsIgnoreCase(str) whether two strings contain the same characters,
ignoring upper vs. lower case
startsWith(str) whether one contains other's characters at start
endsWith(str) whether one contains other's characters at end
contains(str) whether the given string is found within this one
38