0% found this document useful (0 votes)
13 views

Chapter 2 - Primitive Data Types

Uploaded by

Nelson Nyambudzi
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Chapter 2 - Primitive Data Types

Uploaded by

Nelson Nyambudzi
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 58

Chapter 2 – Primitive Data Types

[email protected]
Mantra:
Coding is fun!
Chapter 2 Primitive Data Types and
Operations
• Introduce Programming with an Example
• Identifiers, Variables, and Constants
• Primitive Data Types
• byte, short, int, long, float, double, char, boolean

• Expressions
• Operators, Precedence, Associativity, Operand Evaluation Order: +
+, --, *, /, %, +=, -=, *=, /=, %=, ^, &, |, +, -,
• Getting Input from Input Dialog Boxes
• Case Study
• Style and Documentation Guidelines
• Syntax Errors, Runtime Errors, and Logic Errors
Introducing Programming with an
Example
Example 2.1 Computing the Area of
a Circle
This program computes the area of
the circle.
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. (See Appendix A,
“Java Keywords,” for a list of reserved words).
• An identifier cannot be true, false, or
null.
• An identifier can be of any length.
Variables

// 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);
Declaring 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;
Assignment Statements

x = 1; // Assign 1 to x;
radius = 1.0; // Assign 1.0 to radius;
a = 'A'; // Assign 'A' to a;
Declaring and Initializing
in One Step

• int x = 1;
• double d = 1.4;
• float f = 1.4;
Is this statement correct?
Constants

final datatype CONSTANTNAME = VALUE;

final double PI = 3.14159;


final int SIZE = 3;
Numerical Data Types

byte 8 bits

short 16 bits

int 32 bits

long 64 bits

float 32 bits

double 64 bits
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)
NOTE

Calculations involving floating-point numbers are approximated


because these numbers are not stored with complete accuracy.
For example,

System.out.println(1 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);

displays 0.5000000000000001, not 0.5, and

System.out.println(1.0 - 0.9);

displays 0.09999999999999998, not 0.1. Integers are stored


precisely. Therefore, calculations with integers yield a
precise integer result.
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 l = 1000000;

double d = 5.0;
Integer Literals
An integer literal can be assigned to an integer
variable as long as it can fit into the variable. A
compilation error would occur if the literal were
too large for the variable to hold. For example,
the statement byte b = 1000 would cause a
compilation error, because 1000 cannot be stored in
a variable of the byte type.

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. L is
preferred because l (lowercase L) can easily be
confused with 1 (the digit one).
Floating-Point Literals

Floating-point literals are written


with a decimal point. By default, a
floating-point literal is treated as a
double type value. For example, 5.0 is
considered a double value, not a float
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. For example, you
can use 100.2f or 100.2F for a float
number, and 100.2d or 100.2D for a
double number.
Scientific Notation

Floating-point literals can also be


specified in scientific notation, for
example, 1.23456e+2, same as
1.23456e2, is equivalent to 123.456,
and 1.23456e-2 is equivalent to
0.0123456. E (or e) represents an
exponent and it can be either in
lowercase or uppercase.
Arithmetic Expressions

3  4 x 10( y  5)( a  b  c ) 4 9x


  9(  )
5 x x y

is translated to

(3+4*x)/5 – 10*(y-5)*(a+b+c)/x +
9*(4/x + (9+x)/y)
Shortcut Assignment Operators

Operator Example Equivalent


+= i+=8 i = i+8
-= f-=8.0 f = f-8.0
*= i*=8 i = i*8
/= i/=8 i = i/8
%= i%=8 i = i%8
Increment and
Decrement Operators

suffix
x++; // Same as x = x + 1;
prefix
++x; // Same as x = x + 1;
suffix
x––; // Same as x = x - 1;
prefix
––x; // Same as x = x - 1;
Increment and
Decrement Operators, cont.

int i=10; Equivalent to


int newNum = 10*i++; int newNum = 10*i;
i = i + 1;

int i=10; Equivalent to


int newNum = 10*(++i); i = i + 1;
int newNum = 10*i;
Increment and
Decrement Operators, cont.

Using increment and decrement operators


