- ... sign.1.1
- As we will explain shortly, Java
supports several different sizes of integer representation; 31 binary
digits plus sign is the default for integer constants.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... call.1.2
- In the official Java Language Specification,
the term target is used instead of receiver.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... access.1.3
- Of course, a static method can invoke an
instance method (or extract an instance field) of class if it
explicitly specifies a receiver for the invocation.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
classes1.4
- Any class that is not declared as abstract is
``concrete''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... superclass.1.5
- In pathological cases, some repeated
code may not be subject to factoring because of conflicts among
possible factorings. For example, variants A and B may
share code for method m while variants B and C
share code for method n. In this case, either the code
for method m or the code for method n can be hoisted but not
both. More complex factoring methods are possible (using, for example,
the command pattern discussed in Section 1.8), but they are typically
not worth the complication.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... definition1.6
- For a
composite class hierarchy, use the top class.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
m1.7
- The redefined method must have exactly the same name
and input and output types as the method m that would have been
inherited.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Object.1.8
- For example, the classes Hashtable
and HashMap in the Java library both rely on the hashcode() method.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... methods.1.9
- An interface
may also include static final fields.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... data.1.10
- Of course, any static
method can be converted to an instance method in some class, but
the conversion is gratuitous since the static method code ignores
this.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
returns.1.11
- In Scheme, this statement is false in general; local
variables continue to exist as long as a ``closure'' referring to them
exists.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... definition;1.12
- The
return types of arithmetic operators generally depend on the types of their arguments.
For some operator applications, the table immediately reports a type error.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... statement2.1
- For readers unfamiliar with
C-style for loops and the autoincrement idiom i++,
both of these constructs are explained in the next subsection.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... loop:2.2
- With
one minor exception involving the use of continue in the
loop body. Since our Java subset does not include continue,
it is not an issue.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... call2.3
- Taking care to
avoid interference from side effects!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.