Finally a taste of Java History 1991 James

  • Slides: 45
Download presentation
Finally! …a taste of Java! • History – 1991 - James Gosling, Sun Microsystems,

Finally! …a taste of Java! • History – 1991 - James Gosling, Sun Microsystems, Inc. • originally a language for programming home appliances – later (1994) used for World Wide Web applications (since byte code can be downloaded and run without compiling it) • Eventually used as a general-purpose programming language (for the same reason as above plus it is object-oriented) 1

Three Elements of Java 1. The Java Runtime Environment (JRE) • Needed to run

Three Elements of Java 1. The Java Runtime Environment (JRE) • Needed to run Java programs • Most internet browsers now include the JRE. • If you are going to use Java programs (as opposed to creating them), this is all you need. 2. The Java programming language • The language used to create programs. 3. The Java Application Programmer’s Interface (API) • A (large) collection of pre-written programs in the software development kit (SDK) that can be used by your Java programs. • The “interface” describes how to connect your programs with the ones in the SDK. 2

Translation of Java to machine code • A two step process • Step 1:

Translation of Java to machine code • A two step process • Step 1: Compile source code to Java “byte code”. – “Byte code” is a standard intermediate-level language. – Input: Java code in one or more files ending in. java – Output: Byte code in one or more files ending in. class • Step 2: Interpret Java byte code on a particular machine – The interpreter converts each byte code statement to the specific type of machine code and then runs that machine code. 3

Why 2 steps? • Byte code is standard, so you can compile Java programs

Why 2 steps? • Byte code is standard, so you can compile Java programs on any machine, and run them on any other machine that has a Java interpreter. – This means that. class files can be downloaded from the Internet and run locally. – Only the original program developer needs a compiler and the software development kit. – Avoids having to re-compile the program for every combination of hardware and operating system. • The Java interpreter is called a “Virtual Machine” and is part of the Java Runtime Environment. – Java virtual machines are specific to one type of computer and operating system. – Most internet browsers now include a Java virtual machine. 4

Compile Java Source Code (. java) Java Compiler Run Java Byte Code (. class)

Compile Java Source Code (. java) Java Compiler Run Java Byte Code (. class) Download (optional) . class Java Virtual Machine A Java Virtual Machine B (Machine Code A) (Machine Code B) 5

Our First Java Program • Let’s write a Java program to print Hello, world!

Our First Java Program • Let’s write a Java program to print Hello, world! on the screen 6

