Basic Java Syntax
Basic Java Syntax
CSE301
University of Sunderland
Harry R Erwin, PhD
Key Resources to Help You
Learn Java
• You need to own and read Flanagan, Java in a
Nutshell, 5th edition. My lectures are not enough
to teach you Java.
• You need access to Flanagan’s other Nutshell
books.
• You need an up-to-date Java 1.5 (or newer)
compiler and run-time environment.
• You need access to eclipse 3.1.1
• You need to explore the Sun tutorials
http://java.sun.com/docs/books/tutorial/index.html
Unicode
• Java is written in the Unicode character set.
• Unicode characters are stored in 16 bits (some Far
Eastern languages require 21) and can represent
almost all written languages.
– A
– å
– π
• Java programs can be written in ASCII or Latin-1
characters, which most text editors support.
• Unicode can be used anywhere in a Java program.
Comments
• Single-line comments: //…………..
• Multi-line comments: /*…..*/
• Doc comments:
– Begin with /**….
– Provide embedded documentation
– End with */
– Worth investigating further, because they allow you to
write self-documenting codefiles. This is an easy way
to meet some of the project requirements.
– Extended in Java 5 (discussed in two weeks)
Scope of Names
• The ‘scope’ of a declaration is the region of the program
within which the entity can be referred to using a simple
name.
• Types must be imported or declared to be in scope.
• Members have class or interface scope.
• Method parameters have method scope.
• Local variables have block scope.
• When a name is hidden by another name, you must
provide the full name. Sometimes (method parameters, for
example) there is no full name you can use.
Identifiers
• Begin with a letter, underscore (_), or currency
symbol (€$¥£).
• Contain any number of letters, numbers,
underscores, and currency symbols.
• Avoid the currency symbols as compilers use
them.
• Remember Unicode. The following are legal
identifiers:
– π
– Ö
Primitive Data Types
– boolean
– char
– short
– byte
– int
– long
– float
– double
• Have machine-independent formats and default
values. Know them! I usually ask a question on
them in the TCT or exam.
String
• Contains Unicode text
• Constant—unlike C and C++ strings.
• A class, not a primitive type
• Literals consist of anything between a pair of
double quotes. To include a double quote in a
string, use \”
• Supports operator overloading (+, +=). This is the
only place in Java where operator overloading
takes place.
Type Conversions
• Integer to floating point are automatic.
• char to/from integer and floating point
• Widening conversions (e.g., short to long)
are safe.
• Narrowing conversions are dangerous. You
need to understand why. I usually ask a
question on this in the TCT or exam.
Classes and Arrays
• Reference types.
• Created using the new operator
– new type(args); // an object
– new type[dim]; // 1-D array
– new type[dim1][dim2] etc; //larger arrays
• A class or array object is null (does not exist) until
it is initialized.
• Interfaces are reference types, too.
• Discussed in the next lecture.
Operators
• Generally as in C or C++. See the earlier
lecture.
• Typecasting is handled by (type)var; , not
type(var);!
Statements
• Generally as in C/C++. See the earlier
lecture.
• Additional:
– synchronized (threads)
– throw (an exception)
– try/catch/finally (to handle exceptions)
– All the new Java 5 stuff (discussed in two
weeks).
Methods
• Correspond to functions in C or C++, but are
always associated with a class.
• Defined by their signature:
– Name
– Arguments
– Return type (differs from C++, may be void)
– Checked exceptions thrown
– Method modifiers: public, static, abstract, final, native,
private, protected, synchronized.
Method Modifiers
• public—can be called from anywhere
• static—defined at the class, not instance level
• abstract—must be defined by a subclass to be
called
• final—no changes allowed
• native—calls native code
• private—hidden from other classes
• protected—visible in same package and subclasses
• synchronized—supports multithreading
Summary
• Java is not C or C++
• Everything is either a primitive type or a
reference type.
• Primitive types have default values, while
reference types do not exist until they are
initialized.
• Java smells like C and C++, but a language
that smells may not be to your liking… 8)