Primitives - CIS @ UPenn

Download Report

Transcript Primitives - CIS @ UPenn

Introduction to Primitives
21-Mar-17
Overview

Today we will discuss:





The eight primitive types,
especially int and double
Declaring the types of variables
Operations on primitives
The assignment statement
How to print results
2
Primitives


Primitives are the “basic” data values
There are eight types of primitives:




boolean -- used for true and false values
char -- used for single characters (letters, etc.)
byte, short, int, long -- four different kinds of integer
(whole number) values
float, double -- two different kinds of decimal numbers
(numbers with a decimal point)
3
int

The most important integer type is int


Numbers occupy memory in the computer




An int is a “whole” number (no decimal point)
Larger numeric types require more memory
byte: 1 byte short: 2 bytes int: 4 bytes long: 8 bytes
An int can be between about two billion (two thousand million)
and negative two billion
If you just write a number, such as 25, Java assumes it is
an int
 Hence it is easier to work with int values than with the other
integer types (byte, short, and long)
Use int in preference to other integer types
4
byte and short



A byte can be between -128 and 127
A short can be -32768 to 32767
Why these numbers?

These are “round numbers” in binary; for example,
0111 1111 1111 1111 is binary for 32767
1000 0000 0000 0000 is binary for -32768
The first bit is the sign bit: a 1 means it’s a negative number

Use byte or short only when

You know the numbers are all small
 There are millions of numbers to remember
Extra syntax is needed (will be discussed later)

5
long

long integers are for when two billion isn’t large enough
for your needs






A long can be as long as about 19 digits
A long occupies twice as much space as an int
Arithmetic on long values is slower
Use long only when you need really big numbers
Extra syntax is needed (will be discussed later)
Even larger numbers are available in Java-but they are objects, not primitives
6
double

A double represents a “real” number





Also sometimes called “floating point”
These are numbers with a decimal point
A double has about 15 digits of accuracy
If you just write a real number, such as 1.37, Java
assumes it is a double
 Hence it is easier to work with double values than with
float values
Use double in preference to float
7
float

float is the other kind of “real,” or “floating point” number
float has about 8 digits of accuracy
Arithmetic with float is not faster
Use float only to save space when there are millions of numbers

involved
Extra syntax is needed (will be discussed later)



8
An aside: approximations

Integers are precise, but real numbers are always
approximate (inaccurate)


Computers always use the binary system internally
Many numbers that can be expressed precisely in decimal
cannot be represented precisely in binary



For example, the numbers 1.1, 1.2, 1.3, and 1.4 can only be
approximated in binary
Two numbers that look the same may actually be subtly
different
Never test floating point numbers for equality!


Only test for larger or smaller, or for “not larger” or “not
smaller”
This is not a Java rule—it’s a programming rule
9
Giving names to numbers

Sometimes you know what a number is






You have 10 fingers
There are 24 hours in a day
π is 3.141592653589793238
Numbers written like this are called literals
You can use literals any place in Java that you can use a number
Sometimes you need to use names instead:




classSize, myBankBalance, myAge, speedometerReading
Names like this are called variables
The value of a variable may change
Sometimes names are simply more convenient, for example,
Math.PI instead of 3.141592653589793238
10
Variables

Before you use a variable, you must declare it (tell Java
what type it is: int, double, char, ...)

There are two reasons for this:



Different types require different amounts of space
So Java can prevent you from doing something meaningless (adding 5
to someone’s name, or multiplying two dates together)
Before you use a variable, you must also define it (tell Java
what value it has)


It makes no sense to print out your bankBalance, or to add 100.00
to your bankBalance, if you don’t have a meaningful, well-defined
initial value for bankBalance to start with
You might assign an initial value to your variable, or compute a
value, or read a value in; but you have to get one somehow
11
Declaring variables

You declare variables like this:
int classSize;
double myBankBalance;

When you declare a variable to be a primitive
type, Java automatically finds space for it


The amount of space Java needs to find depends on the
type of the variable
Think of a variable as a specially shaped “box,”
designed to hold a value of a particular type


An int variable is four bytes long and there’s a special place
for the sign bit
A float variable is also four bytes long, but the bits are used
differently--some are used to tell where the decimal point goes
12
Giving values to variables

A variable is just a name for some value



You have to supply the actual value somehow
Java tries to prevent you from using a variable that you
haven’t given a value
You can assign values like this:
classSize = 57;
myBankBalance = 123.01; // no "$"!
13
Initializing variables

You can give a variable an initial value when you
declare it:
int classSize = 30;
double myBankBalance = 0.0;

You can change the value of a variable many times:
classSize = 57;
myBankBalance = myBankBalance + 50.00;
14
Arithmetic


Primitives have operations defined for them
int and double have many defined operations,
including
+ for addition
- for subtraction
* for multiplication
(Old computers did not have the
/

character)
for division
15
Order of precedence


Operations with higher precedence are done before
operations with lower precedence
Multiplication and division have higher precedence than
addition and subtraction:
2 + 3 * 4 is 14, not 20

Operations of equal precedence are done left to right:
10 - 5 - 1 is 4, not 6
16
Parentheses

Operations inside parentheses are done first
(2 + 3) * 4 is 20

Parentheses are done from the inside out
24 / (3 * (10 - 6)) is 24 / (3 * 4) is 24 / 12 is 2

Parentheses can be used where not needed
2 + (3 * 4) is the same as 2 + 3 * 4

[ ] and { } cannot be used as parentheses!
17
Assignment statements

An assignment statement has the form:
variable = expression ;

Examples:
price = 0.69;
 (The expression can be as simple as a single literal or variable)
area = pi * radius * radius;
classSize = classSize + 1;

This means “add one to the value in classSize”
18
Printing out results, part 1

In Java, “print” really means “display in a window
on the screen”


Printing on actual paper is much harder!
There are two commands for printing:

System.out.print(x);


Displays x
System.out.println(x);

(Pronounced “printline”)
Displays x, then goes to the next line
19
Printing out results, part 2

Examples:
System.out.print("The sum of x and y is ");
System.out.println(x + y);

If x and y are both 5, the result will be
The sum of x and y is 10


If you print from an application, an output window
opens automatically
If you print from a browser applet, you have to open
the “Java Console” window to see your output
20
A BASIC program

Here is a program, written in the BASIC language, to
add two numbers and print out the result:
PRINT 2+2
21
A Java program

Here is the same program, written in Java:
public class TwoPlusTwo {
public static void main(String args[]) {
System.out.println(2 + 2);
}
}
22
Why is Java so hard?




BASIC is a beginner’s language, designed for small
programs
Java is a professional’s language, designed for large
programs
Just as a skyscraper needs a better foundation than a
doghouse, Java programs need more structural
support
Java isn’t the best language for everything
23
New vocabulary





primitive: one of the 8 basic kinds of values
literal: an actual specified value, such as 42
variable: the name of a “box” that can hold a value
type: a kind of value that a literal has or that a variable
can hold
declare: to specify the type of a variable
24
More new vocabulary




operation: a way of computing a new value from other
values
precedence: which operations to perform first (which
operations precede which other operations)
assignment statement: a statement that associates a
value with a name
initialize: to assign a “starting” value
25
The End
“I think there is a world market for maybe five
computers.”
--Thomas Watson, chairman of IBM, 1943
26