Chapter 3
Basic Java structural components

This chapter discusses
Some Java fundamentals.
The high-level structure of a system written in Java.
packages
compilation units
Some fundamental “tokens” that make up a Java program.
identifiers
literals

Creating a Software System
Define the classes to which objects belong.
A class definition determines the features and behavior of the objects that are instances of the class.
A program source is a collection of class definitions.

Packages
A system definition is composed of a number of modules called packages.
A package is a collection of one or more closely related classes.
public class: a class that is accessible throughout the entire system.

Packages (cont.)

Compilation unit
A source file containing the definition of one or more classes of a package.
It can contain the definition of at most one public class.

Compilation unit (cont.)

Identifiers
Sequences of characters that can be used to name things in a Java program.
packages
classes
objects
features

Identifiers (cont.)
A sequence of letters, digits, ‘$’s, and/or ‘_’s.
Cannot begin with a digit.
Case sensitive (‘A’ and ‘a’ are considered different!!).

Identifiers (cont.)
Legal: X   Abc   A_a_x   b$2 aVeryLongIdentifier   b29  a2b $_   $$$   IXLR8
Illegal: 2BRnot2B   a.b   Hello! A-a  A+a
All different identifiers:            total   Total   TOTAL   tOtAl

Identifiers used already

Choosing identifiers
Choose descriptive names.
      Student or Textbook
not       S or Thing
Avoid overly long identifiers.
HoldsTheNumberOfIterationsOfLoop
Avoid abbreviations; if you abbreviate, be consistent.
Inconsistent: clientRec and studentRecord

Choosing identifiers (cont.)
Be as specific as possible.
Take particular care to distinguish closely related entities.
Effective        Less-Effective
newMasterRecord    masterRecord1
oldMasterRecord     masterRecord2
Don’t incorporate the name of its syntactic category in its name.
Less-Effective:StudentClass

Literals
Sequences of characters that denote particular values.
We write literals in our programs to denote specific values.

int
Numbers -- both positive and negative.
Commas, periods, and leading zeros are not allowed in ‘int’s.
Legal:
25 0 123456 -289765 7
Illegal:
123,456 25.0 014765

Double
Numbers including decimal points.
 0.5
-2.67
 0.00123
 2.
  .6
Digits before and after the decimal point are preferred.

Exponential Notation
Can be used to represent doubles.
 0.5e+3
 0.5e-3
-0.5E3
 5e4
 2.0E-27
The “e” can be upper or lower case.
The mantissa need not contain a decimal point.

Character literals
Single characters between apostrophes (single quotes).
‘A’ ‘a’ ‘2’ ‘;’ ‘ ’
3 characters not represented by themselves:
‘ -> ‘\’’ (apostrophe)
“ -> ‘\”’ (quotation mark)
\ -> ‘\\’ (backslash)

Boolean
Only 2 possible literals:
true (Not TRUE or True)
false

General lexical rules
Files are made up of tokens -- identifiers, keywords, literals, and punctuation marks.
Spaces and line ends are somewhat arbitrary.
Spaces are required between words:
Wrong: publicclass Student

General lexical rules (cont.)
Spaces are not required, but are permitted, around punctuation.
All correct examples:
public class Student{
public class Student {
a+b
a + b
Extra spaces and line endings are allowed.
public class Student {

General lexical practices
Be consistent in spacing and line endings to make your programs as readable as possible.

Comments
Explanatory remarks are included in a program for the benefit of a human reader, and are ignored by the compiler.
Use // to treat the rest of the line as a comment.
Use /* and */ to begin and end a section of comments.
/* This is a comment */

We’ve covered
Fundamental structure of a Java program.
Packages
Class definitions and compilation units
Instances of classes
Lexical structure
Identifiers
Literals
Comments

Glossary

Glossary (cont.)