Chapter 3 - Fundamental data types of Java. In this chapter we will: Discuss four important data types: integers, real numbers, strings, characters; describe the process of developing and debugging a Java program.
Chapter Fundamental Data Types of Java Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition) by S.N Kamin, D Mickunas, E Reingold Chapter Preview In this chapter we will: • discuss four important data types – – – – integers real numbers strings characters • describe the process of developing and debugging a Java program Integers • Numbers without fractional parts 3, 47, -12 • Variables can be used to store integers using an assignment statement int daysInWeek; daysInWeek = 7; • In general integer variables may be used any place an integer literal can be Reading Integers import CSLib.*; Inputbox in; int i; in = newInputBox(); in.setPrompt(“Enter an integer: “); i = in.readInt(); Integer Arithmetic Operations Symbol Operation + Addition 45 + = 50 - Subtraction 657 – 57 = 600 * Multiplication 7000 * = 2100 / Division 10 / = Remainder 10 % = % Example Precedence Rules Evaluate all subexpressions in parentheses Evaluate nested parentheses from the inside out In the absence of parentheses or within parentheses a Evaluate *, /, or % before + or – b Evaluate sequences of *, /, and % operators from left to right c Evaluate sequences of + and – operators from left to right Precedence Examples • Example + 37 % / is the same as + ((37 % 8) / 5) = + ( / 5) = • Example + 37 % (8 / 5) = + 37 % = 6+0=6 Additional Integer Operators • Self-assignment temperature = temperature + 10; • Increment cent++; equivalent to cent = cent + 1; • Decrement cent ; equivalent to cent = cent - 1; Initializers • May be used to give variables initial values int x = 5; int y = 6; • Can be written more concisely int x = 5, y = 6; • Can use expressions on the right hand side int x = 5, y = x + 1; Symbolic Constants • Useful when you want a variable whose value never changes • Use the modifier final in its declaration • Example final int US_Population = 278058881; Real Numbers • Numbers with fractional parts 3.14159, 7.12, 9.0, 0.5e001, -16.3e+002 • Declared using the type double double pricePerPound = 3.99; taxRate = 0.05; shippingCost = 5.55; • The initialization part of the declaration is optional Real Arithmetic Operations Symbol Operation Example + Addition 4.50e01 + 5.30e00 = 5.03e01 - Subtraction 6.57e02 – 5.7oe01 = 6.00e02 * Multiplication 7e02 * 3.0e00 = 2.1e04 / Division 9.6e01 / 2e01 = 4.8e00 Reading Real Numbers import CSLib.*; Inputbox in; double temp; in = newInputBox(); in.setPrompt(“Enter a real number: “); temp = in.readDouble(); Strings • String is a class defined in the java.lang package • Unlike other Java classes String has literals and a defined operation • Examples String prompt = “Enter an integer:”; String t1 = “To be “, t2 = “or not to be”; out.print(t1 + t2); Out.print(“Mass is “ + x * 2.2 + “ Kg”); String Method Examples OutputBox out = new OutputBox(); String s1 = “Here is a test string”; out.println(s1.indexOf(“s”)); // prints out.println(s1.indexOf(“x”)); // prints -1 out.println(s1.length()); 22 // prints out.println(s1.substring(8,14)); // prints ‘a test’ Reading Strings import CSLib.*; Inputbox in; String input; in = newInputBox(); in.setPrompt(“Enter a real number: “); input = in.readString(); Characters • Any key you type on the keyboard generates a character which may or may not be displayed on the screen (e.g nonprinting characters) • Characters are a primitive type in Java and are not equivalent to strings • Examples char vitamin = ‘’A’, chromosome = ‘’y’, middleInitial = ‘’N’; Important Literal Characters ‘A’, … ,‘Z’ Uppercase letters ‘a’, … ,‘z’ Lowercase letters ‘0’, … , ‘9’ Digits ‘.’,’,’,’!’,’”’,etc Punctuation Marks ‘ ’ Blank ‘\n’ New line ‘\t’ Tab ‘\\’ Backslash ‘\’’ Single Right Quote Common Debugging Problems • Misleading compiler error messages – Syntax errors indicated on one-line may actually reflect an error made on an earlier line • Capitalization errors – Java is case sensitive, identifier names must use the same capitalization rules each time • Logic Errors – Program appears to run correctly, but on closer inspection the wrong output is displayed Limitations of Numeric Variables • Unlike the integers mathematics the type int is not infinitely large and it is possible to compute a value incorrectly because the value is too large to be stored in an int variable storage location • Unlike the real numbers in mathematics the type double is not dense, it is not always possible to test double expressions for equality and obtain a correct result due to rounding errors in representations Mixing Numeric Data Types • Java will automatically convert int expressions to double values without loss of information int i = 5; double x = i + 10.5; • To convert double expressions to int requires a typecasting operation and truncation will occur i = (int) (10.3 * x) • To round-up instead of truncating add 0.5 i = (int) (10.3 * x + 0.5) Mixed Mode Operations and Strings • It is important to remember that “13” and 13 are not the same • Examples out.println(“4” + “5”) // prints 45 out.println(“4” + 5) // prints 45 out.println(4 + 5) // prints Characters as Integers • It is legal to assign a char to an int variable int i = ‘a’; // assigns 97 to i • It is legal to assign an int to an char variable char c = 97; // assigns ‘a’ to c • It is possible to perform arithmetic on char variables char ch = ‘a’; ch = ch + 1; // assigns ‘b’ to ch ... parts 3, 47, -1 2 • Variables can be used to store integers using an assignment statement int daysInWeek; daysInWeek = 7; • In general integer variables may be used any place an integer literal can... It is legal to assign a char to an int variable int i = ‘a’; // assigns 97 to i • It is legal to assign an int to an char variable char c = 97; // assigns ‘a’ to c • It is possible to perform... sequences of *, /, and % operators from left to right c Evaluate sequences of + and – operators from left to right Precedence Examples • Example + 37 % / is the same as + ( (37 % 8) / 5) = +