Chapter 3 Numerical Data
Topics Variables Numeric data types Assignment Expressions
Numeric Data and Operations So far, our programs have used only String data It is common to use computers for numeric calculations We can write literal numbers into our programs - just write the number We need a way to store numeric data - variables
Variables In mathematical expressions, we often use x and y to represent unknown values and to make a placeholder for many different values –y = x A variable is used in a similar way in a program –A variables has a Java identifier for a name.
Variables In the last chapter, we declared variables whose location stored the address of an object Now we need to learn to declare variables to store numeric data. A declaration sets aside memory locations to store data values. –These memory locations are called variables, and x and y are the names we associate with the memory locations. As before, we need to say what kind of data the variable represents.
Variables A variable has three properties: –A memory location to store the value. –The type of data stored in the memory location. –The name used to refer to the memory location.
Variable Declarations The syntax for declaring variables is ; where is a sequence of identifiers separated by commas. Every variable we use in a program must be declared.
Numeric Types There are six numeric data types in Java: –We nee to be able to use two basic kinds of numbers. –We have several types for each kind of number to allow for different ranges of values. Integers have discrete values (whole numbers). –byte –short –int –long Real numbers are needed for values that have fractional parts. –float –double
Assignment First we need to declare a variable. int a; We assign a value to a variable by using an assignment statement. a = 5; At the time a variable is declared, it can also be initialized. int count = 10, height = 34; Do not confuse mathematical equality and assignment. The following is not valid Java code: = x;
Varaibles for Objects and Numbers The only difference between a variable for numbers and a variable for objects is the contents in the memory locations. –For numbers, a variable contains the numeric value itself. –For objects, a variable contains an address where the object is stored.
Memory diagram for numeric data For numeric data, the actual value is stored in the memory location associated with the variable
Object Variables For objects, the location (memory address) for the object is stored in the memory location associated with the variable
Comparison
Variables We use the new command to create an object. –Objects are called reference data types, because the contents are addresses that refer to memory locations where the objects are actually stored. Numerical data are called primitive data types. –We don't need to use new with primitive types. –You do have to give the primitive variable a value.
Assignment Numeric DataObjects
Arithmetic Expressions OperationOperatorExpressionResult Addition+x + y17 Subtraction-y - z4.5 Multiplication*x * y70 Division/y / x0.7 Modulo (remainder) %x % y3 Assume x=10, y=7, z=2.5
Division and Modulo Division works differently for integer and floating point types –for floating point types you get a floating point result (what your calculator would give you) –for integers, you get an integer result –integer division and modulo together are what you first learned when you learned division in grade school 27 divided by 6 is 4 with a remainder of 3 so 27 / 6 gives a result of 4 and 27 % 6 gives a result of 3
Evaluation order In an expression with more than one binary operator, we need rules to tell us what order to do them in –What is 5 + x * 16 / y + 5 ? Precedence rules tell us which of two different operations should get done first –What is * 3 ? Associativity rules tell us which order operations of the same type get done in –What is 16 / 2 / 2 ?
Precedence rules for arithmetic operators and parentheses OrderGroupOperatorRule firstSubexpression()innermost first left to right Unary operation+, -single operand multiplicative operators *, /, %left to right lastadditive operators +, -left to right
Evaluation of Expressions Subexpression evaluation x + 3 * y
Mixed-mode Arithmetic What happens when the operands in your expression have different types? –x = 3.45 / 2 The hardware supports only single-type operations The value of a variable has to be stored in the appropriate format. Type conversions are used to convert mixed-type expressions to single type expressions
Type Conversions Widening conversions happen automatically –promote a value from one type into another which can represent a larger range of values converting an int to a double Narrowing conversions have to be programmed explicitly –information will be lost converting a double to an int –cast operator is the name of the type of the result enclosed in parentheses –(int)2.34 –fractional part will be truncated
Rules for arithmetic promotion Unary Operators 1.byte and short operands are converted to int Binary Operators 1.If either operand has type double, the other will be converted to a double 2.Otherwise, if either operand has type float, the other will be converted to a float 3.Otherwise, if either operand has type long, the other will be converted to a long 4.Otherwise, both operands are converted to int will be converted to an int
Constants If we want a variable to remain fixed, we use a constant. A constant is declared in a manner similar to a variable, but with the additional reserved word final. final double PI = ; final int MONTHS_IN_YEAR = 12;
Literal Constants If a literal constant contains a decimal point, it is of type double by default. To designate a literal constant of type float, append a letter f or F to the number: 2 * PI * F
Scientific Notation Numbers in scientific notation, such as Number x 10 exponent are expressed in Java using the syntax E 12.40e E-102
Getting Numerical Input Values Wrapper classes are used to perform necessary type conversions, such as converting a String object to a numerical value.
Getting Numerical Input Values radiusStr = JOptionPane.showInputDialog(null, "Enter radius:"); radius = Double.parseDouble(radiusStr);
The Math Class The Math class in the java.lang package contains class methods for commonly used mathematical functions. Some methods available in the Math class: –sqrt, abs, round –sin, cos, asin, … Math has the constant Math.PI in it