370 likes | 380 Views
Learn about integer and floating-point numbers, limitations of data types, arithmetic expressions, string manipulation, and constants in Java.
E N D
Chapter 3 Fundamental Data Types
Chapter Goals • To understand integer and floating-point numbers • To recognize the limitations of the int and double types and the overflow and round off errors that can result • To write arithmetic expressions in Java • To use the String type to define and manipulate character strings • To learn about the char data type • To learn how to read program input • To understand the copy behavior of primitive types and object references
Purse Class Interface public class Purse {public void addNickels(int count) . . .public void addDimes(int count) . . .public void addQuarters(int count) . . .public double getTotal(int count) . . .. . . }
Number types • int: integers, no fractional part1, -4, 0 • double: floating-point numbers (double precision)0.5, -3.11111, 4.3E24, 1E-14
Implementing the getTotal Method • public class Purse{ public double getTotal(){ return nickels * 0.05 + dimes * 0.1 + quarters * 0.25; } private int nickels; private int dimes; private int quarters;}* = multiplication
Assignment operator public Purse() { nickels = 0; dimes = 0; quarters = 0; } public void addNickels(int count) { nickels = nickels + count; }
Increment/Decrement nickels++ is the same as nickels = nickels + 1 nickels-- decrements the contents of the variable.
Constants public double getTotal() {final double NICKEL_VALUE = 0.05;final double DIME_VALUE = 0.1;final double QUARTER_VALUE = 0.25;return nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; }
Class Constants public class Purse{ . . .public double getTotal(){return nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; }private static final double NICKEL_VALUE = 0.05;private static final double DIME_VALUE = 0.1;private static final double QUARTER_VALUE = 0.25;. . . }In methods of other classes, the constant isPurse.DIME_VALUE
Syntax 3.1: Constant Definition Example:Purpose: In a method: final typeName variableName= expression ; In a class: accessSpecifier static final typeName variableName = expression; Example: final double NICKEL_VALUE =0.05; public static final double LITERS_PER_GALLON =3.785; Purpose: To define a constant of a particular type
File Purse.java 1/** 2 A purse computes the total value of a collection of coins. 3*/ 4public class Purse 5{ 6 /** 7 Constructs an empty purse. 8 */ 9 public Purse() 10 { 11 nickels = 0; 12 dimes = 0; 13 quarters = 0; 14 } 15 …Continue
16 /** 17 Add nickels to the purse. 18 @param count the number of nickels to add 19 */ 20 public void addNickels(int count) 21 { 22 nickels = nickels + count; 23 } 2425 /** 26 Add dimes to the purse. 27 @param count the number of dimes to add 28 */ Continue…
29 public void addDimes(int count) 30 { 31 dimes = dimes + count; 32 } 3334 /** 35 Add quarters to the purse. 36 @param count the number of quarters to add 37 */ 38 public void addQuarters(int count) 39 { 40 quarters = quarters + count; 41 } 42 …Continue
43 /** 44 Get the total value of the coins in the purse. 45 @return the sum of all coin values 46 */ 47 public double getTotal() 48 { 49 return nickels * NICKEL_VALUE 50 + dimes * DIME_VALUE + quarters * QUARTE R_VALUE; 51 } 52 …Continue
53 private static final double NICKEL_VALUE = 0.05;53 private static final double NICKEL_VALUE = 0.05; 54 private static final double DIME_VALUE = 0.1; 55 private static final double QUARTER_VALUE = 0.25; 56 57 private int nickels; 58 private int dimes; 59 private int quarters; 60} 61
File PurseTest.java 1/** 2 This program tests the Purse class. 3*/ 4public class PurseTest 5{ 6 public static void main(String[] args) 7 { 8 Purse myPurse = new Purse(); 9 10 myPurse.addNickels(3); 11 myPurse.addDimes(1); …Continue
12 myPurse.addQuarters(2); 13 14 double totalValue = myPurse.getTotal(); 15 System.out.print("The total is "); 16 System.out.println(totalValue); 17 } 18}
Division and Remainder • / is the division operator • If both arguments are integers, the result is an integer. The remainder is discarded • 7.0 / 4 = 1.757 / 4 = 1 • Get the remainder with % (pronounced "modulo")7 % 4 = 3
Syntax 3.2: Static Method Call ClassName. methodName ( Tparameters) Example: Math.sqrt(4) Purpose: To invoke a static method (a method that doesn't operate on an object) and supply its parameters.
Type Conversion • In assignment, types must match.double total = "a lot"; // no • Use “cast” (int) to convert floating-point values to integer values:int pennies = (int)(total * 100);Cast discards fractional part. • Use Math.round for rounding:int dollar = (int)Math.round(total);
Syntax 3.3 : Cast (typeName)expression Example: (int)(x + 0.5)(int)Math.round(100 * f) Purpose: To convert an expression to a different type
Strings • String constants: "Carl" • String variables:String name = "Carl"; • String length:int n = name.length();
Concatenation • String fname = "Harry";String lname = "Hacker";String name = fname + lname; • name is "HarryHacker" • If one operand of + is a string, the other is converted to a string:String a = "Agent";String name = a + 7; • name is "Agent7"
Converting between Strings and Numbers • Convert to number:int n = Integer.parseInt(str);double x = Double.parseDouble(x); • Convert to string:String str = "" + n;str = Integer.toString(n);
Substrings • String greeting = "Clown";String sub = greeting.substring(1, 4); • Supply start and “past the end” position • First position is at 00C1l2o3w4 n • substring length = “past the end” - start
Reading Input • String input = JOptionPane.showInputDialog(prompt) • Convert strings to numbers if necessary:int count = Integer.parseInt(input); • Conversion throws an exception if user doesn't supply a number--see chapter 15 • AddSystem.exit(0)to the main method of any program that uses JOptionPane
File InputTest.java 1import javax.swing.JOptionPane; 2 3/** 4 This program tests input from an input dialog. 5*/ 6public class InputTest 7{ 8 public static void main(String[] args) 9 { 10 Purse myPurse = new Purse(); …Continue
11 12 String input = JOptionPane.showInputDialog("How many nickels do you have?"); 13 int count = Integer.parseInt(input); 14 myPurse.addNickels(count); 15 16 input = JOptionPane.showInputDialog("How many dimes do you have?"); 17 count = Integer.parseInt(input); 18 myPurse.addDimes(count); 19 20 input = JOptionPane.showInputDialog("How many quarters do you have?"); …Continue
21 count = Integer.parseInt(input); 22 myPurse.addQuarters(count); 23 24 double totalValue = myPurse.getTotal(); 25 System.out.println("The total is " + totalValue); 26 27 System.exit(0); 28 } 29}
Characters • char: character type—a single Unicode character • Character constants use single quotes: 'A', '\n', '\u00E9' • 'A'is not the same as "A" • charAt method gets character from a string"Hello".charAt(0) is 'H'
Copying Numbers • double balance1 = 1000;double balance2 = balance1;balance2 = balance2 + 500; • Change in balance2 does not affect balance1
Copying Object References • BankAccount account1 = new BankAccount(1000);BankAccount account2 = account1;account2.deposit(500); • Change through account2 is also visible through account1 • Object variables hold references, not objects