makes expressions short, but it also
makes them complex and difficult to
read. Avoid using these operators in
expressions that modify multiple
variables, or the same variable for
multiple times such as this: int k = ++i
+ i.
Numeric Type Conversion

Consider the following statements:

byte i = 100;
long k = i*3+4;
double d = i*3.1+k/2;

int x = k; //(Wrong)
long k = x; //(fine,implicit casting)
Type Casting

• double
• float
• long
• int
• short
• byte
Type Casting, cont.

Implicit casting
double d = 3; (type widening)

Explicit casting
int i = (int)3.0; (type narrowing)

What is wrong? int x = 5/2.0;


Character Data Type

char letter = 'A'; (ASCII)


char numChar = '4'; (ASCII)
char letter = '\u0041'; (Unicode)
char numChar = '\u0034'; (Unicode)

Special characters
char tab = ‘\t’;
Unicode Format

Description Escape Sequence Unicode


Backspace \b \u0008
Tab \t \u0009
Linefeed \n \u000a
Carriage return \r \u000d
The boolean Type and Operators

boolean lightsOn = true;


boolean lightsOn = false;

boolean b = (1 > 2);

• && (and) (1 < x) && (x < 100)


• || (or) (lightsOn) || (isDayTime)
• ! (not) !(isStopped)
Comparison Operators

Operator Name
< less than
<= less than or equal to
> greater than
>= greater than or equal to
== equal to
!= not equal to
Boolean Operators

Operator Name
! not
&& and
|| or
^ exclusive or
Truth Table for Operator !

Truth Table for Operator !

Operand !Operand
true false
false true
Truth Table for Operator &&

Operand1 Operand2 Operand1 && Operand2


false false false
false true false
true false false
true true true
Truth Table for Operator ||

Operand1 Operand2 Operand1 || Operand2


false false false
false true true
true false true
true true true
Truth Table for Operator ^

Operand1 Operand2 Operand1 ^ Operand2


false false false
false true true
true false true
true true false
The & and | Operators
&&: conditional AND operator
&: unconditional AND operator
||: conditional OR operator
|: unconditional OR operator

exp1 && exp2


(1 < x) && (x < 100)

(1 < x) & (x < 100)


The & and | Operators
If x is 1, what is x after this expression?
(x > 1) & (x++ < 10)

If x is 1, what is x after this expression?


(1 > x) && ( 1 > x++)

How about (1 == x) | (10 > x++)?


(1 == x) || (10 > x++)?
Operator Precedence

How to evaluate

3 + 4 * 4 > 5 * (4 + 3) - ++i
Operator Precedence
• var++, var-- • ^ (Exclusive OR)

• +, - (Unary plus and minus), + • | (Unconditional OR)


+var,--var
• && (Conditional AND) Short-circuit
• (type) Casting AND

• ! (Not) • || (Conditional OR) Short-circuit


OR
• *, /, % (Multiplication, division,
and modulus) • =, +=, -=, *=, /=, %= (Assignment
operator)
• +, - (Binary addition and
subtraction)

• <, <=, >, >= (Comparison)

• ==, !=; (Equality)

• & (Unconditional AND)


Operator Associativity
When two operators with the same precedence are
evaluated, the associativity of the operators
determines the order of evaluation. All binary
operators except assignment operators are left-
associative.
a – b + c – d is equivalent to ((a – b) + c) – d
Assignment operators are right-associative.
Therefore, the expression
a = b += c = 5 is equivalent to a = (b += (c =
5))
Operand Evaluation Order

The precedence and associativity rules specify


the order of the operators, but do not specify
the order in which the operands of a binary
operator are evaluated. Operands are evaluated
from left to right in Java.
The left-hand operand of a binary operator is
evaluated before any part of the right-hand
operand is evaluated.
Operand Evaluation Order, cont.
If no operands have side effects that change the
value of a variable, the order of operand evaluation
is irrelevant. Interesting cases arise when operands
do have a side effect. For example, x becomes 1 in
the following code, because a is evaluated to 0
before ++a is evaluated to 1.
int a = 0;
int x = a + (++a);

But x becomes 2 in the following code, because ++a is


