12/10/2022
JAVA PROGRAMMING
Week 1: Data Types and
Operators
Lecturer:
NGUYỄN Thị Minh Tuyền
Why data types are important ? 2
• Data types are especially important in Java because it is
a strongly typed language.
• This means that all operations are type-checked by the compiler
for type compatibility.
• Strong type checking helps prevent errors and enhances
reliability.
• To enable strong type checking, all variables, expressions, and
values have a type.
• The type of a value determines what operations are
allowed on it.
• An operation allowed on one type might not be allowed on
another.
Java Programming
1
12/10/2022
Java’s primitive types 3
• Two general categories of built-in data types:
• object-oriented and
• non object-oriented.
Java Programming
Java’s Built-in Primitive Data Types 4
Java Programming
2
12/10/2022
Integers 5
Java Programming
Example 6
/* Compute the number of cubic inches
* in 1 cubic mile. 1 mile = 63360 inches
*/
public class Inches {
public static void main(String[] args) {
long ci;
long im;
im = 63360;
ci = im * im * im;
System.out.println("There are " + ci
+ " cubic inches in cubic mile.");
}
}
Java Programming
3
12/10/2022
Floating-Point Types 7
• The floating-point types can represent numbers that have
fractional components.
• Two floating-point types:
• float (32 bits) and double (64 bits).
• double is the most commonly used, and many of the
math functions in Java’s class library use double values.
Java Programming
Example 8
/* Use the Pythagorean theorem to
* find the length of the hypotenuse
* given the lengths of the two opposing sides.
*/
public class Hypot {
public static void main(String[] args) {
double x, y, z;
x = 3;
y = 4;
z = Math.sqrt(x*x + y*y);
System.out.println("Hypotenuse is " + z);
}
}
Java Programming
4
12/10/2022
Characters 9
• Java uses Unicode.
• Unicode defines a character set that can represent all of
the characters found in all human languages.
• char is an unsigned 16-bit type having a range of 0 to
65,535.
• The standard 8-bit ASCII character set is a subset of
Unicode and ranges from 0 to 127.
à The ASCII characters are still valid Java characters.
• Example:
char ch;
ch = 'X';
System.out.println("This is ch:" + ch);
Java Programming
Why does Java use Unicode? 10
Java Programming
10
5
12/10/2022
Example 11
// Character variables can be handled like integers.
public class CharArithDemo {
public static void main(String[] args) {
char ch;
ch = 'X';
System.out.println("ch contains " + ch);
ch++; // increment ch
System.out.println("ch is now " + ch);
ch = 90; // give ch the value Z
System.out.println("ch is now " + ch);
}
}
Java Programming
11
Boolean type 12
• The Boolean type represents true/false values.
• Example:
Java Programming
12
6
12/10/2022
13
// Demonstrate boolean values.
public class BoolDemo {
public static void main(String[] args) {
boolean b;
b = false;
System.out.println("b is " + b);
b = true;
System.out.println("b is " + b);
// a boolean value can control the if statement
if(b) System.out.println("This is executed.");
b = false;
if(b) System.out.println("This is not executed.");
// outcome of a relational operator is a boolean value
System.out.println("10 > 9 is " + (10 > 9));
}
}
Java Programming
13
Exercise: How Far Away Is the
Lightning? 14
1. Create a new file called Sound.java.
2. Write a program that computes how far away, in feet, a
listener is from a lightning strike. Sound travels
approximately 1,100 feet per second through air. Thus,
knowing the interval between the time you see a
lightning bolt and the time the sound reaches you
enables you to compute the distance to the lightning.
We assume that the time interval is 7.2 seconds.
Java Programming
14
7
12/10/2022
15
/* Compute the distance to a lightning
* strike whose sound takes 7.2 seconds to reach you
*/
public class Sound {
public static void main(String[] args) {
double dist;
dist = 7.2 * 1100;
System.out.println("The lightning is " + dist +
" feet away.");
}
}
Java Programming
15
Literals 16
• Literals refer to fixed values that are represented in their
human-readable form.
• Literals are also commonly called constants.
• Java literals can be of any of the primitive data types. The
way each literal is represented depends upon its type.
• Example:
• 10 and -100 are integer literals.
• 11.123 is a floating point literal.
• 12 is an int, but 12L is a long.
• By default, floating-point literals are of type double. To specify a
float literal, append an F or f to the constant (10.19F).
Java Programming
16
8
12/10/2022
Hexadecimal, Octal, and Binary
Literals 17
• A hexadecimal literal must begin with 0x or 0X
• An octal literal begins with a zero.
• A binary literal begins with a 0b or 0B.
• Example:
• int hex = 0xFF; // 255 in decimal
• int oct = 011; // 9 in decimal
• int binary = 0b1100; // 12 in decimal
Java Programming
17
Character Escape Sequences 18
Java Programming
18
9
12/10/2022
String Literals 19
• A string is a set of characters enclosed by double quotes.
• A string literal can also contain one or more of the escape
sequences .
• Example:
// Demonstrate escape sequences in strings
public class StrDemo {
public static void main(String[] args) {
System.out.println("First line\nSecond line");
System.out.println("A\tB\tC");
System.out.println("D\tE\tF");
}
}
Java Programming
19
Variables 20
type varname;
• where type is the data type of the variable, and
varname is its name
• Initializing a Variable:
type var = value;
• Example:
int count = 10; // give count an initial value of 10
char ch = 'X'; // initialize ch with the letter X
float f = 1.2F; // f is initialized with 1.2
int a, b = 8, c = 19, d; // b and c have initializations
Java Programming
20
10
12/10/2022
Dynamic initialization 21
// Demonstrate dynamic initialization.
// Compute volume of the cylinder
public class DynInit {
public static void main(String[] args) {
double radius = 4, height = 5;
//dynamically initialize volume
double volume = 3.1416 * radius * radius * height;
System.out.println("Volume is " + volume);
}
}
Java Programming
21
Scope and lifetime of variables 22
• Java allows variables to be declared within any block.
• A block (is begun with an opening curly brace and ended
by a closing curly brace) defines a scope.
• A scope determines what objects are visible to other parts of your
program. It also determines the lifetime of those objects.
• In general, every declaration in Java has a scope.
• Two of the most common scopes in Java:
• defined by a class and
• defined by a method.
• General rule: variables declared inside a scope are not
visible (that is, accessible) to code that is defined outside
that scope.
Java Programming
22
11
12/10/2022
Example: Scope 23
// Demonstrate block scope
public class ScopeDemo {
public static void main(String[] args) {
int x; // known to all code within main
x = 10;
if(x == 10) { // start new scope
int y = 20; // know only to this block
// x and y both known here.
System.out.println("x and y: " + x + " " + y);
x = y * 2;
}
// y == 100; // Error! y is not known here
// x is still known here.
System.out.println("x is " + x);
}
}
Java Programming
23
Example: Lifetime 24
// Demonstrate lifetime of a variable.
public class VarInitDemo {
public static void main(String[] args) {
int x;
for(x = 0; x < 3; x++) {
int y = -1;
// y is initialized each time block is entered
System.out.println("y is : " + y);
// this always prints -1
y = 100;
System.out.println("y is now: "+ y);
}
}
}
Java Programming
24
12
12/10/2022
Operators 25
• An operator is a symbol that tells the compiler to perform
a specific mathematical or logical manipulation.
• Java has four general classes of operators:
• arithmetic,
• bitwise, relational,
• and logical.
Java Programming
25
Arithmetic operators 26
Java Programming
26
13
12/10/2022
Example 27
// Demonstrate the % operator
public class ModDemo {
public static void main(String[] args) {
int iresult, irem;
double dresult, drem;
iresult = 10 / 3;
irem = 10 % 3;
dresult = 10.0 / 3.0;
drem = 10.0 % 3.0;
System.out.println("Result and remainder of 10 / 3: ” +
iresult + " " + irem);
System.out.println("Result and remainder of 10.0/3.0: ”+
dresult + " " + drem);
}
}
Java Programming
27
Increment and Decrement 28
• x++; is the same as x = x + 1;
• x--; is the same as x = x - 1;
• Both the increment and decrement operators can either
precede (prefix) or follow (postfix) the operand.
• For example: x = x + 1; can be written as
++x; // prefix form
or
x++; // postfix form
• Consider the following:
x = 10; and x = 10;
y = x++; y = ++x;
Java Programming
28
14
12/10/2022
Relational and logical operators 29
Java Programming
29
30
Java Programming
30
15
12/10/2022
// Demonstrate the relational and logical operators. 31
public class RelLogOps {
public static void main(String[] args) {
int i, j;
boolean b1, b2;
i = 10;
j = 11;
if(i < j) System.out.println("i < j");
if(i <= j) System.out.println("i <= j");
if(i != j) System.out.println("i != j");
if(i == j) System.out.println("This won't execute");
if(i >= j) System.out.println("This won't execute");
if(i > j) System.out.println("This won't execute");
b1 = true;
b2 = false;
if(b1 & b2) System.out.println("This won't execute");
if(!(b1 & b2)) System.out.println("!(b1 & b2) is true");
if(b1 | b2) System.out.println("b1 | b2 is true");
if(b1 ^ b2) System.out.println("b1 ^ b2 is true");
}
Java Programming
}
31
Short-circuit logical operators 32
• Java supplies special short-circuit versions of its AND and
OR logical operators that can be used to produce more
efficient code.
• In an AND operation, if the first operand is false, the outcome is
false no matter what value the second operand has.
• In an OR operation, if the first operand is true, the outcome of the
operation is true no matter what the value of the second operand.
• Thus, in these two cases there is no need to evaluate the second
operand. à time is saved and more efficient code is produced.
• The short-circuit AND (OR) operator is && (||). Their
normal counterparts are & and |.
Java Programming
32
16
12/10/2022
Example 33
// Demonstrate the short-circuit operators.
public class SCops {
public static void main(String[] args) {
int n, d, q;
n = 10;
d = 2;
if(d != 0 && (n %d ) == 0)
System.out.println(d + " is a factor of " + n);
d = 0; // now, set d to zero
// Since d is zero, the second operand is not evaluated
if(d != 0 && (n % d) == 0)
System.out.println(d + " is a factor of " + n);
/* Now, try same thing without short-circuit operator.
* This will cause a divide-by-zero error.
*/
if(d != 0 & (n % d) == 0)
System.out.println(d + " is a factor of " + n);
}
} Java Programming
33
Assignment operator 34
var = expression;
• The type of var must be compatible with the type of
expression.
• Example:
int x, y, z;
x = y = z = 100; // set x, y, and z to 100
Java Programming
34
17
12/10/2022
Shorthand assignments 35
• Java provides special shorthand assignment operators
that simplify the coding of certain assignment statements.
x = x + 10;
can be written, using Java shorthand, as
x += 10;
Java Programming
35
Example: side effect 36
// Side effects can be important.
public class SideEffects {
public static void main(String[] args) {
int i;
i = 0;
/* Here, i is still incremented even though
* the if statement fails. */
if(false & (++i < 100))
System.out.println("This won't be displayed");
System.out.println("if statement executed: " + i); //displays 1
/* In this case, i is not incremented because
* the short-circuit operator skips the increment. */
if(false && (++i < 100))
System.out.println("This won't be displayed");
System.out.println("if statement executed: " + i); //still 1!
}
}
Java Programming
36
18
12/10/2022
Type conversion in assignments 37
• When one type of data is assigned to another type of
variable, an automatic type conversion will take place if
• The two types are compatible.
• The destination type is larger than the source type.
Java Programming
37
Example 38
// Demonstrate automatic conversion from long to double
public class LtoD {
public static void main(String[] args) {
long L;
double D;
L = 100123285L;
D = L; // automatic conversion from long to double
System.out.println("L and D: " + L + " " + D);
}
}
Java Programming
38
19
12/10/2022
39
// This program will not compile.
public class DtoL {
public static void main(String[] args) {
long L;
double D;
D = 100123258.0;
L = D; // Illegal! No automatic conversion
// from double to long
System.out.println("L and D: " + L + " " + D);
}
}
Java Programming
39
Casting incompatible types 40
(target-type) expression
• target-type specifies the desired type to convert the
specified expression to.
• Example:
double x = 3.0, y = 2.0;
// .....
int z = (int)(x / y);
• When a cast involves a narrowing conversion, information
might be lost.
• Example: when casting a long into a short, information will be
lost if the long’s value is greater than the range of a short
because its high-order bits are removed.
Java Programming
40
20
12/10/2022
// Demonstrate casting.
public class CastDemo {
public static void main(String[] args) { 41
double x, y;
byte b;
int i;
char ch;
x = 10.0;
y = 3.0;
i = (int)( x / y); //cast double to int
System.out.println("Integer outcome of x / y: " + i);
i = 100;
b = (byte) i;
System.out.println("Value of b: " + b);
i = 257;
b = (byte) i;
System.out.println("Value of b: " + b);
b = 88; // ASCII code for X
ch = (char) b;
System.out.println("Value of ch: " + ch);
}
Java Programming
}
41
Operator precedence 42
Java Programming
42
21
12/10/2022
Exercise: Display a Truth Table
for the Logical Operators 43
1. Create a new file called LogicalOpTable.java.
2. To ensure that the columns line up, you will use the \t
escape sequence to embed tabs into each output string.
3. Each subsequent line in the table will use tabs to
position the outcome of each operation under its proper
heading.
4. Put your implementation in the file
LogicalOpTable.java.
5. Compile and run the program.
6. Try modifying the program so that it uses and displays
1’s and 0’s, rather than true and false.
Java Programming
43
Result 44
Java Programming
44
22
12/10/2022
Type Conversion in Expressions 45
• Within an expression, it is possible to mix two or more
different types of data as long as they are compatible with
each other.
• Example: you can mix short and long within an
expression because they are both numeric types.
• When different types of data are mixed within an
expression, they are all converted to the same type
• Example: First, all char, byte, and short values are promoted
to int. Then, if one operand is a long, the whole expression is
promoted to long. If one operand is a float operand, the entire
expression is promoted to float. If any of the operands is
double, the result is double.
Java Programming
45
Example: Promotion 46
// Demonstrate a promotion
public class PromDemo {
public static void main(String[] args) {
byte b;
int i;
b = 10;
i = b * b; // Ok, no cast needed
b = 10;
// Cast is needed here to assign an int to a byte
b = (byte) (b * b);
System.out.println("i and b: " + i + " " + b);
}
}
Java Programming
46
23
12/10/2022
Example: Using a cast 47
// Using a cast
public class UseCast {
public static void main(String[] args) {
int i;
for(i = 0; i < 5; i++) {
System.out.println(i + " / 3: " + i / 3);
System.out.println(i + " / 3 with fractions: "
+ (double)i / 3);
}
}
}
Java Programming
47
Spacing and Parentheses 48
• An expression in Java may have tabs and spaces in it to
make it more readable.
x=10/y*(127/x);
x = 10 / y * (127/x);
• Parentheses increase the precedence of the operations
contained within them.
• Use of redundant or additional parentheses will not cause
errors or slow down the execution of the expression.
àYou are encouraged to use parentheses to make clear
the exact order of evaluation.
x=y/3-34*temp+127;
x = y/3 - (34*temp) + 127;
Java Programming
48
24
12/10/2022
Exercises 49
Java Programming
49
50
QUESTION ?
Java Programming
50
25