Our First Java Program • Code to begin and end your program: – (to

Our First Java Program • Code to begin and end your program: – (to be explained later) public class Hello { public static void main( String[ ] args ) { System. out. println( "Hello, world!" ); } } 7

Java Program Structure • All Java code must be part of a “class”, and

Java Program Structure • All Java code must be part of a “class”, and a Java program is structured as a set of classes. • Every class has a name: public class Hello { } • Braces { and } are used to mark the start and end of the class. • Other class information may also appear with the name: – A “public” class is one that can be referred to by other classes. 8

Comments • Programmers use comments in their code to provide information to the reader

Comments • Programmers use comments in their code to provide information to the reader on what the code is doing. • When a program is compiled, the compiler skips all comments. • It is common (and good) practice to use a comment at the top of the code containing general information about the file (known as a header). 9

Code Comments • Single line comment – Everything from // to the end of

Code Comments • Single line comment – Everything from // to the end of the line is the comment some code // This is a comment more code • General comment – Everything from /* to the next occurrence of */ is a comment – Can be part of a line code /* comment */ more code – Can be several lines code /* start of comment more comment end of comment */ more code 10

Sample Program Header /** * Hello. java * Author Brigitte Helen Boudreau * Student

Sample Program Header /** * Hello. java * Author Brigitte Helen Boudreau * Student ID 123456 * This program is a simple program that displays * Hello, world! * * Modifications * 08/09/2003 BHB first created * 25/08/2004 AWW modified slightly */ 11

Components of Classes • Inside a class, there can be – “attributes”: they store

Components of Classes • Inside a class, there can be – “attributes”: they store some information – “methods”: they do some work. • In our first program, we have zero attributes and one method. • Each method has 2 parts: a header, and a body. – The header contains the name and other information about the method. • A user of the method needs to know this information. – The body describes what the method should do. • Braces { and } are used to mark the start and end of the method body. 12

Methods • In our first program, we have one method. public static void main(String[

Methods • In our first program, we have one method. public static void main(String[ ] args) // header { System. out. println( "Hello, world!" ); } – The name of the method is main • main is a special name: it means “when you run the program, start here. ” – Other information in the method header will be explained later; for now, every main method should have this exact header. – A method body consists of a set of statements. • Each statement is terminated by a semi-colon ; • Our main method has only one statement. 13

Statements • Our first Java program has one statement: System. out. println( "Hello, world!"

Statements • Our first Java program has one statement: System. out. println( "Hello, world!" ); • Whatever is between the double quotes will appear on the screen, and then the output will move to the next line of the screen. • System is the name of a special class that comes with Java – The. operator asks to go inside a class to an attribute or method. – The above asks to start the println method contained in the out attribute of the System class. – The information between quotes is passed to the println method. – On any computer with a Java virtual machine, the System class keeps track of machine-specific information (such as how to get information onto the screen). 14

Data in Java • Java is a “typed” language: – Every data value must

Data in Java • Java is a “typed” language: – Every data value must have a type – The type gives rules for what values are allowed, and what operations can be done with the values. • For the computer, values of a certain type usually take a known amount of storage space in memory. 15

Java Primitive data types • A data item has a PRIMITIVE type if it

Java Primitive data types • A data item has a PRIMITIVE type if it represents a single value, which cannot be decomposed. • Java has a number of pre-defined primitive data types. In this course, we will use the following types: int represents integers (e. g. 3) long represents large integers double represents “real” numbers (e. g. 3. 0) char represents single characters boolean represents Boolean (logical) values 16

Variables • To store a value, we use a variable – a name referring

Variables • To store a value, we use a variable – a name referring to the location in which the value is stored. • Variables must be declared before they can be used. • A variable declaration has three parts: – The type of the variable – The name of the variable – (Optional) Assign an initial value to the variable. • Example: int x = 3; 17

Assigning Values • The equals sign = is used to represent assigning a value

Assigning Values • The equals sign = is used to represent assigning a value to a variable. • General form: <variable name> = <expression> ; • In an assignment statement: – The expression to the right of = is evaluated. – The value is put in the memory location represented by the variable name. – Whatever value was previously associated with the variable is replaced (lost). • Example (assume x and y are declared previously): x = 3 + y; 18

The Boolean Type • A Boolean variable is one which can have only 2

The Boolean Type • A Boolean variable is one which can have only 2 possible values: true or false. (These are not numbers. ) • Boolean variables are used when you need to do logical tests – Example “Is X greater than 3? ” x > 3 • Boolean operators: – and (represented by && in Java) – or (represented by || in Java) – not (represented by ! in Java) 19

Truth Tables • A TRUTH TABLE for a compound Boolean expression shows the results

Truth Tables • A TRUTH TABLE for a compound Boolean expression shows the results for all possible combinations of the simple expressions: X Y true false X AND Y x && y X OR Y x || y NOT X ! x 20

Type int • A variable of type int may take values from – 2147483648

Type int • A variable of type int may take values from – 2147483648 to 2147483647. – Exceeding the range of legal values results in OVERFLOW, a run-time error. • The following operators are available for type int : + (addition) – (subtraction, negation) * (multiplication) / (integer division, where fraction is lost; result is an int) Example: 7 / 3 = 2 % (remainder from division) Example: 7 % 3 = 1 == != > < >= <= (comparisons: these take two values of type int and return a boolean value) 21

Type long • A variable of type long may take values from – 9223372036854775808

Type long • A variable of type long may take values from – 9223372036854775808 L to 9223372036854775807 L. • To indicate the difference between an int constant and a long constant, the character L is appended – Example – 1 is of type int – 1 L is of type long • Values of type long take up twice as much memory as values of type int. 22

Type double (Literals) • Type double represents “real” numbers approximately from -1. 7 10308

Type double (Literals) • Type double represents “real” numbers approximately from -1. 7 10308 to 1. 7 10308 with 15 accurate significant digits. – While there a lot of double values, the set of legal double values is still finite, and so they are only an approximation to real numbers. – After a computation, the computer has to choose the closest double value to a real result: this can introduce “round-off” errors. • Format of large or small values: 123456000000. 0 = 0. 123456 1017 is 0. 123456 e 17 0. 00000123456 = 0. 123456 10 -5 is 0. 123456 e-5 • If the value of e is more negative than about -308, the result is UNDERFLOW, and the value will be replaced by zero. This happens quietly, and is not a run-time error. 23

Type double (Operators) • The following operators are available for type double : +

Type double (Operators) • The following operators are available for type double : + (addition) – (subtraction, negation) * (multiplication) / (division in “real” numbers, result is a double) > < (comparisons: these take two values of type double and return a boolean value) • WARNING: Using == (or != >= <=) to compare two values of type double is legal, but NOT recommended, because of the potential for round-off errors. – Later on, we will see a safe way to do this. 24

Type char • Characters are individual symbols, enclosed in single quotes • Examples –

Type char • Characters are individual symbols, enclosed in single quotes • Examples – letters of the alphabet (upper and lower case are distinct) 'A', 'a' – punctuation symbol (e. g. comma, period, question mark) – single blank space – parentheses '(', ')'; brackets '[', ']'; braces '{', '}' – single digit ('0', '1', … '9') – special characters such as '@', '$', '*', and so on. 25

Special characters • Some characters are treated specially because they cannot be typed easily,

Special characters • Some characters are treated specially because they cannot be typed easily, or have other interpretations in Java. – new-line character 'n' – tab character 't' – single quote character ''' – double quote character '"' – backslash character '\' • All of the above are single characters, even though they appear as two characters between the quotes. • The backslash is used as an escape character: it signifies that the next character is not to have its “usual” meaning. 26

Strings (1) • A STRING is a collection of characters. – There is NO

Strings (1) • A STRING is a collection of characters. – There is NO primitive data type in Java for a string. • We will see later how to deal with strings in general. • String literals (constants) can be used to help make your program output more readable. – String literals are enclosed in double quotes: "This is a string” • Watch out for: – "a" (a string) versus 'a' (a character) – " " (a string literal with a blank that has length 1) versus "" (an empty string: a string literal of length 0) – "257" (a string) versus 257 (an integer) 27

String Concatenation • Strings can be CONCATENATED (joined) using the + operator: – "My

String Concatenation • Strings can be CONCATENATED (joined) using the + operator: – "My name is" + "Alan" gives "My name is. Alan" • String values can also be concatenated to values of other types with the + operator. – "The speed is " + 15. 5 gives "The speed is 15. 5" – Because one of the values for the + operator is a string , the double is temporarily converted to a string value "15. 5" before doing the concatenation. 28

Precedence of Operators • Operators are evaluated left-to-right, with the following precedence (all operators

Precedence of Operators • Operators are evaluated left-to-right, with the following precedence (all operators on the same line are treated equally): () (expression) [] (array subscript). (object member) + – (to indicate positive or negative values) ! (not) * / % + - (for addition or subtraction of two values, concatenation) < > >= <= == != && || = (assignment to variable) 29

Operator Precedence • What is the order of evaluation in the following expressions? a

Operator Precedence • What is the order of evaluation in the following expressions? a + b + c + d + e a + b * c - d / e a / (b + c) - d % e a / (b * (c + (d - e))) 30

The Math class • The Java class Math provides constants and methods for common

The Math class • The Java class Math provides constants and methods for common mathematical functions (see text page 43): Math. PI the value of Math. E the value of e Math. abs(x) absolute value Math. sin(x) sine x in radians (also cos, tan) Math. asin(x) arcsine (also acos, atan) Math. log(x) natural logarithm, x > 0 Math. exp(x) ex Math. pow(x, y) xy Math. sqrt(x) square root Math. floor(x) next lower integer Math. ceil(x) next higher integer Math. round(x) closest integer 31

Random Numbers • Random numbers are often needed for: – simulations – games •

Random Numbers • Random numbers are often needed for: – simulations – games • The method Math. random() returns a random number x of type double such that 0 ≤ x < 1. • Repeated calls will produce a uniform distribution – that is, the probability that any particular number will be returned is exactly the same as any other number. • To adjust the range of random numbers: y = Math. floor(Math. random() * 5) + 1; y will be an integer such that 1 ≤ y ≤ 5 32

Console Input and Output • We have already seen how to print a value

Console Input and Output • We have already seen how to print a value on the screen: System. out. println( a. Value ); • Reading information from the keyboard is not straightforward in Java – What you type is treated as a collection of characters, even if you want to enter a number. – We have to read an entire line at once, and then convert the characters to whatever data type is needed. 33

Java Output methods • There are two useful Java methods from the class System:

Java Output methods • There are two useful Java methods from the class System: System. out. println( a. Value ) System. out. print( a. Value ) – Method println() will append a new-line character to the output, while print() does not. • These methods are unusual in that the type of a. Value does not matter. • Method println() with no parameters can be used to print a blank line. 34

Java Input • If one were to use Java’s input methods directly (see text,

Java Input • If one were to use Java’s input methods directly (see text, section 2. 8), the following is needed: – At the start of the program, create a “buffered reader” – Whenever you want to read some input: • Read a line of characters from the keyboard • PARSE the input – For example, if you are expecting the user to enter a value for type double, parsing checks that the characters that have been entered form a valid double. 35

Simplified Keyboard Input • To simplify your code, a class called Keyboard is provided.

Simplified Keyboard Input • To simplify your code, a class called Keyboard is provided. You can download it from the course website. • In your assignments and labs, include this file, called Keyboard. java, in the same directory as your program. Then you may call the methods in this class to read a value (or values) from the keyboard. 36

Methods in class Keyboard • Here are some of the methods available in the

Methods in class Keyboard • Here are some of the methods available in the class Keyboard. • Keyboard. read. Int() – Reads a single integer value of type int • Keyboard. read. Long() • Keyboard. read. Double() • Keyboard. read. Char() – Read a single character from the keyboard. • Keyboard. read. String() – Read all characters typed before the user hits ‘enter’ • Keyboard. read. Boolean() – Type the word true or false (no quotes) on the keyboard and the appropriate boolean value will be created. 37

Examples of using Keyboard int x = Keyboard. read. Int( ); • If you

Examples of using Keyboard int x = Keyboard. read. Int( ); • If you type 123 and press ENTER, x will have the value 123. • Method read. Double works the same way. boolean b = Keyboard. read. Boolean( ); • If you type false and press ENTER, b will have the value false. long x = Keyboard. read. Int( ); • If you type 123 and press ENTER, x will have the value of a long integer 123 L. 38

What happens if the user types the wrong value? • If you use Keyboard.

What happens if the user types the wrong value? • If you use Keyboard. read. Int(), you are expecting the user to type a set of characters that form a legal integer in the proper range for an int variable. • If the user types something else: – A “default value” will be returned that will match the type of the variable • false for a boolean • the lowest possible integer • a special “not a number” floating point value • Later on, we will see how to check user input in our programs. 39

Input and Output Prompts • When the user is being asked to enter something

Input and Output Prompts • When the user is being asked to enter something from the keyboard, your program should always print a message first to tell the user what to enter. • Example: int x; System. out. println(“Enter an integer from 0 to 3: ”); x = Keyboard. read. Int(); • Likewise, when your program prints a value, there should be a prompt to explain what the value is: • Example: System. out. println(“You typed: ” + x ); 40

Problem Solving • We now have enough tools to start solving some problems. •

Problem Solving • We now have enough tools to start solving some problems. • For any problem, BEFORE you start writing a program, determine: – What are the input values that are needed from the user? – What results (outputs) do we need to determine? – What other values are needed? • math constants: , e, etc. • physical constants – What temporary values might need to be calculated? – How do we calculate the results? 41

Example 1 • Calculate the area of a circle from its radius 1. what

Example 1 • Calculate the area of a circle from its radius 1. what input values do we need? 2. what other values do we need? 3. what is our output? 4. how do we calculate the result? 42

Example 2 • Calculate the distance travelled by an object under constant acceleration, given

Example 2 • Calculate the distance travelled by an object under constant acceleration, given a specified time. – What input values do we need? – What other values do we need? – What is the result? – How do we calculate the result? 43

Example 3: • Carbon-14 dating – General radioactive decay equation: • Q 0: initial

Example 3: • Carbon-14 dating – General radioactive decay equation: • Q 0: initial quantity of radioactive substance • Q(t): quantity of radioactive substance at time t (in years) • : radioactive decay constant for a specific element • Q(t) = Q 0 e– t is the rate of decay equation – Carbon-14 is continuously taken in by a living organism, and the amount of material at death is assumed to be known. – Once the intake stops, the carbon-14 decays at the above rate, where = 0. 00012097 / year – Measure the percentage of carbon-14 remaining 44

Example 3 continued: • Solve for t to determine the age: • Another useful

Example 3 continued: • Solve for t to determine the age: • Another useful thing to know: if half of the Carbon 14 remains, the sample is about 5730 years old. • Create a Java program to determine the age: – what are the inputs? – what are the outputs? – what other values do we need? – how do we calculate the formula? 45