Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Introduction
Copyright © 2014 by John Wiley & Sons. All rights reserved.
1
What is java?
Developed by Sun Microsystems
General-purpose and Object-oriented language
Widespread acceptance
Copyright © 2014 by John Wiley & Sons. All rights reserved.
2
Java Features
Simple
• no pointers
• automatic garbage collection
• rich pre-defined class library
Object oriented
• all functions are associated with objects
• potentially better code organization and reuse
Platform independent
• Same application runs on all platforms
• Java bytecode can run on any JVM, on any platform
• …including mobile phones and other hand-held devices
Copyright © 2014 by John Wiley & Sons. All rights reserved.
3
Java Virtual Machine (JVM)
Steps:
1. Write all source code is in plain text files ending with
the .java extension.
2. Compile those source files into .class files by
the javac compiler.
• A .class file contains bytecodes — the machine language of
the Java Virtual Machine(Java VM).
3. Run the bytecode/.class file using JVM
Copyright © 2014 by John Wiley & Sons. All rights reserved.
4
Java Virtual Machine (JVM)
Because the Java VM is available on many different
operating systems, the same .class files are capable
of running on any platform.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
5
Java Versions
Copyright © 2014 by John Wiley & Sons. All rights reserved.
6
Writing first application
You need:
• The Java SE Development Kit 7 (JDK 7)
• A text editor:
• Simple text editors:
– Notepad, Notepad++ , …..
• Integrated Development Environment (IDE):
– Eclipse, Netbeans, DrJava , …..
Copyright © 2014 by John Wiley & Sons. All rights reserved.
7
QUESTION
What is the difference between JDK and JRE?
• Java Download page has both!
•
http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
ANSWER:
• You need to answer the question: Do you want to run Java
programs or do you want to develop Java programs?
• JRE:
• If you want to run Java programs, but not develop them,
download the JRE.
• JDK:
• If you want to develop Java applications, download the Java
Development Kit, or JDK.
• The JDK includes the JRE, so you do not have to download both
separately.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
8
Installing Java JDK
On Windows:
• http://docs.oracle.com/javase/7/docs/webnotes/install/windo
ws/jdk-installation-windows.html
On Linux:
• http://docs.oracle.com/javase/7/docs/webnotes/install/linux/
linux-jdk.html
On Mac OS X:
• http://docs.oracle.com/javase/7/docs/webnotes/install/mac/
mac-jdk.html
Copyright © 2014 by John Wiley & Sons. All rights reserved.
9
Your first Program: HelloPrinter.java
Choice 1: Using simple text editor
• STEP1: Write and save your program in text editor as
HelloPrinter.java
• STEP2: Compile the source file into a .class file
• STEP3: Run the program
Copyright © 2014 by John Wiley & Sons. All rights reserved.
10
Programming Question
In your home directory create a folder cs160. Inside it create a
folder ch01.
Write HelloPrinter program using gedit editor
Save program in cs160/ch01 as HelloPrinter.java
Open a terminal and navigate (cd) to cs160/ch01
Compile program (if no errors, verify .class file is generated)
Run program
Copyright © 2014 by John Wiley & Sons. All rights reserved.
11
Your first Program: HelloPrinter.java
1.
2.
3.
4.
Choice 2: Using IDE
Start the Java development environment (We use DrJava).
Write a simple program.
Run the program.
Organize your work.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
12
Becoming Familiar with Your
Programming Environment
2. Compile
1. Write and save program (File->save)
Copyright © 2014 by John Wiley & Sons. All rights reserved.
3. Run
13
Comments
Java supports three types of comments:
1. single-line comment:
2. multiline comment
3. document comment
Copyright © 2014 by John Wiley & Sons. All rights reserved.
14
Identifiers
Names chosen by the programmer
E.g. variable names, method names, class names etc.
Identifiers are subject to the following rules:
• Identifiers may contain letters (both uppercase and lowercase),
digits, and underscores (_).
• Identifiers begin with a letter or underscore.
• There’s no limit on the length of an identifier.
• Lowercase letters are not equivalent to uppercase letters. (A
language in which the case of letters matters is said to be
case-sensitive.)
• Cannot be reserved words (keywords)
Copyright © 2014 by John Wiley & Sons. All rights reserved.
15
Reserved Words
Here is a list of keywords in the Java programming
language. You cannot use any of the following as
identifiers in your programs.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
16
Multiword Identifiers
When an identifier consists of multiple words, it’s
important to mark the boundaries between words.
One way to break up long identifiers is to use
underscores between words:
last_index_of
Another technique is to capitalize the first letter of
each word after the first:
lastIndexOf
This technique is the one commonly used in Java.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
17
Java Conventions
A rule that we agree to follow, even though it’s not required by
the language
1. Begin a class name with an uppercase letter:
Student
Employee
String
2. Names of variables and methods, never start with an uppercase
letter.
age
variable name
print()
method name
3. Identifier names follow camel casing (For subsequent words in name,
first word capitalizd)
totalSalary
getName()
SalariedEmployee
Copyright © 2014 by John Wiley & Sons. All rights reserved.
variable name
method name
class name
18
Variables
Stores values/state
Must be declared before they can be used
• static typing
Copyright © 2014 by John Wiley & Sons. All rights reserved.
19
Primitive Data Types
Java supports eight basic data types known
as primitive types.
integer
floating
point
Copyright © 2014 by John Wiley & Sons. All rights reserved.
20
Declaring Variables
Syntax: <variable type> <variable name> ;
Example:
int i;
// Declares i to be an int variable
Several variables can be declared at a time:
int i, j, k;
It’s often better to declare variables individually.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
21
Initializing Variables
Assign a value to the variable for the first time.
us =, the assignment operator:
i = 0;
byte z = 22;
double h = 3.1l3;
char x = ‘x’;
Variables always need to be initialized before the first time
their value is used.
You can initialize variables at the time of declaration too:
boolean found=true, contains;
int a, b=20, c;
Copyright © 2014 by John Wiley & Sons. All rights reserved.
22
22
Changing the Value of a Variable
The assignment operator can be used both to initialize
a variable and to change the value of the variable later
in the program:
i = 1;
…
i = 2;
// Value of i is now 1
// Value of i is now 2
Copyright © 2014 by John Wiley & Sons. All rights reserved.
23
Literals
A token that represents a particular number or other
value.
Examples of int literals:
0
437
30343
Examples of double literals:
37.0
37.
3.7e1
3.7e+1
.37e2
370e-1
The only boolean literals are true and false.
char literals are enclosed within single quotes:
'a'
'z'
'A'
'Z'
Copyright © 2014 by John Wiley & Sons. All rights reserved.
'0'
'9'
'%'
'.'
' '
24
Copyright © 2014 by John Wiley & Sons. All rights reserved.
25
Constants: final
Represents values that do not change.
Use keyword final when declaring a variable as a
constant
Convention:
• use all-uppercase names for constants
• Words separated by underscore(“_”)
final double PENNY_VALUE = 0.01;
final double NICKEL_VALUE = 0.05;
Copyright © 2014 by John Wiley & Sons. All rights reserved.
26
Class Declaration
Classes:
• are the fundamental building blocks of Java programs:
• The name of the public class MUST match the name of the file
containing the class:
• Class HelloPrinter must be contained in a file named
HelloPrinter.java
1
2
3
4
5
6
7
8
9
public class HelloPrinter
Class declaration
{
public static void main(String[] args)
{
// Display a greeting in the console window
System.out.println("Hello, World!");
}
}
Class body
Copyright © 2014 by John Wiley & Sons. All rights reserved.
27
Methods
Each class contains declarations of methods.
Each method contains a sequence of instructions
describing how to carry out a particular task.
A method is called by specifying the method and its
arguments.
Every Java application contains a class with a main
method
• When the application starts, the instructions in the main method
are executed
Copyright © 2014 by John Wiley & Sons. All rights reserved.
28
1
2
3
4
5
6
7
8
9
public class HelloPrinter
Method
{
declaration
public static void main(String[] args)
{
// Display a greeting in the console window
System.out.println("Hello, World!");
}
}
Method body
Copyright © 2014 by John Wiley & Sons. All rights reserved.
29
Statements
The body of the main method contains statements.
Every statement ends with a semicolon (“;”)
Our method has a single statement:
System.out.println("Hello, World!");
It prints a line of text:
Hello, World!
Copyright © 2014 by John Wiley & Sons. All rights reserved.
30
1
2
3
4
5
6
7
8
9
public class HelloPrinter
{
public static void main(String[] args)
{
// Display a greeting in the console window
System.out.println("Hello, World!");
}
}
Statement 1
Copyright © 2014 by John Wiley & Sons. All rights reserved.
31
Print statement
System.out.print
• Prints in the same line
System.out.println
• Prints in a new line
• System.out.println();//Prints in an empty line
Printing Multiple Items
• The + operator can be used to combine multiple items into a
single string for printing purposes:
int I = 10;
System.out.println(“The value of i is: " + i);
• At least one of the two operands for the + operator must be a
string.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
32
Syntax 1.1 Java Program
Copyright © 2014 by John Wiley & Sons. All rights reserved.
33
Indentation
Programmers use indentation to indicate nesting.
An increase in the amount of indentation indicates
an additional level of nesting.
The HelloPrinter program consists of a statement
nested inside a method nested inside a class:
public class HelloPrinter
{
public static void main(String[] args)
{
// Display a greeting in the console window
System.out.println("Hello, World!");
}
}
Copyright © 2014 by John Wiley & Sons. All rights reserved.
34
Brace Placement
Brace placement is another important issue.
Option1:
• Put each left curly brace at the end of a line.
• The matching right curly brace is lined up with the first character on
that line:
public class HelloPrinter{
public static void main(String[] args) {
// Display a greeting in the console window
System.out.println("Hello, World!");
}
}
Copyright © 2014 by John Wiley & Sons. All rights reserved.
35
Brace Placement
Option2:
• Some programmers prefer to put left curly braces on separate
lines:
public class HelloPrinter
{
public static void main(String[] args)
{
// Display a greeting in the console window
System.out.println("Hello, World!");
}
}
• This makes it easier to verify that left and right braces match
up properly. However, program files become longer because
of the additional lines.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
36
Programming Question
Write a tester class IdentifierDemo that does the
following:
• Create seven variables, one for each of the primitive number
types in Java
• Initialize each variable with any appropriate value.
• Print out the name of each variable and its value.
• Modify the value of each variable with an assignment
statement
• Print out the names of the variables and their new values.
• Next, create a double constants pi with value
3.141592653589793.
• Print the name of the constant and its value.
What happens if you try to a assign a value to a
constant?
Copyright © 2014 by John Wiley & Sons. All rights reserved.
37
Answer
public class IdentifierDemo
{
public static void main(String[] args)
{
boolean bln = true; // booleans can only be 'true' or 'false'
byte b = 20;
short s = 500;
char c = '%';
// must use single quotes to denote characters
int i = 1000000;
// decimal notation
float f = 1.5f;
// trailing 'f' distinguishes from double
long l = 2000000L; // trailing 'L' distinguishes from int
IdentifierDemo.java
System.out.println("bln="+bln);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("i="+i);
System.out.println("f="+f);
System.out.println("bln="+bln);
System.out.println("l="+l);
bln
b =
s =
c =
i =
f =
l =
= false; // booleans can only be 'true' or 'false'
70;
800;
't';
// must use single quotes to denote characters
23;
// decimal notation
3.0f;
// trailing 'f' distinguishes from double
5600000L; // trailing 'L' distinguishes from int
System.out.println();
System.out.println("bln="+bln);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("i="+i);
System.out.println("f="+f);
System.out.println("bln="+bln);
System.out.println("l="+l);
final double
pi = 3.141592653589793;
// doubles are higher precision
System.out.println("pi="+pi);
}
}
Copyright © 2014 by John Wiley & Sons. All rights reserved.
38
Java Language Basics: Operators
Java provides a rich set of operators to manipulate
variables.
•
•
•
•
•
•
Arithmetic Operators
Relational Operators
Bitwise Operators
Logical Operators
Assignment Operators
Misc Operators
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
Copyright © 2014 by John Wiley & Sons. All rights reserved.
39
Java Language Basics: Operators
Arithmetic Operators:
• Assume variables A=10 , B=20
Copyright © 2014 by John Wiley & Sons. All rights reserved.
40
QUESTION
What is the output of following java expressions?
1) 1 / 2
2) 5 / 3
3) 6.1 + 2
4) 7 % 3
5) 1.0/0.0
6) -1.0/0.0
7) 0.0/0.0
Copyright © 2014 by John Wiley & Sons. All rights reserved.
41
Answer
Copyright © 2014 by John Wiley & Sons. All rights reserved.
42
Operator Precedence
What’s the value of 6 + 2 * 3?
• (6 + 2) * 3, which yields 24?
• 6 + (2 * 3), which yields 12?
Operator precedence resolves issues such as this.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
43
Copyright © 2014 by John Wiley & Sons. All rights reserved.
44
*, /, and % take precedence over + and -.
Examples:
5
8
6
9
6
+
*
/
+
2
3
1
4
2
/
*
+
%
2
5
7
6
3
5 + (2 / 2)
(8 * 3) - 5
6 - (1 * 7)
(9 / 4) + 6
6 + (2 % 3)
Copyright © 2014 by John Wiley & Sons. All rights reserved.
6
19
–1
8
8
45
Associativity
Precedence rules are of no help when it comes to
determining the value of 1 - 2 - 3.
Associatively rules come into play when precedence
rules alone aren’t enough.
The binary +, -, *, /, and % operators are all left
associative:
2 + 3 - 4 (2 + 3) - 4 1
2 * 3 / 4 (2 * 3) / 4 1
Copyright © 2014 by John Wiley & Sons. All rights reserved.
46
Parentheses in Expressions
Parentheses can be used to override normal
precedence and associativity rules.
Parentheses in the expression (6 + 2) * 3 force the
addition to occur before the multiplication.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
47
Question
What is the default parenthesis used in java for
following expression:
2+3*4+1+4/2
Copyright © 2014 by John Wiley & Sons. All rights reserved.
48
Answer
(((2+(3*4))+1)+(4/2))
Copyright © 2014 by John Wiley & Sons. All rights reserved.
49
Compound Assignment Operators
The compound assignment operators make it easier
to modify the value of a variable.
A partial list of compound assignment operators:
+= Combines addition and assignment
-= Combines subtraction and assignment
*= Combines multiplication and assignment
/= Combines division and assignment
%= Combines remainder and assignment
Copyright © 2014 by John Wiley & Sons. All rights reserved.
50
Compound Assignment Operators
Examples:
i += 2;
i -= 2;
i *= 2;
i /= 2;
i %= 2;
//
//
//
//
//
Same
Same
Same
Same
Same
as
as
as
as
as
Copyright © 2014 by John Wiley & Sons. All rights reserved.
i
i
i
i
i
=
=
=
=
=
i
i
i
i
i
+
*
/
%
2;
2;
2;
2;
2;
51
Programming Question
Write a tester class FtoC that convert a Fahrenheit
temperature to Celsius.
• In the main method declare two variables fahrenheit and celsius.
• Initialize fahrenheit to 98.6.
• Calculate value of celcius using following equation:
• Expected output:
Copyright © 2014 by John Wiley & Sons. All rights reserved.
52
Answer
FtoC.java
// Converts a Fahrenheit temperature to Celsius
public class FtoC {
public static void main(String[] args) {
double fahrenheit = 98.6;
double celsius = (fahrenheit - 32.0) * (5.0 / 9.0);
System.out.println("Celsius equivalent: “ + celsius);
}
}
Copyright © 2014 by John Wiley & Sons. All rights reserved.
53
Programming Question
Note that the ratio 5.0/9.0 and value 32.0 is a
constant in FtoC program. Modify your program so
that you define a constant DEGREE_RATIO (5.0/9.0)
and FREEZING_POINT(32.0) and adjust your equation
accordingly.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
54
Answer
FtoC.java
// Converts a Fahrenheit temperature to Celsius
public class FtoC {
public static void main(String[] args) {
final double FREEZING_POINT = 32.0;
final double DEGREE_RATIO = 5.0 / 9.0;
double fahrenheit = 98.6;
double celsius = (fahrenheit - FREEZING_POINT) * DEGREE_RATIO;
System.out.println("Celsius equivalent: “+celsius);
}
}
Copyright © 2014 by John Wiley & Sons. All rights reserved.
55
Converting Floating-Point Numbers to Integers - Cast
The compiler disallows the assignment of a double to an
int because it is potentially dangerous
This is an error:
double balance = total + tax;
int dollars = balance; // Error: Cannot assign double to int
Use the cast operator (int) to convert a floating-point
value to an integer.
double balance = total + tax;
int dollars = (int) balance;
Cast discards fractional part
Copyright © 2014 by John Wiley & Sons. All rights reserved.
56
Syntax 4.2 Cast
Copyright © 2014 by John Wiley & Sons. All rights reserved.
57
Packages
Java classes are grouped into packages.
• java.net package classes for networking
• java.io package input/output functions
• javax.swing package graphical user interface development
• Refere javadoc API
To use a class in a package, you must import the package
• E.g. to use Rectangle class in java.awt package:
import java.awt.Rectangle;
Put the line at the top of your program.
You DON’T need to import classes in the java.lang package
such as String and System.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
58
Syntax 2.4 Importing a Class from a
Package
Copyright © 2014 by John Wiley & Sons. All rights reserved.
59
Read user input
Use a class called Scanner to read keyboard input.
To use the Scanner class, import it by placing the
following at the top of your program file (before class
definition):
import java.util.Scanner
Copyright © 2014 by John Wiley & Sons. All rights reserved.
60
2. Obtain a Scanner object:
Scanner in = new Scanner(System.in);
1. Prompt user a message asking to input data:
System.out.println(“Enter the Fahrenheit temperature : ”);
By default, a scanner uses white space to separate tokens.
White space characters include blanks, tabs, and line terminators.
2. Read the user input:
•
•
Read int: use nextInt() method
Read double: nextDouble() method
•
Read string: next() method
Refer Scanner page in Oracle JavaAPI
Copyright © 2014 by John Wiley & Sons. All rights reserved.
61
nextInt() example:
System.out.print("Please enter the number of bottles: ");
int bottles = in.nextInt();
• When the nextInt method is called,
• The program waits until the user types a number and
presses the Enter key;
• After the user supplies the input, the number is placed into
the bottles variable;
• The program continues.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
62
To read different and multiple inputs from user,
creating one scanner object is enough.
Copyright © 2014 by John Wiley & Sons. All rights reserved.
63
Programming Question
Write a tester class ScannerDemo.java that accepts two
numbers from user and prints the sum.
Sample output:
Copyright © 2014 by John Wiley & Sons. All rights reserved.
64
Answer
ScannerDemo.java
import java.util.Scanner;
public class ScannerDemo
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
System.out.print("Enter number 1: ");
int n1 = in.nextInt();
System.out.print("Enter number 2: ");
int n2 = in.nextInt();
int total = n1 + n2;
System.out.println(n1+ " + "+n2+ " = "+total);
}
}
Copyright © 2014 by John Wiley & Sons. All rights reserved.
65
Formatted Output
Use the printf method to specify how values should be formatted.
Suppose you have a variable price with value 1.215962441314554
If you use
System.out.println(price)
Will print :
1.215962441314554
If you want a formatted output(e.g. only 2 decimal points displayed):
System.out.printf("%.2f", price);
Will print:
1.22
Copyright © 2014 by John Wiley & Sons. All rights reserved.
66
Formatted Output
You can also specify a field width:
System.out.printf("%10.2f", price);
This prints 10 characters, six spaces followed by the four characters
1.22
This command
System.out.printf("Price per liter:%10.2f", price);
Prints
Price per liter: 1.22
Copyright © 2014 by John Wiley & Sons. All rights reserved.
67
Formatted Output
Copyright © 2014 by John Wiley & Sons. All rights reserved.
68
Formatted Output
You can print multiple values with a single call to the
printf method.
Example
System.out.printf("Quantity: %d Total: %10.2f",quantity, total);
Output explained:
Copyright © 2014 by John Wiley & Sons. All rights reserved.
69