evaluated to 1, then a is evaluated to 1.
int a = 0;
int x = ++a + a;
Getting Input from Input Dialog Boxes
String string = JOptionPane.showInputDialog(
null, “Prompt Message”, “Dialog Title”,
JOptionPane.QUESTION_MESSAGE));
where x is a string for the prompting message
and y is a string for the title of the input
dialog box.
Convertting Strings to Integers
The input returned from the input dialog box is a
string. If you enter a numeric value such as 123, it
returns “123”. To obtain the input as a number, you
have to convert a string into a number.
To convert a string into an int value, you can use the
static parseInt method in the Integer class as follows:
int intValue = Integer.parseInt(intString);
where intString is a numeric string such as “123”.
Convertting Strings to Doubles
To convert a string into a double value,
you can use the static parseDouble
method in the Double class as follows:

double doubleValue
=Double.parseDouble(doubleString);

where doubleString is a numeric string


such as “123.45”.
Example 2.2
Entering Input from Dialog Boxes

This program first prompts the


user to enter a year as an int
value and checks if it is a
leap year, it then prompts you
to enter a double value and
checks if it is positive.
A year is a leap year if it is
divisible by 4 but not by 100,
or it is divisible by 400.
Programming Style and Documentation

• Appropriate Comments
• Naming Conventions
• Proper Indentation and Spacing
Lines
• Block Styles
Appropriate Comments

Include a summary at the beginning of the program


to explain what the program does, its key features,
its supporting data structures, and any unique
techniques it uses.

Include your name, department, instruction, date, and


a brief description at the beginning of the program.
Naming Conventions

• Choose meaningful and descriptive names.


• Variables and method names:
• Use lowercase. If the name consists of several words, concatenate
all in one, use lowercase for the first word, and capitalize the first
letter of each subsequent word in the name. For example, the
variables radius and area, and the method
computeArea.
Naming Conventions, cont.

• Class names:
• Capitalize the first letter of each word in the name.
For example, the class name ComputeArea.

• Constants:
• Capitalize all letters in constants. For example, the
constant PI.
Proper Indentation and Spacing

• Indentation
• Indent two spaces.

• Spacing
• Use blank line to separate segments of the
code.
Block Styles

Use end-of-line style for braces.

Next-line public class Test


style {
public static void main(String[] args)
{
System.out.println("Block Styles");
}
}

End-of-line
style
public class Test {
public static void main(String[] args) {
System.out.println("Block Styles");
}
}
Programming Errors

• Syntax Errors
• Detected by the compiler
• Runtime Errors
• Causes the program to abort
• Logic Errors
• Produces incorrect result
Compilation Errors

public class ShowSyntaxErrors {


public static void main(String[] args) {
i = 30;
System.out.println(i+4);
}
}
Runtime Errors

public class ShowRuntimeErrors {


public static void main(String[] args) {
int i = 1 / 0;
}
}
Logic Errors
public class ShowLogicErrors {
// Determine if a number is between 1 and 100 inclusively
public static void main(String[] args) {
// Prompt the user to enter a number
String input = JOptionPane.showInputDialog(null,
"Please enter an integer:",
"ShowLogicErrors", JOptionPane.QUESTION_MESSAGE);
int number = Integer.parseInt(input);

// Display the result


System.out.println("The number is between 1 and 100, " +
"inclusively? " + ((1 < number) && (number < 100)));

System.exit(0);
}
}
Practice
Void
[modifiers] void MethodName ([type arg], [type2 arg2], [type3
arg3], …) {

// Statements

}
Function
[modifiers] return_type MethodName ([type arg], [type2 arg2],
[type3 arg3], …) {

// Statements…

// return
return xxx; //where xxx is same type as return_type
}
public static void main (String [] args) {

// Here we declare and assign at the same time


double x = 1;
double y = 1;

/* We have not declared a third variable for the sum


* rather, we are summing on the output
*/
// Implement the Write method
Write ("The sum is " + Sum (x , y) ) ;

} // End of method

// A method that accepts a String, and writes it on the console


public static void Write (String w) {
System.out.println(w);
}

public static double Sum (double x, double y){

double answer = x + y;
return answer;
}

You might also like