1 / 115

Chapter 2 Primitive Data Types and Operations

Chapter 2 Primitive Data Types and Operations. 事实不可扭曲,意见大可自由 —— C.P.Scott. Objectives. To write Java programs to perform simple calculations (§2.2). To use identifiers to name variables, constants, methods, and classes (§2.3). To use variables to store data (§2.4-2.5).

lracine
Download Presentation

Chapter 2 Primitive Data Types and Operations

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 2 Primitive Data Types and Operations 事实不可扭曲,意见大可自由 —— C.P.Scott Liang, Introduction to Java Programming,revised by Dai-kaiyu

  2. Objectives • To write Java programs to perform simple calculations (§2.2). • To use identifiers to name variables, constants, methods, and classes (§2.3). • To use variables to store data (§2.4-2.5). • To program with assignment statements and assignment expressions (§2.5). • To use constants to store permanent data (§2.6). • To declare Java primitive data types: byte, short, int, long, float, double, char, and boolean (§2.7 – 2.10). • To use Java operators to write expressions (§2.7 – 2.10). • To know the rules governing operand evaluation order, operator precedence, and operator associativity (§2.11 – 2.12). • To represent a string using the String type. (§2.13) • To obtain input using the JOptionPane input dialog boxes (§2.14). • To obtain input from console (§2.16 Optional). • To format output using JDK 1.5 printf (§2.17). • To become familiar with Java documentation, programming style, and naming conventions (§2.18). • To distinguish syntax errors, runtime errors, and logic errors (§2.19). • To debug logic errors (§2.20). Liang, Introduction to Java Programming,revised by Dai-kaiyu

  3. Introducing Programming with an Example Example 2.1 Computing the Area of a Circle Program = Algorithm + Data structure ComputeArea Run Liang, Introduction to Java Programming,revised by Dai-kaiyu

  4. Trace a Program Execution allocate memory for radius public class ComputeArea { /** Main method */ public static void main(String[] args) { double radius; double area; // Assign a radius radius = 20; // Compute area area = radius * radius * 3.14159; // Display results System.out.println("The area for the circle of radius " + radius + " is " + area); } } radius no value Liang, Introduction to Java Programming,revised by Dai-kaiyu

  5. Trace a Program Execution memory public class ComputeArea { /** Main method */ public static void main(String[] args) { double radius; double area; // Assign a radius radius = 20; // Compute area area = radius * radius * 3.14159; // Display results System.out.println("The area for the circle of radius " + radius + " is " + area); } } radius novalue area no value allocate memory for area Liang, Introduction to Java Programming,revised by Dai-kaiyu

  6. Trace a Program Execution assign 20 to radius public class ComputeArea { /** Main method */ public static void main(String[] args) { double radius; double area; // Assign a radius radius = 20; // Compute area area = radius * radius * 3.14159; // Display results System.out.println("The area for the circle of radius " + radius + " is " + area); } } radius 20 area no value Liang, Introduction to Java Programming,revised by Dai-kaiyu

  7. Trace a Program Execution memory public class ComputeArea { /** Main method */ public static void main(String[] args) { double radius; double area; // Assign a radius radius = 20; // Compute area area = radius * radius * 3.14159; // Display results System.out.println("The area for the circle of radius " + radius + " is " + area); } } radius 20 area 1256.636 compute area and assign it to variable area Liang, Introduction to Java Programming,revised by Dai-kaiyu

  8. Trace a Program Execution memory public class ComputeArea { /** Main method */ public static void main(String[] args) { double radius; double area; // Assign a radius radius = 20; // Compute area area = radius * radius * 3.14159; // Display results System.out.println("The area for the circle of radius " + radius + " is " + area); } } radius 20 area 1256.636 print a message to the console A string constant should not cross lines Liang, Introduction to Java Programming,revised by Dai-kaiyu

  9. Identifiers • An identifier is a sequence of characters that consist of letters, digits, underscores (_), and dollar signs ($). • An identifier must start with a letter, an underscore (_), or a dollar sign ($). It cannot start with a digit. • An identifier cannot be a reserved word. • An identifier can be of any length. • Are used for naming variables, constants, methods, classes, and packages Liang, Introduction to Java Programming,revised by Dai-kaiyu

  10. Liang, Introduction to Java Programming,revised by Dai-kaiyu

  11. Memory Concepts • Variables • Every variable has a name, a type, a size and a value • Name corresponds to location in memory • When new value is placed into a variable, replaces (and destroys) previous value • Reading variables from memory does not change them Liang, Introduction to Java Programming,revised by Dai-kaiyu

  12. number1 number1 1 1 number2 number2 2 2 sum 0 sum 3 2.6 Memory Concepts • Visual Representation • Sum = 0; number1 = 1; number2 = 2; • Sum = number1 + number2; after execution of statement Liang, Introduction to Java Programming,revised by Dai-kaiyu

  13. Variables Used to store data in a program // Compute the first area radius = 1.0; area = radius * radius * 3.14159; System.out.println("The area is " + area + " for radius "+radius); // Compute the second area radius = 2.0; area = radius * radius * 3.14159; System.out.println("The area is “ + area + " for radius "+radius); Liang, Introduction to Java Programming,revised by Dai-kaiyu

  14. Declaring Variables Giving the name and the data type of variables int x; // Declare x to be an // integer variable; double radius; // Declare radius to // be a double variable; char a; // Declare a to be a // character variable; Liang, Introduction to Java Programming,revised by Dai-kaiyu

  15. Java data types • Data type is the classification of forms of information • Data type is declared using keywords • Java is strongly typed Liang, Introduction to Java Programming,revised by Dai-kaiyu

  16. Assignment Statements • Give a value to the declared variable x = 1; // Assign 1 to x; radius = 1.0; // Assign 1.0 to radius; a = 'A'; // Assign 'A' to a; Liang, Introduction to Java Programming,revised by Dai-kaiyu

  17. Assignment Expressions Expression: a computation involving values, variables, and operators that evaluates to a value. X = 5 * ( 3 / 2 ) + 3 * 2; Assignment expressions: i = j = k = 1; Liang, Introduction to Java Programming,revised by Dai-kaiyu

  18. Declaring and Initializingin One Step • int x = 1; • double d = 1.4; • float f = 1.4; Is this statement correct? A variable in method must be assigned a value before it can be used Liang, Introduction to Java Programming,revised by Dai-kaiyu

  19. Constants final double PI = 3.14159; final int SIZE = 3; final datatype CONSTANTNAME = VALUE; Liang, Introduction to Java Programming,revised by Dai-kaiyu

  20. Numerical Data Types byte 8 bits short 16 bits int 32 bits long 64 bits float 32 bits double 64 bits Liang, Introduction to Java Programming,revised by Dai-kaiyu

  21. Operators +, -, *, /, and % 5 / 2 yields an integer 2. 5.0 / 2 yields a double value 2.5 5 % 2 yields 1 (the remainder of the division) Liang, Introduction to Java Programming,revised by Dai-kaiyu

  22. Remainder Operator • determine whether a number is even or odd using %. • Suppose you know January 1, 2005 is Saturday, you can find that the day for February 1, 2005 is Tuesday using the following expression: Liang, Introduction to Java Programming,revised by Dai-kaiyu

  23. NOTE • Calculations involving floating-point numbers are approximated because these numbers are not stored with complete accuracy. • Integers are stored precisely. Therefore, calculations with integers yield a precise integer result. Show case FloatIsNotPrecise.java Liang, Introduction to Java Programming,revised by Dai-kaiyu

  24. Number Literals A literal is a constant value that appears directly in the program. For example, 34, 1,000,000, and 5.0 are literals in the following statements:  int i = 34; long x = 1000000; double d = 5.0; byte b = 1000 A compilation error would occur if the literal were too large for the variable to hold. Wrong Liang, Introduction to Java Programming,revised by Dai-kaiyu

  25. Number Literals • An integer literal is assumed to be of the int type, whose value is between -231 (-2147483648) to 231–1 (2147483647). To denote an integer literal of the long type, append it with the letter L or l. long j = 10; Is this statement correct? • By default, a floating-point literal is treated as a double type value. You can make a number a float by appending the letter f or F, and make a number a double by appending the letter d or D. • Floating-point literals can also be specified in scientific notation, for example, 1.23456e+2 correct Liang, Introduction to Java Programming,revised by Dai-kaiyu

  26. Arithmetic Expressions is translated to (3+4*x)/5 – 10*(y-5)*(a+b+c)/x + 9*(4/x + (9+x)/y) Liang, Introduction to Java Programming,revised by Dai-kaiyu

  27. Shortcut Assignment Operators Operator Example Equivalent +=i+=8i = i+8 -=f-=8.0f = f-8.0 *=i*=8i = i*8 /=i/=8i = i/8 %=i%=8i = i%8 Liang, Introduction to Java Programming,revised by Dai-kaiyu

  28. Increment andDecrement Operators Operator Name Description ++var preincrement The expression (++var) increments var by 1 and evaluates to the new value in varafter the increment. var++ postincrement The expression (var++) evaluates to the original value in var and increments var by 1. --var predecrement The expression (--var) decrements var by 1 and evaluates to the new value in varafter the decrement. var-- postdecrement The expression (var--) evaluates to the original value in var and decrements var by 1. Liang, Introduction to Java Programming,revised by Dai-kaiyu

  29. Increment andDecrement Operators, cont. Liang, Introduction to Java Programming,revised by Dai-kaiyu

  30. 补充了解 Assignment Expressions and Assignment Statements Prior to Java 2, all the expressions can be used as statements. Since Java 2, only the following types of expressions can be statements: variable op= expression; // Where op is +, -, *, /, or % ++variable; variable++; --variable; variable--; Liang, Introduction to Java Programming,revised by Dai-kaiyu

  31. Numeric Type Conversion Consider the following statements: long k = i * 3 + 4; double d = i * 3.1 + k / 2; Liang, Introduction to Java Programming,revised by Dai-kaiyu

  32. Conversion Rules When performing a binary operation involving two operands of different types, Java automatically converts the operand based on the following rules: 1.    If one of the operands is double, the other is converted into double. 2.    Otherwise, if one of the operands is float, the other is converted into float. 3.    Otherwise, if one of the operands is long, the other is converted into long. 4.    Otherwise, both operands are converted into int. Liang, Introduction to Java Programming,revised by Dai-kaiyu

  33. Conversion Rules Liang, Introduction to Java Programming,revised by Dai-kaiyu

  34. Type Casting Implicit casting double d = 3; (type widening) Explicit casting int i = (int)3.0; (type narrowing) int i = (int)3.9; (Fraction part is truncated) What is wrong? int x = 5 / 2.0; Liang, Introduction to Java Programming,revised by Dai-kaiyu

  35. Type Casting • For a variable of type int , explicit casting must be used int i = 1; byte b = i ; • For a literal of type integer, if in the persission range of short or byte. Explicit casting is not needed byte i = 1; wrong Liang, Introduction to Java Programming,revised by Dai-kaiyu

  36. Character Data Type Four hexadecimal digits. char letter = 'A'; (ASCII) char numChar = '4'; (ASCII) char letter = '\u0041'; (Unicode) char numChar = '\u0034'; (Unicode) NOTE: The increment and decrement operators can also be used on char variables to get the next or preceding Unicode character. the following statements display character b. char ch = 'a'; System.out.println(++ch); Liang, Introduction to Java Programming,revised by Dai-kaiyu

  37. Unicode Format • Encoding: convert a character to its binary representation • Java characters use Unicode, a 16-bit encoding scheme • Unicode can represent 65,536 characters • Unicode takes two bytes, preceded by \u, expressed in four hexadecimal numbers that run from '\u0000' to '\uFFFF'. So, Unicode can represent 65535 + 1 characters. Unicode \u03b1 \u03b2 \u03b3 for three Greek letters Liang, Introduction to Java Programming,revised by Dai-kaiyu

  38. Escape Sequences for Special Characters Description Escape Sequence Unicode Backspace \b\u0008 Tab \t\u0009 Linefeed \n\u000A Carriage return \r\u000D Backslash \\\u005C Single Quote \'\u0027 Double Quote \"\u0022 Show case Welcome4.java Liang, Introduction to Java Programming,revised by Dai-kaiyu

  39. Appendix B: ASCII Character Set ASCII is a 7-bits encoding scheme ASCII Character Set is a subset of the Unicode from \u0000 to \u007f Liang, Introduction to Java Programming,revised by Dai-kaiyu

  40. ASCII Character Set, cont. ASCII Character Set is a subset of the Unicode from \u0000 to \u007f Liang, Introduction to Java Programming,revised by Dai-kaiyu

  41. Casting between char and Numeric Types int i = 'a'; // Same as int i = (int)'a'; char c = 97; // Same as char c = (char)97; char letter = ‘A’; System.out.println( letter+10); System.out.println((char)(letter+10)); Integerchar :lower sixteen bits are used Floating-pointchar :first cast into an int Char numeric type : Unicode is used Liang, Introduction to Java Programming,revised by Dai-kaiyu

  42. The boolean Type and Operators six comparison operators (relational operators) The result of the comparison is a Boolean value: true or false(can’t using 1 or 0). boolean b = (1 > 2); Operator Name < less than <= less than or equal to > greater than >= greater than or equal to == equal to != not equal to Liang, Introduction to Java Programming,revised by Dai-kaiyu

  43. Boolean Operators Also called logic operators Operator Name ! not && and || or ^ exclusive or Liang, Introduction to Java Programming,revised by Dai-kaiyu

  44. Truth Table for Operator ! Liang, Introduction to Java Programming,revised by Dai-kaiyu

  45. Truth Table for Operator && Liang, Introduction to Java Programming,revised by Dai-kaiyu

  46. Truth Table for Operator || Liang, Introduction to Java Programming,revised by Dai-kaiyu

  47. Truth Table for Operator ^ One of p1 and p2 is true, but not both Liang, Introduction to Java Programming,revised by Dai-kaiyu

  48. Examples System.out.println("Is " + num + " divisible by 2 and 3? " + ((num % 2 == 0) && (num % 3 == 0))); System.out.println("Is " + num + " divisible by 2 or 3? " + ((num % 2 == 0) || (num % 3 == 0))); System.out.println("Is " + num + " divisible by 2 or 3, but not both? " + ((num % 2 == 0) ^ (num % 3 == 0))); Liang, Introduction to Java Programming,revised by Dai-kaiyu

  49. Leap Year? A year is a leap year if it is divisible by 4 but not by 100 or if it is divisible by 400. boolean isLeapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0); Liang, Introduction to Java Programming,revised by Dai-kaiyu

  50. The & and | Operators &&: conditional AND operator (shortcut) &: unconditional AND operator ||: conditional OR operator (shortcut) |: unconditional OR operator exp1 && exp2 (1 < x) && (x < 100) (1 < x) & (x < 100) Liang, Introduction to Java Programming,revised by Dai-kaiyu

More Related