Introduction to Primitives 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 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) int • The most important integer type is int – An int is a "whole" number (no decimal point) • Numbers occupy memory in the computer – Larger numbers require more memory – 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 • Use int in preference to other integer types byte and short • A byte can be between -128 and 127 • A short can be -32768 to 32767 • Why these numbers? – I’ll answer that later in the course • 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) 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 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 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 • Use double in preference to float 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) An aside: approximations • Integers are precise, but real numbers are always approximate (inaccurate) • 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” Giving names to numbers • Sometimes you know what a number is – – – – You have 10 fingers π is 3.1415926536 Numbers written like this are called literals You can use literals anyplace in Java • Sometimes you need to use names instead: – classSize, myBankBalance, price – Names like this are called variables – The value of a variable may change Variables • Before you use a variable, you must declare it (tell Java what type it is) • 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 a frog) • You must also tell Java what its value is – You might compute the value, or read it in 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” 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 "$"! 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; 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 / for division character) Order of precedence • Operations with higher precedence are done before operations with lower precedence • Multiplication and division are done before 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 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! Assignment statements • An assignment statement has the form: variable = expression ; • Examples: price = 0.69; area = pi * radius * radius; classSize = classSize + 1; • this means “add one to the value in classSize” 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 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 A BASIC program • Here is a program, written in the BASIC language, to add two numbers and print out the result: PRINT 2+2 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); } } 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 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 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 The End