Você está na página 1de 96

Introduction to Java Programming

Contents
The Structure of Java Programs

Keywords and Identifiers


Data Types
Integral, Textual, Floating-Point Enumerations

Variables, Declarations, Assignments, Operators

Contents

Expressions and Statements


Logical Statements
Loop Statements

Console Input and Output Arrays and Array Manipulation Using the Java API Documentation

Programming in Java

The Java API


A set of runtime libraries

Available on any JVM


Provide platform-independent standard
Classes and interfaces Security

Platform independence difficulties

Implementation is specific to the host platform

What is Java API Documentation?


Java documentation is HTML based
Also called "Java Platform Standard Edition API Specification"

Complete documentation of all standard classes and methods


Descriptions of all the functionality Links to related articles

Use local copy or the Web version from http://java.sun.com/javase/6/docs/api/

Java API Documentation

A Java Program
Java Program

Java methods (Java API) native methods (dynamic libraries)

host operating system

The Java Programming Language


Quite general-purpose Boosts developer productivity Combines proven techniques Software technologies
Object-orientation Multi-threading Structured error-handling Garbage collection Dynamic linking and extension

Writing Java Programs


Write custom source code
In the Java programming language
Using the Java API

Compile the source code


Using the javac compiler command Compiles to bytecodes

Run the compiled code


Using the java launcher command

Java Program Example


HelloJava.java

public class HelloJava { public static void main(String[] args) { System.out.println("Hello, Java!"); } }

javac HelloJava.java

java cp . HelloJava

Hello, Java!

Typical Errors
Compile-Time Errors
javac: Command not found HelloJava.java:10: Method printl(java.lang.String) not found in class java.io.PrintStream HelloJava.java:4: Public class HelloJava must be defined in a file called "HelloJava.java".

Typical Errors
Runtime Errors
Cant find class HelloJava Exception in thread "main" java.lang.NoClassDefFoundError: HelloJava/class

Structure of Java Programs

The Source File Contents


