Here are some questions and answers we have collected so far. If you
have something good for posting here, please let us know.
Q: What is the recommended way to include
applets in Web pages?
A: At various times in the recent past,
Java applets have been included in Web pages with
the <object> tag,
the <embed> tag, or the <applet> tag.
It is still not clear if <object> or <applet> will be the standard.
It appears that the <object> tag works well for both
browsers NN and IE. The <applet> tag is simpler to use
but may still not be treated correctly by IE.
The general form of the <object> tag is in this file.
The general form of the <applet> tag is:
<applet width = 200 height = 50 code= "Click.class">
<p>Applet not supported by this browser.</p>
Q: Java provides many I/O classes. Can
you provide a summary to make things easier?
A: Here are some important points about
- Java provides low-level byte-oriented I/O, and higher level
char I/O, primitive-type I/O, and Object I/O.
I/O objects can be connected into pipes.
- FileInputStream, FileOutputStream --> byte oriented I/O (8-bit)
- InputStreamReader, OutputStreamWriter --> Character I/O (16-bit)
these are built on top of byte oriented I/O through a
char-to-byte conversion dependent on the I/O character encoding
- BufferredReader, BufferedWriter,
BufferedInputStream, BufferedOutputStream --> to get buffered I/O
and to get readLine() method
- PrintStream, PrintWriter --> output string representation of
primitive and object types
- RandomAccessFile --> file updating, appending
- DataInputStream, DataOutputStream --> primitive type binary I/O
- ObjectInputStream, ObjectOutputStream --> serializable object binary I/O
- Unicode can use different encodings:
UTF-16, UTF-16BE, UTF-16LE, UTF-8, US-ASCII (7-bit)
Q: When sending command-line arguments to
is treated as a wildcard. How can I quote it?
A: On UNIX use "*", '*', or \*. On MS/DOS use
"*". The notation "*" will work for both.
Q: After downloading and installing Java, how
do I make the java commands such as java and javac available?
A: You can always use the commands in the
jdk1.3xxx/bin/ directory by giving the full pathname
as the command. But that is too much to type. You simply need
to include that bin directory on the command search
On UNIX set the environment variable PATH to include the bin directory.
setenv PATH $PATH":/usr/local/jdk1.3.1_02/bin"
or on MS/DOS
SET PATH= %PATH%;C:\jdk1.3.1_02\bin
Q: In Java, how does one perform formatted output where the
spacing and precision of numbers can be controlled?
A: Formatted I/O is not part of the Java I/O stream facility. You
use the class
NumberFormat to get default formatting
for different Locale and the class
convert numbers to/from strings of designated format.
Examples will be shown when we cover I/O.
Q: When do I need to add the null constructor to a class?
A: You should normally include a null constructor in a class
unless you are absolutely sure no other code, now or in the future,
will need the null constructor for the class.
If you don't see a direct instantiation of objects
using the null constructor, consider a
for class extension purposes. Remember, an extended class constructor
that does not explicitly call
super(...) will have to invoke the
super-class null constructor.
Q: Why does E arr = new E[cap]; give a compile-time error?
A: Basically, the operator new is
a run-time operation and Java 1.5 removes all generics typing
at compile-time. This is the well-known generic array creation
an operation not supported by Java 1.5. You need to use
obj = (E) (new Object[cap]);
which will compile with just a warning.
Q: Can an inner class be extended?
A: Yes, if the inner class is not final. But inner classes are usually
private or protected, making general extension impossible.
See the inner class
specifications for more details.
Q: In handling a mouse button event, how do I know which mouse
button is involved?
A: You use the
getModifiers() method and check against
the appropriate Button Mask constant in the
Q: What are the
used in writing the native code under JNI?
JNICALL are preprocessor defined constants
specific to each platform. You can find them in the machine-dependent
java/inlcude/solaris for example. These are usually
defined as null strings.
JNIEnv is a
typedef defined in
jni.h. It provides access from the native code to Java objects.