Lesson 2 - Basic Java Elements

Download Report

Transcript Lesson 2 - Basic Java Elements

Lesson B - Basic Java Elements
Unit B1 – Program Elements
Lecture B
Slide 1 of 69.
Hello World Program, Again
// My First Program!!
public class HelloWorld {
public static void main(String[] args){
System.out.println(“Hello World!”);
}
}
Lecture B
Slide 2 of 69.
Identifiers: Syntax
• Identifiers are the words a programmer uses in a program
• Identifier syntactic rules:

Can be made up of any length of
• letters
• digits
• underscore character (_)
• dollar sign ($)

Cannot begin with a digit
• Java is case sensitive

User and user are completely different identifiers
Lecture B
Slide 3 of 69.
Identifiers: Semantics
• Identifiers names can come from the following sources

Fixed in Java as reserved words
• public, class, static, void, method, …

Chosen by the programmer to denote something
• HelloWorld, main, args

Chosen by a programmer whose code we use:
• String, System, out, println
Lecture B
Slide 4 of 69.
Naming style
• The correctness of the program is not affected by the
names used
public class X7_65Tx { … }
• Names play a central role in the readability of the program
• They are part of its documentation
• They should thus be chosen carefully

BankAccount, size, numberOfElements
• Follow conventions in choosing names!
Lecture B
Slide 5 of 69.
White Space
• Spaces, blank lines, and tabs are collectively called white
•
•
•
•
space
White space is used to separate words and symbols in a
program
Extra white space is ignored
A valid Java program can be formatted many different
ways
Programs should be formatted to enhance readability,
using consistent indentation
Lecture B
Slide 6 of 69.
Valid, but bad Indentation
public
class
HelloWorld
{ public static void
main(String[]
args)
System.out.println(“Hello World!”)
;}}
Lecture B
{
Slide 7 of 69.
Comments
• Comments are ignored and are treated as white space
• They should be written to enhance readability


Explain what a piece of code does (its interface)
Explain any special tricks, limitations, …
• Java has three comment formats:



// comment to end of line
/* comment until
closing */
/** API specification comment */
Lecture B
Slide 8 of 69.
Lesson 2 - Basic Java Elements
Unit B2 - Variables and Data Types
Lecture B
Slide 9 of 69.
Variables
• A variable is a location in memory that can hold values of
a certain data type
• Each variable must be declared before it is used
• The declaration allocates a location in memory to hold
values of this type
• Variable types can be


primitive
reference to an object
Lecture B
Slide 10 of 69.
VariableExample Program
public class VariableExample {
public static void main(String[] args){
int x;
x = 3;
System.out.println(x);
x = 4;
System.out.println(x);
}
}
Lecture B
Slide 11 of 69.
VariableExample Program (2)
public class VariableExample {
public static void main(String[] args){
int x;
x = 3;
System.out.println(x);
x = 4;
System.out.println(x);
}
}
x
Lecture B
Slide 12 of 69.
VariableExample Program (3)
public class VariableExample {
public static void main(String[] args){
int x;
x = 3;
System.out.println(x);
x = 4;
System.out.println(x);
}
}
3
x
Lecture B
Slide 13 of 69.
VariableExample Program (4)
public class VariableExample {
public static void main(String[] args){
int x;
x = 3;
System.out.println(x);
x = 4;
System.out.println(x);
}
}
3
x
Lecture B
Slide 14 of 69.
VariableExample Program (5)
public class VariableExample {
public static void main(String[] args){
int x;
x = 3;
System.out.println(x);
x = 4;
System.out.println(x);
}
}
4
x
Lecture B
Slide 15 of 69.
VariableExample Program (6)
public class VariableExample {
public static void main(String[] args){
int x;
x = 3;
System.out.println(x);
x = 4;
System.out.println(x);
}
}
4
x
Lecture B
Slide 16 of 69.
Primitive Data Types
• A data type is defined by a set of values and the
operators you can perform on them
• The Java language has several predefined types, called
primitive data types
• The following reserved words represent the eight different
primitive data types:

byte, short, int, long, float, double, boolean,
char
Lecture B
Slide 17 of 69.
Integers
• There are four integer data types. They differ by the
amount of memory used to store them
Type
Bits
Value Range
byte
8
-127 … 128
short
16
-32768 … 32767
int
32
about 9 decimal digits
long
65
about 18 decimal digits
Lecture B
Slide 18 of 69.
Floating Point
• There are two floating point types
Type
Bits
Range
(decimal digits)
Precision
(decimal digits)
float
32
38
7
double
64
308
15
Lecture B
Slide 19 of 69.
Characters
• A char value stores a single character from the Unicode
character set
• A character set is an ordered list of characters

‘A’, ‘B’, ‘C’, … , ‘a’, ‘b’, … ,‘0’, ‘1’, … , ‘$’, …
• The Unicode character set uses 16 bits per character,
allowing for 65,536 unique characters
• It is an international character set, containing symbols and
characters from many world languages
• The ASCII character set is a subset of Unicode
• ASCII is the current standard (outside of Java)
Lecture B
Slide 20 of 69.
Boolean
• A boolean value represents a true/false condition.
• It can also be used to represent any two states, such as a
light bulb being on or off
• The reserved words true and false are the only
valid values for a boolean type
Lecture B
Slide 21 of 69.
Variable Declarations
• The syntax of a variable declaration is
data-type variable-name;
• For example
int total;
• Multiple variables can be declared on the same line
long total, count, sum;
• Variables can be initialized (given an initial value) in the
declaration
int total = 0, count = 20;
double unitPrice = 57.25;
Lecture B
Slide 22 of 69.
Variable Declaration Example
public class DeclarationExample {
public static void main (String[] args) {
int weeks = 14;
long numberOfStudents = 120;
double averageFinalGrade = 78.6;
System.out.println(weeks);
System.out.println(numberOfStudents);
System.out.println(averageFinalGrade);
}
}
Lecture B
Slide 23 of 69.
More Variable Examples
double pi, conversionRate, temprature;
long salary;
boolean isOn;
char c;
pi = 3.14159;
isOn = false;
c = ‘A’;
salary = 34000;
isOn = true;
Lecture B
Slide 24 of 69.
Constants
• We may declare that a variable is a constant and its value
may never change.
final double PI = 3.14159;
final int CHINA_OLYMPICS_YEAR = 2008;
• Advantages:



readability
efficiency
error detection
Lecture B
Slide 25 of 69.
Lesson 2 - Basic Java Elements
Unit B3 - Expressions
Lecture B
Slide 26 of 69.
Assignment Statements
• An assignment statement takes the following form
variable-name = expression;
• The expression is first evaluated
• Then, the result is stored in the variable, overwriting the
value currently stored in the variable
Lecture B
Slide 27 of 69.
Arithmetic Operators
• An operator is a mapping that maps one or more values
to a single value:
• Binary Operators:
a
a
a
a
a
+
*
/
%
b
b
b
b
b
adds a and b
subtracts b from a
multiplies a and b
divides a by b
the reminder of divining a by b
• Unary Operator:
-a
The negation of a
Lecture B
Slide 28 of 69.
Pounds to Kg conversion
public class PoundsToKg {
public static void main(String[] args){
double weightInPounds = 200.0;
final double KILOS_IN_POUND = 0.455;
double weightInKg;
weightInKg = weightInPounds * KILOS_IN_POUND ;
System.out.println(weightInKg);
}
}
Lecture B
Slide 29 of 69.
Pounds to Kg conversion 2
public class PoundsToKg2 {
public static void main(String[] args){
final double KILOS_IN_POUND = 0.455;
System.out.println(200.0 * KILOS_IN_POUND);
}
}
Lecture B
Slide 30 of 69.
Integer Division
• When division is performed on integers (byte, short,
int, long), the result is truncated to an integer.
int j = 5;
double x = 5.0, y;
System.out.println(j / 2); // 2
System.out.println(x / 2.0); // 2.5
System.out.println(5 / 2); // 2
y = j / 2 ; // 2
Lecture B
Slide 31 of 69.
Complex Expressions
• Expressions can combine many operators and operands
• Examples:
x
-34
weight * 2.73
2 * PI * r
a - (7 – b)
1 + 2 + 3 + 4
(x + y) * (2 - z + (5 - q)) * -(1-x)
Lecture B
Slide 32 of 69.
Operator Precedence
• Multiplication, division, and remainder (%) have a higher
precedence than addition and subtraction.
• Operators with same precedence evaluate from left to
right.
• Parenthesis can be used to force order of evaluation.
Lecture B
Slide 33 of 69.
Operator Precedence Examples
Expression
Result
10 - 7 - 1
2
10 - (7 - 1)
4
1 + 2 * 3
7
(1 + 2) * 3
9
1 - 2 * 3 + 4 * 5
15
Lecture B
Slide 34 of 69.
Conversions
• Data types can be mixed in an expression
• When the expression is evaluated one type is converted
to another
• Data is converted to a wider type in three cases



assignment conversion
arithmetic promotion
casting
• Can be converted to a narrower type only by casting
• List of types from narrowest to widest:
Narrow
…
Wide
byte short int long float double
Lecture B
Slide 35 of 69.
Conversion Examples
double f, x;
int j;
f = 5;
f = 5.0 / 2;
f = x * j;
f = 5 / 2;
f = (float) j / 5;
j = (int) f;
j = (int) 5.0 / 2.0;
Lecture B
Slide 36 of 69.
Lesson 2 - Basic Java Elements
Unit B4 - Objects and Method Invocation
Lecture B
Slide 37 of 69.
Reference Types
• Variables can be declared to be of an object type. In this
case they hold a reference to an object of this type (class).
Turtle t;
String myName;
Date today;
t
myName
today
Memory
Lecture B
Slide 38 of 69.
Creating Objects
• Objects are created by invoking a constructor of the class.
Constructors may accept parameters.
Date today;
today = new Date(12345);// mSec since 1.1.1970
Turtle t = new Turtle();
Lecture B
Slide 39 of 69.
Creating Objects (2)
• Objects are created by invoking a constructor of the class.
Constructors may accept parameters.
Date today;
today = new Date(12345);// mSec since 1.1.1970
Turtle t = new Turtle();
today
Lecture B
Slide 40 of 69.
Creating Objects (3)
• Objects are created by invoking a constructor of the class.
Constructors may accept parameters.
Date today;
today = new Date(12345);// mSec since 1.1.1970
Turtle t = new Turtle();
today
12345
Lecture B
Slide 41 of 69.
Creating Objects (4)
• Objects are created by invoking a constructor of the class.
Constructors may accept parameters.
Date today;
today = new Date(12345);// mSec since 1.1.1970
Turtle t = new Turtle();
t
today
12345
Lecture B
Slide 42 of 69.
Strings
Strings are objects that are treated by the compiler in special
ways:


Can be created directly using “xxxx”
Can be concatenated using +
String myName = “John Jones”;
String hello;
hello = “Hello World”;
hello = hello + “!!!!”;
int year = 2008;
String s = “See you in China in “ + year;
Lecture B
Slide 43 of 69.
Method invocations
• You may invoke methods on an object. Methods may
receive parameters.
• Methods may also return values.
Turtle leonardo = new Turtle();
leoardo.moveForward(100);
String lennon = “John Lennon”;
int len = lennon.length();
char initial = lennon.charAt(5);
Lecture B
Slide 44 of 69.
APIs
• To use an object you only need to know its application
programmer interface (API).
• The API of an object class includes a description of:


all available constructors and methods and what they do
the parameters they take and the values that they return
• The API is usually given in a special format called
javadoc.
Lecture B
Slide 45 of 69.
Javadoc example
Lecture B
Slide 46 of 69.
Javadoc example (2)
Lecture B
Slide 47 of 69.
Class Libraries
• A class library is a collection of classes that we can use
when developing programs
• There is a standard class library that comes with every
Java environment.
• Class Libraries are organized into packages

java.net, java.lang, java.io, ...
• To use classes from a package you must either



Import the package
import java.io.*;
File f = new File(“John”);
Or, use a fully qualified class name
java.io.File f = new java.io.File (“John”);
Lecture B
Slide 48 of 69.
RandomNumbers.java
import java.util.Random;
public class RandomNumbers {
public static void main (String[] args){
Random generator = new Random();
int num = generator.nextInt();
System.out.println ("A random int: " + num);
num = generator.nextInt();
System.out.print(“Another one: “ + num);
}
}
Lecture B
Slide 49 of 69.
Lesson 2 - Basic Java Elements
Unit B5 - Input and Output
Lecture B
Slide 50 of 69.
Types of Input and Output (I/O)
• Terminal-based I/O


System.out.println()
System.in.xxxxx()
• Graphic User Interface

Windows, Buttons, Mouse, …
• Stream based I/O

Files, Web, Communication, Terminal-based I/O
• In this course we also provide our own classes:

InputRequestor, OutputWindow
Lecture B
Slide 51 of 69.
The InputRequestor Class
• To use the input requestor, you must first create the
object:
InputRequestor inp = new InputRequestor();
• Then, you may use it to read primitive data types:
int i = inp.requestInt();
int i = inp.requestInt(“Enter age:”);
float f = inp.requestFloat();
Lecture B
Slide 52 of 69.
InputRequestor Behaviour
• A window will pop up every time you use the
requestXXX() method:
• The window will disappear only after you have typed a
legal input. The method returns this input.
Lecture B
Slide 53 of 69.
The OutputWindow Class
• Just as System.out enables you to display output in the
MS-DOS window, you may display output in your own
window.
• Create an OutputWindow object:
OutputWindow outwin = new OutputWindow();
• Useful methods in the output window:



println() - just as regular println().
clear() - clears the output window.
showMessage() - pop up a message on the desktop.
Lecture B
Slide 54 of 69.
The Output Window
Lecture B
Slide 55 of 69.
The showMessage() Pop-up Window
Lecture B
Slide 56 of 69.
Circle Area and Circumference
public class CircleCalc {
public static void main(String[] args){
final double PI = 3.14159;
InputRequestor in = new InputRequestor();
OutputWindow out = new OutputWindow();
double r = in.requestDouble("Radius: ");
out.println("Radius = " + r);
out.println("Area = " + PI * PI * r);
out.println("Circumference = " + 2 * PI * r);
}
}
Lecture B
Slide 57 of 69.
Lesson 2 - Basic Java Elements
Unit B6 - Introduction to Applets and Graphics
Lecture B
Slide 58 of 69.
The Web
Lecture B
Slide 59 of 69.
My First HTML Example
<H3>My First HTML File</H3>
<p>
Hello World!!!
<p>
Here is a link to
<a href=“http://www.cnn.com”>CNN</a>!
Lecture B
Slide 60 of 69.
My First Web Page
Lecture B
Slide 61 of 69.
Running programs in a web page
• Java was invented so that running programs can be
embedded in web-pages
• Such Java programs are called Applets
• This had to solve some problems

Platform independence
• browsers have a built-in Java byte-code interpreter

Security
• the program runs in the browser in a sandbox
Lecture B
Slide 62 of 69.
A Web Page with an Embedded Applet
Lecture B
Slide 63 of 69.
Writing Applets
• An Applet does not have a main method.
• Instead, it has a set of methods that control the interaction
with the user.
• An Applet inherits this interface from the
java.applet.Applet class
• The paint method has to paint the screen


It receives a Graphics object, and uses it to paint
The Graphics class has various drawXXX() methods
Lecture B
Slide 64 of 69.
Smiley.java
import java.applet.Applet;
import java.awt.*;
public class Smiley extends Applet{
public void paint (Graphics page){
page.setColor(Color.yellow);
page.fillOval(50,50,300,300);
page.setColor(Color.black);
page.fillOval(125,125,50,50);
page.fillOval(225,125,50,50);
page.drawLine(150,275,250,275);
}
}
Lecture B
Slide 65 of 69.
Smiley.HTML
<H3>My Smiley Applet</H3>
<applet code=”Smiley.class" width=400 height=400>
</applet>
<p>
Above this text you should see Smiley!!
• The Smiley.class file should be placed in the same
directory with Smiley.HTML
Lecture B
Slide 66 of 69.
Smiley
Lecture B
Slide 67 of 69.
Graphics Coordinates
10
150
X
20
45
Y
page.drawLine (10, 20, 150, 45);
Lecture B
Slide 68 of 69.
Drawing an Oval
175
X
20
80
50
Y
page.drawOval (175, 20, 50, 80);
Lecture B
Slide 69 of 69.