Java source code files can have three "toplevel" elements:
An optional package declaration Any number of import statements Class and interface declarations
package jeecourse.example; import java.io.*; public class SomeClass { // ... }

Classes and Packages


Classes are the main program unit in Java
Contain the source code of the program logic Can define fields Can contain methods (subprograms)

Packages are containers for classes


Can be nested hierarchically Each package can contain multiple classes

Important Java Packages


Important packages within the Java class library are:
java.lang java.util java.io

java.text
java.awt java.net java.applet

Java Programs
Java programs are sets of class definitions The main() method is the entry point for standalone Java applications The signature for main() is:
public static void main(String[] args)

The name args is purely arbitrary:


Any legal identifier may be used, provided the array is a single-dimension array of String objects

Programs, Classes, and Packages Example


package jeecourse.example; import java.io.*; public class SomeClass { private static int mValue = 5; public static void printValue() { System.out.println("mValue = " + mValue); }

public static void main(String[] args) { System.out.println("Some Class"); printValue(); }


}

Keywords, Identifiers, Data Types

Keywords
A keyword is a word whose meaning is defined by the programming language Anyone who claims to be competent in a language must at the very least be familiar with that languages keywords

Javas keywords and other special-meaning words are listed in the next slide

Java Language Keywords


abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while

Reserved Words
You may notice null, true, and false do not appear anywhere on the keywords list true, false, and null are not keywords but they are reserved words
You cannot use them as names in your programs either

Identifiers
Names given to a variable, method, field, class, interface, etc. Can start with a letter, underscore(_), or dollar sign($) Can contain letters, $, _, and digits Case sensitive Have no maximum length Examples:
userName, $app_name, __test, value, totalRevenue, location$

Primitive Data Types


A primitive is a simple non-object data type that represents a single value Javas primitive data types are:
boolean char

byte, short, int, long


float, double

Primitive Data Types


Type Effective Size (bits)

byte
short int long

8
16 32 64

Variables of type boolean may take only the values true or false Their representation size might vary

float
double char

32
64 16

Boolean Type
The boolean data type has two literals, true and false For example, the statement:
boolean truth = true;

declares the variable truth as boolean type and assigns it a value of true

Textual Types: char


Represents a 16-bit Unicode character Must have its literal enclosed in single quotes( ) Uses the following notations:
'a' The letter a '\t' A tab '\n' A new line character '\u????' A specific Unicode character, ????, is replaced with exactly four hexadecimal digits, e.g. '\u1A4F'

Integral Types: byte, short, int, and long


Uses three forms decimal, octal, or hexadecimal, e. g.
2 The decimal value is two 077 The leading zero indicates an octal value 0xBAAC The leading 0x indicates a hexadecimal value

The default integer values are int Defines long by using the letter L or l:
long value = 1234L;

Ranges of the Integral Primitive Types


Type byte short int long Size 8 bits 16 bits 32 bits 64 bits Minimum -27 -215 -231 -263 Maximum 27 1 215 1 231 1 263 1

Floating Point Types: float and double


Default is double Floating point literal includes either a decimal point or one of the following:
E or e (add exponential value) F or f (float) D or d (double)

Examples:
3.14 A simple floating-point value (a double) 6.02E23 A large floating-point value 2.718F A simple float size value 123.4E+306D A large double value with redundant D

Ranges of the FloatingPoint Primitive Types


Type float double char Size 32 bits 64 bits 16 bits Minimum +/- 1.40-45 +/- 4.94-324 0 Maximum +/- 3.40+38 +/- 1.79+308 216 - 1

Non-numeric Floating-Point Values


Float.NaN Float.NEGATIVE_INFINITY

Float.POSITIVE_INFINITY
Double.NaN Double.NEGATIVE_INFINITY Double.POSITIVE_INFINITY

Textual Types: String


Is not a primitive data type
It is a class

Has its literal enclosed in double quotes (" ") Example:


"The quick brown fox jumps over the lazy dog."

Can be used as follows:


String greeting = "Good Morning !! \n"; String errorMsg = "Record Not Found!";

Values and Objects


Primitive Data Types
Are value types Contain directly their values Examples: int, float, char, boolean

Objects
Are reference types Contain a pointer (memory address) of their values Examples: String, Object, Date

Values vs. Objects


Consider the following code fragment:
int x = 7; int y = x; String s = "Hello"; String t = s;

Two variables refer to a single object:


x y s t
7 7 0x01234567 0x01234567

Heap (dynamic memory)


"Hello" 0x01234567

Enumerations (enums)
Enumerations are special types that
Get values from a given set of constants
Are strongly typed Compiled to classes that inherit java.lang.Enum
public enum Color { WHITE, RED, GREEN, BLUE, BLACK } ... Color c = Color.RED;

Enumerations (enums)
Allow using if and switch:
switch (color) { case WHITE: System.out.println(""); break; case RED: System.out.println(""); break; ... } if (color == Color.RED) { ... }

Variables, Declarations, Assignments, Operators

Variables, Declarations, and Assignments


Variables are names places in the memory that contain some value
Variables have a type (int, float, String, ...) Variables should be declared before use Variables can be assigned

Examples:
int i; // declare variable int value = 5; // declare and assign variable i = 25; // assign a value to a variable that is already declared

Variables, Declarations, and Assignments Examples


public class Assignments { public static void main(String args []) { int x, y; // declare int variables float z = 3.414f; // declare and assign float double w = 3.1415; // declare and assign double boolean b = true; // declare and assign boolean char ch; // declare character variable String str; // declare String variable String s = "bye"; // declare and assign String ch = 'A'; // assign a value to char variable str = "Hi out there!"; // assign value to String x = 6; // assign value to int variable y = 1000; // assign values to int variable ... } }

Variables and Scope


Local variables are:
Variables that are defined inside a method and are called local, automatic, temporary, or stack variables Created when the method is executed and destroyed when the method is exited Variables that must be initialized before they are used or compile-time errors will occur

Operators
Category Unary Arithmetic Shift Comparison Operators ++ -- + - ! ~ (type) * / % + << >> >>> < <= > >= instanceof == !=

Bitwise Short-circuit Conditional Assignment

& ^ | && || ?: = op=

The Ordinal Comparisons Operators: <, <=, >, and >=


The ordinal comparison operators are:
Less than: <
Less than or equal to: <= Greater than: > Greater than or equal to: >=

The Ordinal Comparisons Operators Example


int p = 9; int q = 65; int r = -12; p < q true f < q true f <= c true

float f = 9.0F;
char c = A;

c > r true
c >= q true

Short-Circuit Logical Operators


The operators are && (AND) and || (OR) These operators can be used as follows:
MyDate d = null;
if ((d != null) && (d.day() > 31)) { // Do something } boolean goodDay = (d == null) || ((d != null) && (d.day() >= 12));

String Concatenation with +


The + operator:
Performs String concatenation Produces a new String as a result:
String salutation = "Dr. "; String name = "Pete " + "Seymour"; System.out.println(salutation + name + 5);

First argument must be a String object


Non-strings are converted to String objects automatically

The Unary Operators


Unary operators take only a single operand and work just on that Java provides seven unary operators:
The increment and decrement operators: ++ and - The unary plus and minus operators: + and -

The bitwise inversion operator: ~


The boolean complement operator: ! The cast operator: ()

The Cast Operator: (type)


Implicit type conversions are possible when no information can be lost
E.g. converting int long

Casting is used for explicit conversion of the type of an expression Casts can be applied to change the type of primitive values
For example, forcing a double value into an int variable like this:
int circum = (int)(Math.PI * diameter);

The Multiplication and Division Operators: * and /


The * and / operators perform multiplication and division on all primitive numeric types and char Integer division will generate an ArithmeticException when attempting to divide by zero
int a = 5; int value = a * 10;

The Bitwise Operators


The bitwise operators: &, ^, and | provide bitwise AND, eXclusive-OR (XOR), and OR operations, respectively They are applicable to integral types
int first = 100; int second = 200;

int xor = first ^ second;


int and = first & second;

Operator Evaluation Order


In Java, the order of evaluation of operands in an expression is fixed left to right Consider this code fragment:
int[] a = {4, 4}; int b = 1; a[b] = b = 0;

In this case, it might be unclear which element of the array is modified:


Which value of b is used to select the array element, 0 or 1

Expressions and Statements

Expressions
Expression is a sequence of operators, variables and literals that is evaluated to some value
int r = (150-20) / 2 + 5; // Expression for calculation of // the surface of the circle double surface = Math.PI * r * r; // Expression for calculation of // the perimeter of the circle double perimeter = 2 * Math.PI * r;

Statements
Statements are the main programming constructs Types of statements
Simple statements
The smallest programming instructions

Block statements { ... }


Conditional statements (if, if-else, switch)

Loop statements (for, while, do/while)

Statements and Blocks


A statement is a single line of code terminated by a semicolon(;)
salary = days * daySalary;

A block is a collection of statements bounded by opening and closing braces:


{ x = x + 1; y = y + 1; }

You can nest block statements

Conditional Statements
The if, if-else statements:
if (boolean condition) { statement or block; }

if (boolean condition) { statement or block; } else { statement or block; }

If Statement Example
public static void main(String[] args) { int radius = 5; double surface = Math.PI * radius * radius; if (surface > 100) { System.out.println("The circle is too big!"); } else if (surface > 50) { System.out.println( "The circle has acceptable size!"); } else { System.out.println( "The circle is too small!"); } }

Conditional Statements
The switch statement
switch (expression) { case constant1: statements; break; case constant2: statements; break; default: statements; break; }

The switch Statement Example


int dayOfWeek = 3; switch (dayOfWeek) { case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; ... default: System.out.println("Invalid day!"); break; }

Looping Statements
The for statement:
for (init_expr; boolean testexpr; alter_expr) { statement or block; }

Example:
for (int i = 0; i < 10; i++) { System.out.println("i=" + i); } System.out.println("Finished!")

Looping Statements
The enhanced for statement:
for (Type variable : some collection) { statement or block; }

Example:
public static void main(String[] args) { String[] towns = new String[] { "Sofia", "Plovdiv", "Varna" }; for (String town : towns) { System.out.println(town); } }

Looping Statements
The while loop:
while (boolean condition) { statement or block; }

Examples:
int i=100; while (i>0) { System.out.println("i=" + i); i--; } while (true) { // This is an infinite loop }

Looping Statements
The do/while loop:
do { statement or block; } while (boolean condition);

Example:
public static void main(String[] args) { int counter=100; do { System.out.println("counter=" + counter); counter = counter - 5; } while (counter>=0); }

Special Loop Flow Control


Some special operators valid in loops:
break [label]; continue [label]; label: statement; // Where statement should be a loop

Example (breaking a loop):


for (int counter=100; counter>=0; counter-=5) { System.out.println("counter=" + counter); if (counter == 50) break; }

Special Loop Flow Control Examples


Example (continuing a loop):
for (int counter=100; counter>=0; counter-=5) { if (counter == 50) { continue; } System.out.println("counter=" + counter); }

Special Loop Flow Control Examples


Example (breaking a loop with a label):
outerLoop: for (int i=0; i<50; i++) { for (int counter=100; counter>=0; counter-=5) { System.out.println("counter=" + counter); if ((i==2) && (counter == 50)) { break outerLoop; } } }

Comments
Three permissible styles of comment in a Java technology program are:
// comment on one line /* comment on one or more lines */

/** documenting comment */

Console Input and Output

Console Input/Output
The input/output from the console is done through 3 standard streams
System.in the standard input System.out the standard output System.err the standard error output

To facilitate some operations additional classes should be involved


Scanner BufferedReader, InputStreamReader

Printing to the Console


System.out.print(...)
Can take as input different types
String, int, float, Object, ...

Non-string types are converted to String

System.out.println(...)
Like print(...) but moves to the next line
System.out.print(3.14159); System.out.println("Welcome to Java"); int i=5; System.out.println("i=" + i);

Reading from the Console


First construct a Scanner that is attached to the standard input stream System.in
Scanner in = new Scanner(System.in);

Then use various methods of the Scanner class to read input


nextLine() String Reads a line of input

next() String
Reads a single word delimited by whitespace

Reading from the Console


Scanner more methods
nextInt() int
Reads an int value. Throws InputMismatchException on error

nextLong() long

nextFloat() float
Reads a float value. Throws InputMismatchException on error

nextDouble() double

Scanner Example
import java.util.Scanner;
public class ScannerDemo { public static void main(String[] args) { Scanner console = new Scanner(System.in);

// Get the first input System.out.print("What is your name? "); String name = console.nextLine();
// Get the second input System.out.print("How old are you? "); int age = console.nextInt(); // Display output on the console System.out.println("Hello, " + name + ". " + "Next year, you'll be " + (age + 1));

Formatting Output
System.out.printf(<format>, <values>)

Like the printf function in C language


String name = "Nakov"; int age = 25; System.out.printf( "My name is %s.\nI am %d years old.", name, age);

Some formatting patterns


%s Display as string %d Display as number %f Display as float %t Display as date

* For more details see java.util.Formatter

Arrays and Array Manipulation

Creating Arrays
To create and use an array, follow three steps: 1. Declaration 2. Construction 3. Initialization

4. Access to Elements

Array Declaration
Declaration tells the compiler the arrays name and what type its elements will be For example:
int[] ints; Dimensions[] dims; float[][] twoDimensions;

The square brackets can come before or after the array variable name:
int ints[];

Array Construction
The declaration does not specify the size of an array
Size is specified at runtime, when the array is allocated via the new keyword For example:
int[] ints; // Declaration ints = new int[25]; // Construction

Declaration and construction may be performed in a single line:


int[] ints = new int[25];

Array Initialization
When an array is constructed, its elements are automatically initialized to their default values
These defaults are the same as for object member variables Numerical elements are initialized to 0 Non-numeric elements are initialized to 0like values, as shown in the next slide

Elements Initialization
Element Type byte int float char object reference short long double boolean Initial Value 0 0 0.0f \u0000 null 0 0L 0.0d false

Array Elements Initialization


Initial values for the elements can be specified at the time of declaration and initialization:
float[] diameters = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f};

The array size is inferred from the number of elements within the curly braces

Access to Elements
Accessing array elements:
int[] arr = new int[10]; arr[3] = 5; // Writing element int value = arr[3]; // Reading element

Elements access is range checked


int[] arr = new int[10]; int value = arr[10]; // ArrayIndexOutOfBoundsException

Arrays has field length that contains their number of elements

Arrays Example
// Finding the smallest and largest // elements in an array int[] values = {3,2,4,5,6,12,4,5,7}; int min = values[0]; int max = values[0]; for (int i=1; i<values.length; i++) { if (values[i] < min) { min = values[i]; } else if (values[i] > max) { max = values[i]; } } System.out.printf("MIN=%d\n", min); System.out.printf("MAX=%d\n", max);

Multi-dimensional Arrays
Multidimensional arrays in Java are actually arrays of arrays Defining matrix:
int[][] matrix = new int[3][4];

Accessing matrix elements:


matrix[1][3] = 42;

Getting the number of rows/columns:


int rows = matrix.length; int colsInFirstRow = matrix[0].length;

Multi-dimensional Arrays
Consider this declaration plus initialization:
int[][] myInts = new int[3][4];

Its natural to assume that the myInts contains 12 ints and to imagine them as organized into rows and columns, as shown:
WRONG!

Multi-dimensional Arrays
CORRECT!

The right way to think about multidimension arrays

Multi-dimensional Arrays
The subordinate arrays in a multidimension array dont have to all be the same length Such an array may be created like this:
int[][] myInts = { {1, 2, 3}, {91, 92, 93, 94}, {2001, 2002} };

Multi-dimensional Arrays Example


// Finding the sum of all positive // cells from the matrix
int[][] matrix = {{2,4,-3}, {8,-1,6}}; int sum = 0; for (int row=0; row<matrix.length; row++) { for (int col=0; col<matrix[row].length; col++) { if (matrix[row][col] > 0) { sum += matrix[row][col]; } } } System.out.println("Sum = " + sum);

Introduction to Java Programming

Questions?

Exercises
1. Write an expression that checks if given integer is odd or even. 2. Write a boolean expression that for given integer checks if it can be divided (without remainder) by 7 and 5. 3. Write an expression that checks if a given integer has 7 for its third digit (right-to-left). 4. Write a boolean expression for finding if the bit 3 of a given integer is 1 or 0. 5. Write a program that for a given width and height of a rectangle, outputs the values of the its surface and perimeter.

Exercises
6. Write a program that asks the user for a fourdigit number abcd and:
1. 2. 3. 4. Calculates the sum of its digits Prints its digits in reverse order: dcba Puts the last digit in at the front: dabc Changes the position of the second and third digits: acbd

7. Write an expression that checks if a given number n (n 100) is a prime number. 8. Write a boolean expression that returns true if the bit at position p in a given integer v is 1. Example: if v=5 and p=1, return false.

Exercises
9. Write a program that reads 3 integer numbers from the console and prints their sum. 10.Write a program that reads the radius r of a circle and prints its perimeter and area.

11.A company has name, address, phone number, fax number, Web site and manager. The manager has first name, last name and a phone number. Write a program that reads the information about a company and its manager and prints it on the console.

Exercises
12.Write a program that reads from the console two integer numbers and prints how many numbers exist between them, such that the reminder of the division by 5 is 0.

13.Write a program that gets two numbers from the console and prints the greater of them. Dont use if statements.
14.Write a program that reads 5 numbers and prints the greatest of them. 15.Write a program that reads 5 numbers and prints their sum.

Exercises
16.Write an if statement that examines two integer variables and exchanges their values if the first one is greater than the second one. 17.Write a program that shows the sign (+ or -) of the product of three real numbers without calculating it. Use sequence of if statements. 18.Write a program that finds the biggest of three integers using nested if statements. 19.Write a program that sorts 3 real values in descending order using nested if statements.

Exercises
20.Write program that for a given digit (0-9) entered as input prints the name of that digit (in Bulgarian). Use a switch statement.

Você também pode gostar