Download Data Types - NYU Computer Science

Document related concepts
no text concepts found
Transcript
1
Introduction to Computers and Programming in
JAVA: V22.0002
Primitive Data Types and Operations
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
2
Primitive Data Types and Operations
• Identifiers, Variables, and Constants
• Primitive Data Types
– byte, short, int, long, float, double, char, boolean
• Expressions
• Mathematical Operators
• Syntax Errors, Runtime Errors, and Logic Errors
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
3
Reserved words:
Certain words have special meaning in Java and cannot be used as
identifiers. These words are called reserved words.
So far we have seen the following reserved words:
public
import
static
void
class
We will see a complete list of reserved words soon.
Use of the words null, true and false is also prohibited.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
4
Lets review Identifiers
• An identifier is a sequence of characters
that consist of letters, digits, underscores
(_), and dollar signs ($).
• An identifier must start with:
– a letter
– an underscore (_)
– or a dollar sign ($).
• It cannot start with a digit.
• An identifier cannot be a reserved word.
– (See Appendix A, “Java Keywords,” for a list of reserved words).
• An identifier cannot be true, false, or null.
• An identifier can be of any length.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
5
Programming Style and Documentation
•
•
•
•
Appropriate Comments
Naming Conventions
Proper Indentation and Spacing Lines
Block Styles
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
6
Appropriate Comments
Include a comment at the beginning of each program:
–
–
–
–
to explain what the program does
its key features
its supporting data structures
and any unique techniques it uses.
• Include your name
• class section
• instruction
• date
• and a brief description at
program.
the
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
beginning
of
the
7
Proper Indentation and Spacing
• Indentation
– Indent two spaces.
• Spacing
– Use blank line to separate segments of the code.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
8
Block Styles
Use a consistent style for braces.
Next-line
style
public class Test
{
public static void main(String[] args)
{
System.out.println("Block Styles");
}
}
public class Test {
public static void main(String[] args) {
System.out.println("Block Styles");
}
}
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
End-of-line
style
9
Programming Errors
• Syntax Errors
– Detected by the compiler
• Runtime Errors
– Causes the program to abort
• Logic Errors
– Produces incorrect result
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
10
Syntax Errors
• Caused when the compiler cannot recognize a
statement.
• These are violations of the language
• The compiler normally issues an error message to
help the programmer locate and fix it
• Also called compile errors or compile-time errors.
• For example, if you forget a semi-colon, you will
get a syntax error.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
11
Run-time Errors
• These occur once a program is running; typically
it will “crash” or simply abort.
• The compiler cannot identify these errors at
compile time.
• For example, a statement which calls for division
by zero causes a run-time error: the compiler
would not detect it but the program cannot run in
this case.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
12
Naming Conventions
• Choose meaningful and descriptive names.
• For Variables, class names and methods:
– Use lowercase.
– If the name consists of several words, concatenate all in
one, use lowercase for the first word, and capitalize the first
letter of each subsequent word in the name.
– For example, the variables radius and area, and the
method computeArea.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
13
Naming Conventions, cont.
• Class names:
– Capitalize the first letter of each word in the
name. For example, the class name
ComputeArea.
• Constants:
– Capitalize all letters in constants. For
example, the constant PI.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
14
Variables
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
15
Memory Concepts
• Variables
– Every variable has a name, a type, a size and a value
• Name corresponds to location in memory
– When new value is placed into a variable, it replaces (and
destroys) the previous value
– Reading variables from memory does not change them
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
16
Bucket Analogy
• It is useful to think of a variable as a bucket of
data.
• The bucket has a unique name, and can only hold
certain kinds of data.
200
balance
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
balance is a variable
containing the value
200, and can contain
only integers.
17
Memory Concepts
• Visual Representation
– sum = 0;
– sum = 3;
– sum = 2;
sum
0
sum
3
sum
2
– Sum = number1 + number2; after execution of statement
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
18
Arithmetic
Op era to r(s)
*
/
%
+
Fig. 2.17
Op era tio n(s)
Multiplication
Division
Remainder
Addition
Subtraction
Ord er o f eva lua tio n (p rec ed enc e)
Evaluated first. If there are several of this type
of operator, they are evaluated from left to
right.
Evaluated next. If there are several of this type
of operator, they are evaluated from left to
right.
Prec ed enc e o f a rithm etic o p era to rs.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
19
Arithmetic
• Arithmetic calculations used in most programs
– Usage
• * for multiplication
• / for division
• +, • No operator for exponentiation
• Integer division truncates remainder
7 / 5 evaluates to 1
– The Remainder operator: % returns the remainder
7 % 5 evaluates to 2
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
20
Arithmetic
• Operator precedence
– Some arithmetic operators act before others (i.e.,
multiplication before addition)
• Use parenthesis when needed
– Example: Find the average of three variables a, b and c
• Do not use: a + b + c / 3
• Use: ( a + b + c ) / 3
– Follows PEMDAS
• Parentheses, Exponents, Multiplication, Division, Addition,
Subtraction (aka “Please excuse my dear Aunt Sally”)
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
21
Variable Declaration
• Java is a “strongly typed” language.
• Before you use a variable, you must declare it.
• Examples:
/* Creates an integer variable */
int number;
/* Creates a float variable */
float price;
/* Creates a character variable */
char letter;
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
22
Declaring Variables
int x;
// Declare x to be an
// integer variable;
double radius; // Declare radius to
// be a double variable;
char a;
// Declare a to be a
// character variable;
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
23
Data Types:
• integers: the simplest data type in Java. They are
used to hold positive and negative whole numbers,
e.g. 5, 25, -777, 1.
• doubles: Used to hold fractional or decimal
values, e.g. 3.14, 10.25.
• chars: Used to hold individual characters, e.g.
‘c’, ‘e’, ‘1’, ‘\n’
• We will explore each one in detail later this
semester as well as some additional primitive data
types.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
24
Declaring and Initializing
in One Step
• int x = 1;
• double d = 1.4;
• float f = 1.4;
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
25
Numerical Data Types
byte
8 bits
short
16 bits
int
32 bits
long
64 bits
float
32 bits
double
64 bits
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
26
Assignment Statements
x = 1;
// Assign 1 to x;
radius = 1.0;
// Assign 1.0 to radius;
a = 'A';
// Assign 'A' to a;
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
27
Important Point about Declarations
• You must make a declaration immediately
following the left brace following the main
method.
– at the beginning of a function and before any executable
statements or else you get a syntax error.
{
declaration section
…
statement section
…
}
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
28
Example 1: Basic Arithmetic
/*
Illustrates Integer Variables */
public class addition
{
public static void main(String[] args)
{
int x, y, z;
Variable Declaration
// Specify values of x and y
x = 2;
y = 3;
// add x and y and place the result in z variable
z = x + y;
System.out.println("x has a value of " + x);
System.out.println("y has a value of " + y);
System.out.println("The sum of x + y is " + z);
System.exit(0);
}
}
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
Assignment Statements
29
Printing Variables
• To print a variable, use the System.out.print or
System.out.println statement as you would for a
string.
•
•
System.out.print (x);
•
System.out.println (x);
•
System.out.println ("x: " + x);
•
Here the “+” symbol is
for string
concatenation.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
30
Assignment Statements
• Assignments statements enable one to initialize variables
or perform basic arithmetic.
x = 2;
y = 3;
z = x + y;
• Here, we simply initialize x and y and store their sum
within the variable z.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
31
Assignment Operator
• =
• Read the assignment operator as “GETS” not
“EQUALS!”
• This is an assignment of what’s on the right side
of = to a variable on the left
• eg sum = integer1 + integer2;
– Read this as, “sum gets integer1 + integer2”
– integer1 and integer2 are added together and stored in sum
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
32
Assignment Operators
• Given the following:
x = 2;
x = x + 1;
System.out.println ("x:
" + x);
• There are actually several ways to rewrite this
more concisely.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
Short Cut Operator
• One option is to use the += operator
x = 2;
x += 1; // same as x = x + 1;
System.out.println ("x: " + x);
• There are similar operators for *, -, /.%
–
–
–
–
x
x
x
x
=
=
=
=
x
x
x
x
*
–
/
%
5
5;
5;
5;
is
is
is
is
equivalent
equivalent
equivalent
equivalent
to
to
to
to
x
x
x
x
*=
-=
/=
%=
5;
5;
5;
5;
• Good Practice: place a space before and after your
short cut operators.
Increment Operator
• A second option is to use an increment operator:
x++
Post-Increment Operator
++x
Pre-Increment Operator
• Both operators will increment x by 1, but they do
have subtle differences.
Pre v. Post Increment
• PostIncrement Operator (x++):
– use the current value of x in the expression.
Then, increment by 1.
• PreIncrement Operator (++x):
– Increment x by 1. Then, use the new value of x
in the expression.
How about a real example?
// Preincrementing v. PostIncrementing
public class PrePost
{
public static void main (String[] args)
{
Post Increment
int c = 5;
Output:
System.out.println (c);
System.out.println (c++);
5
System.out.println (c);
5
System.out.println();
c = 5;
6
System.out.println (c);
System.out.println (++c);
System.out.println (c);
5
6
}
}
Pre Increment
 2000 Prentice Hall, Inc. All rights reserved.
6
Modified by Evan Korth
Pre v. Post Decrement
• PostDecrement Operator (x--):
– use the current value of x in the expression.
Then, decrease by 1.
• PreDecrement Operator (--x):
– Decrease x by 1. Then, use the new value of x
in the expression.
• Good practice: Place unary operators
directly next to their operands, with no
intervening spaces.
38
Displaying Text in a Dialog Box
• Display
– Most Java applications use windows or a dialog box
• We have used command window
– Class JOptionPane allows us to use dialog boxes
• Packages
– Set of predefined classes for us to use
– Groups of related classes called packages
• Group of all packages known as Java class library or Java
applications programming interface (Java API)
– JOptionPane is in the javax.swing package
• Package has classes for using Graphical User Interfaces (GUIs)
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
39
Displaying Text in a Dialog Box
• Upcoming program
–
–
–
–
Application that uses dialog boxes
Explanation will come afterwards
Demonstrate another way to display output
Packages, methods and GUI
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1// //
Fig. 2.6: Welcome4.java
welcome3.java
// Printing multiple lines in a dialog box.
2 // Printing multiple lines in a dialog box
3// import
javax.swing.JOptionPane; // import class JOptionPane
Java packages
4import javax.swing.JOptionPane; // program uses JOptionPane
5 public class Welcome4 {
public class welcome3 {
6
public static void main( String args] )
// main method begins execution of Java application
7
{
public static void main( String args[] )
8 {
JOptionPane.showMessageDialog(
JOptionPane.showMessageDialog(
9
null, "Welcome\nto\nJava\nProgramming!" );
null, "Welcome\nto\nJava\nProgramming!" );
10
11
12
System.exit(
0 );
terminate
application
with window
System.exit(
0 );// //
terminate
the program
}
} // end method main
} // end class welcome3
welcome3.java
1. import
declaration
2. Class Welcome4
2.1 main
2.2
showMessageDial
og
2.3 System.exit
Program Output
 2003 Prentice Hall, Inc.
All rights reserved.
41
Displaying Text in a Dialog Box
– Lines 1-2: comments as before
// Java packages
4
– Two groups of packages in Java API
– Core packages
• Begin with java
• Included with Java 2 Software Development Kit
– Extension packages
• Begin with javax
• New Java packages
5
import javax.swing.JOptionPane;
// program uses OptionPane
– import declarations
• Used by compiler to identify and locate classes used in Java
programs
• Tells compiler to load class JOptionPane from
javax.swing package
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
42
2.4
Displaying Text in a Dialog Box
– Lines 6-11: Blank line, begin class welcome4 and main
12
13
JOptionPane.showMessageDialog(
null, "Welcome\nto\nJava\nProgramming!" );
– Call method showMessageDialog of class
JOptionPane
• Requires two arguments
• Multiple arguments separated by commas (,)
• For now, first argument always null
• Second argument is string to display
– showMessageDialog is a static method of class
JOptionPane
• static methods called using class name, dot (.) then method
name
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
43
2.4
Displaying Text in a Dialog Box
– All statements end with ;
• A single statement can span multiple lines
• Cannot split statement in middle of identifier or string
– Executing lines 12 and 13 displays the dialog box
• Automatically includes an OK button
– Hides or dismisses dialog box
• Title bar has string Message
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
44
Displaying Text in a Dialog Box
15
System.exit( 0 );
// terminate application with window
– Calls static method exit of class System
• Terminates application
– Use with any application displaying a GUI
• Because method is static, needs class name and dot (.)
• Identifiers starting with capital letters usually class names
– Argument of 0 means application ended successfully
• Non-zero usually means an error occurred
– Class System part of package java.lang
• No import declaration needed
• java.lang automatically imported in every Java program
– Lines 17-19: Braces to end welcome3 and main
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
45
Another Java Application: Adding
Integers
• Upcoming program
– Use input dialogs to input two values from user
– Use message dialog to display sum of the two values
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
46
// Addition.java
// Addition program that displays the sum of two numbers.
// Java packages
import javax.swing.JOptionPane;
Addition.java
// program uses JOptionPane
1. import
public class Addition {
name and
// main method begins executionDeclare
of Javavariables:
application
public static void main( String args[] )
{
String firstNumber;
// first string entered by user
String secondNumber; // second string entered by user
int number1;
int number2;
int sum;
type.
// first number to add
Input
first integer
// second
number
to add as a String,
// sum to
offirstNumber.
number1 and number2
2.1 Declare variables
(name and type)
assign
// read in first number from user as a String
firstNumber = JOptionPane.showInputDialog( "Enter first integer" );
// read in second number from user as a String
secondNumber =
JOptionPane.showInputDialog( "Enter second integer" );
2. class Addition
3.
showInputDialog
4. parseInt
5. Add numbers, put
result in sum
Convert strings to integers.
// convert numbers from type StringAdd,
to type
placeint
result
number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );
// add numbers
sum = number1 + number2;
in sum.
 2003 Prentice Hall, Inc.
All rights reserved.
47
33
34
35
36
37
38
39
40
41
// display result
JOptionPane.showMessageDialog( null, "The sum is " + sum,
"Results", JOptionPane.PLAIN_MESSAGE );
System.exit( 0 );
// terminate application with window
} // end method main
} // end class Addition
Program output
 2003 Prentice Hall, Inc.
