Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

02.java Basics

Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

Simple Java Program

file: HelloWorld.java

public class HelloWorld {


public static void main (String[] args) {
//our code will all go here"
System.out.println("Hello, World!");
}
}
Each word of this should make sense by the semester's end! For now it
is boilerplate codejust the template we'll use to write code.
Whitespace
Whitespace means the 'blank' characters:
space, tab, newline characters.
White Space is (almost) irrelevant in Java.
spaces used to separate identifiers
(int x vs intx)
we can't span lines within Strings.
(no newlines between "")

Syntax is not based on indentations


but indentation is highly recommended!
(required for class)
Bad Whitespace Example #1
Valid, but horribly written, code.
(excessive, meaningless spacing)
public class
Spacey { public
static

void
main(String[
] args
){ System .
out.println("Weirdly-spaced code still runs!"

);}}
Bad Whitespace Example #2
Valid, but horribly written, code.
(one-liners aren't always best!)

public class Spacey2{public static void


main(String[]args)
{System.out.println("space-devoid code
also runs...");}}

(the above is all on one line of text in Spacey2.java)

Code like this might not receive any credit! Seriously, don't do this in
anything you ever turn in. Never make the grader unhappy.
Good Whitespace Example
public class GoodSpacing {"
public static void main (String[] args) {"
int x = 5;"
int y = 12;"
System.out.println("x+y = "+ (x+y));"
}"
}

indentation levels for each block: class,


method definitions, control structures
Identifiers
Identifiers are the 'names' we choose for
variables, methods, classes, interfaces, etc.

An identifier can be made up of letters, digits, the
underscore character ( _ ), and the dollar sign ($)
Identifiers cannot begin with a digit
Java is case sensitive - Total, total, and
TOTAL are different identifiers

1-7
Identifiers

Identifiers cannot be keywords
By convention, programmers use different case
styles for different types of identifiers, such as
lower case for variables
response, previousIndex
title case for class names
Person, MasonStudent
upper case for constants
MASON, MAX_INT
Identifier Examples
Legal Identifier Examples: Illegal Identifier Examples:

hello two words


camelCaseName Extra-Characters!
__$_09abizzare 1st_char_a_number
user_input18 transient (it's a keyword)
anyArbitrarilyLongName Dots.And.Hooks?
Java Keywords
Keywords are identifiers that have meanings in the
language definition. They cannot be used by
programmers as new identifiers.
Types!
Java is strongly typed: every expression
has a specific type that is known at compile
time, and never changes. (whether it's a
variable, literal value, method call, or any
other expression)
Java has two kinds of types:
primitive types (containing literal values)
reference types (containing objects of some
class).
Primitive Types
Primitive Types contain the basic values of the
language, such as numbers, characters, and
Booleans.
boolean: truth values. Only possible values:
true, false.
char: one character in single-quotes:
'a' 'H' '\n' '5'.
numbers: there are many versions of integers (all
with limited ranges), and two versions of real
numbers (different precision/ranges).
Specific Integer Types
Java provides integral numbers of different 'widths' (different
numbers of bits), and different ranges of values:

byte (8 bits) -128 to 127


short (16 bits) -32768 to 32767
int (32 bits) -2147483648 to 2147483647
long (64 bits) (-263) to (263-1)

char (16 bits) 0 to 65535 (all positive)


(can edit char as its Unicode #, but it still is printed as its current
character, not the code number)

The compiler doesn't allow too-big numbers in each type. To specify


long values, add an 'L' to the end: (or 'l', which looks like a 1)
123412341234L 037L 0x345L 100000L
Literal Integer Representation
Integers can be represented in decimal, hexadecimal, or
octal. (different representations of the same values!)

decimal: start with 1-9, followed by 0-9. (or just the 0 value.)
0 10 483 9876501234 66045

hexadecimal (base 16): prefix 0x, followed by one or more of


0123456789ABCDEF. (also, a-f are equivalent to A-F).
0x0 0xfade 0x1B2C 0x9 0x10

octal (base 8): prefix 0, followed by one or more of 0-7.


00 071 045306 01777 010
Note on Different Representations
All three inputs are alternatives you can use to
describe the same values.

You also know:


Roman Numerals (e.g., XLVI)
tally-marks |||| (base 1 counting)
|

All of these represent integers! Don't confuse


representation with meaning.
Floating Point Numbers
Approximating the real #s: called floating point numbers.

internal binary representation: like scientific notation.

sign exponent fraction

S: sign bit. E: bias-adjusted exponent.


M: adjusted fractional value.
value = (-1)S * 2E * M

Also representable: infinity (+/), NaN ("not a number")

float: 32-bit representation. (1 sign, 8 exp, 23 frac)


double: 64-bit representation. (1 sign, 11 exp, 52 frac)
Representing Floating Point Numbers
Floating Point numbers:
- may have a decimal point followed by digits
2.32 1.21 450000
- may be written in scientific notation:
2.32e5 = 2.32x105 = 232000
- may be very large:
2E35F 2e250 -2e250

float: use f suffix (or F) to indicate float.


0f 3.14159f -2E3F 59023f

double: floating point numbers are doubles by default.


0.3 3.141592653589 -3.15E30
Practice Problem
To what types can these numbers be stored?

0 char byte short int long float double

150 char short int long float double

3.14 double

7e200 double

0x3F byte short int long float double

371F float double


Creating Variables
Variables must be declared and initialized before use.
Declaration: creates the variable. It includes a type and a
name. The variable can only hold values of that type.
int x; char c; boolean ok; Person p;

Initialization: assign an expr. of the variable's type to it.


x=7+8; c='M'; ok = true; p = new Person();

Both: we can declare and instantiate all at once:


int x = 5; char c = 'S'; Person p = new Person();
Casting
With all these numerical types, changing between
them is possible, and has implications.

a cast is a conversion from one type to another. We


cast things by placing the type in parentheses in
front of it:
(int) 3.14f

One use: forcing floating-point division.


int x=3, y=4;
double z = ((double)x)/y;
System.out.println(z); //prints 0.75
Java Comments
There are two main styles of comments in Java:

Single-Line: from // to the end of the line.

Multi-Line: all content between /* and */, whether it


spans multiple lines or part of one line.

JavaDoc: convention of commenting style that helps


generate code documentation/API. More on this later.
Expressions, Statements

Expression: a representation of a calculation that can


be evaluated to result in a single value. There is no
indication what to do with the value.

Statement: a command, or instruction, for the


computer to perform some action. Statements often
contain expressions.
Basic Expressions
literals (all our numbers, booleans, characters)
operation exprs:
< <= > >= == != (relational ops)
+ - * / % (math ops)
& | && || ! (boolean ops)

e?e:e (ternary conditional expr)


variables
parenthesized expressions ( expr )
Conditional Expression
The ?: ternary operator is a conditional expression: it
evaluates the boolean expression, and then results in
the middle expression when true, and the last
expression when false.

boolexpr ? expr : expr

We must have all three parts, and the 2nd and 3rd
expressions' types must agree with (fit in) the
resulting type of the entire expression.
Expression Examples
Legal:
4+5 (3>x) && (! true)
x%2==1 (x<y)&&(y<z)
numPeople drawCard()
(2+3)*4 y!=z

Illegal (these aren't expressions):


x>y>z 4 && false x=3 7(x+y)
Basic Statements
Declaration: announce that a variable exists.
Assignment: store an expression's result into a
variable.

method invocations (may be stand-alone)


blocks: multiple statements in { }'s

control-flow: if-else, for, while, (next lecture)


Statement Examples
int x; // declare x
x = 15; // assignment to x
int y = 7; // decl./assign. of y
x = y+((3*x)5); // assign. with operators
x++; // increment stmt (x = x+1)
System.out.println(x); // method invocation

if (x>50) { //if-else statement


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

You might also like