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: In short we recommend the <applet> tag.
The general form of the <applet> tag is:
<applet width = 200 height = 50 code= "Click.class">
<p>Applet not supported by this browser.</p>
</applet>
Q: Java provides many I/O classes. Can
you provide a summary to make things easier?
A: Here are some important points about
Java I/O:
- 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
being used.
- 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
java or javac the * character
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 PATH.
On UNIX set the environment variable PATH to include the bin directory.
For example,
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 DecimalFormat to
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 protected
null constructor
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 MouseEvent class.
Q: What are the JNICALL and JNIEXPORT and JNIEnv symbols
used in writing the native code under JNI?
A: JNIEXPORT and JNICALL are preprocessor defined constants
specific to each platform. You can find them in the machine-dependent
header file jni_md.h under java/include/hp-up
or java/inlcude/solaris for example. These are usually
defined as null strings.
The JNIEnv is a typedef defined in jni.h. It provides access from the native code to Java objects.
include("back.inc"); ?>