All rights reserved.
48
2.5
5
Another Java Application: Adding
Integers
import javax.swing.JOptionPane;
// program uses JOptionPane
– Location of JOptionPane for use in the program
7
public class Addition {
– Begins public class Addition
• Recall that file name must be Addition.java
– Lines 10-11: main
12
13
String firstNumber;
String secondNumber;
// first string entered by user
// second string entered by user
– Declaration
• firstNumber and secondNumber are variables
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
49
2.5
12
13
Another Java Application: Adding
Integers
String firstNumber;
String secondNumber;
// first string entered by user
// second string entered by user
– Variables
• Location in memory that stores a value
– Declare with name and type before use
• firstNumber and secondNumber are of type String
(package java.lang)
– Hold strings
• Variable name: any valid identifier
• Declarations end with semicolons ;
String firstNumber, secondNumber;
– Can declare multiple variables of the same type at a time
– Use comma separated list
– Can add comments to describe purpose of variables
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
50
2.5
15
16
17
Another Java Application: Adding
Integers
int number1;
int number2;
int sum;
// first number to add
// second number to add
// sum of number1 and number2
– Declares variables number1, number2, and sum of type
int
• int holds integer values (whole numbers): i.e., 0, -4, 97
• Types float and double can hold decimal numbers
• Type char can hold a single character: i.e., x, $, \n, 7
• Primitive types - more in Chapter 4
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
51
2.5
20
Another Java Application: Adding
Integers
firstNumber = JOptionPane.showInputDialog( "Enter first integer" );
– Reads String from the user, representing the first number
to be added
• Method JOptionPane.showInputDialog displays the
following:
• Message called a prompt - directs user to perform an action
• Argument appears as prompt text
• If wrong type of data entered (non-integer) or click Cancel,
error occurs
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
52
Another Java Application: Adding
Integers
20
firstNumber = JOptionPane.showInputDialog( "Enter first integer" );
– Result of call to showInputDialog given to
firstNumber using assignment operator =
• Assignment statement
• = binary operator - takes two operands
– Expression on right evaluated and assigned to variable on
left
• Read as: firstNumber gets value of
JOptionPane.showInputDialog( "Enter first
integer" )
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
53
Another Java Application: Adding
Integers
23
24
secondNumber =
JOptionPane.showInputDialog( "Enter second integer" );
– Similar to previous statement
• Assigns variable secondNumber to second integer input
27
28
number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );
– Method Integer.parseInt
• Converts String argument into an integer (type int)
– Class Integer in java.lang
• Integer returned by Integer.parseInt is assigned to
variable number1 (line 27)
– Remember that number1 was declared as type int
• Line 28 similar
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
54
Another Java Application: Adding
Integers
31
sum = number1 + number2;
– Assignment statement
• Calculates sum of number1 and number2 (right hand side)
• Uses assignment operator = to assign result to variable sum
• Read as: sum gets the value of number1 + number2
• number1 and number2 are operands
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
55
Another Java Application: Adding Integers
34
35
JOptionPane.showMessageDialog( null, "The sum is " + sum,
"Results", JOptionPane.PLAIN_MESSAGE );
– Use showMessageDialog to display results
– "The sum is " + sum
• Uses the operator + to "add" the string literal "The sum is"
and sum
• Concatenation of a String and another type
– Results in a new string
• If sum contains 117, then "The sum is " + sum results in
the new string "The sum is 117"
• Note the space in "The sum is "
• More on strings in Chapter 11
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
56
Another Java Application: Adding Integers
34
35
JOptionPane.showMessageDialog( null, "The sum is " + sum,
"Results", JOptionPane.PLAIN_MESSAGE );
– Different version of showMessageDialog
•
•
•
•
•
Requires four arguments (instead of two as before)
First argument: null for now
Second: string to display
Third: string in title bar
Fourth: type of message dialog with icon
– Line 35 no icon: JOptionPane.PLAIN_MESSAGE
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
57
Another Java Application: Adding
Integers
Messa g e d ia lo g typ e
Ic o n
Desc rip tio n
JOptionPane.ERROR_MESSAGE
Displays a dialog that indicates an error
to the user.
JOptionPane.INFORMATION_MESSAGE
Displays a dialog with an informational
message to the user. The user can simply
dismiss the dialog.
JOptionPane.WARNING_MESSAGE
Displays a dialog that warns the user of a
potential problem.
JOptionPane.QUESTION_MESSAGE
Displays a dialog that poses a question to
the user. This dialog normally requires a
response, such as clicking on a Yes or a
No button.
JOptionPane.PLAIN_MESSAGE
no icon
Displays a dialog that simply contains a
message, with no icon.
Fig. 2.12 JOptionPane c o nsta nts fo r m essa g e d ia lo g s.
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.
58
Memory Concepts
• Variable names correspond to locations in the
computer’s primary memory.
• Every variable has:
– a name
– a type
– and a value.
• When a value is placed in a memory location the
value replaces the previous value in that location
(called destructive read-in)
• A variable’s value can just be used and not
destroyed (called non-destructive read-out)
 2003 Prentice Hall, Inc. Modified for use with this class. All rights reserved.