g 和 java.lang.String 来区分这两个类。同时,将逻辑上相关的类放在同一 个包中,可以使程序结构更为清楚。你要做的就是在 java 文件开头加一行"package mypackage;"。 注意包没有嵌套或包含关系,A 包和 A.B 包对 java 命令来说是并列的两个包。 13 我没有声明任何 package 会怎么样? 答:你的类被认为放在默认包中。这时全名和短名是一致的。 14 在一个类中怎么使用其他类? 答:如果你使用 java.lang 包中的类,不用做任何事。 如果你使用其他包中的类, 使用 import package1.class1; 或 import package2.*;这里.*表示 引入这个包中的所有类。然后在程序中你可以使用其他类的短名。如果短名有冲突,使用全 名来区分。 15 我用了 package 的时候显示"NoClassDefFoundError",但是我把所有 package 去掉的 时候能正常运行。 答:将你的 java 文件按包名存放。 比如你的工作目录是/work,你的类是 package1.class1,那么将它存放为 /work/package1/class1.java。如果没有声明包,那么直接放在/work 下。 在/work 下执行 javac package1/class1.java,再执行 java package1.class1,你会发现一切
正常。另外,你可以考虑开始使用 IDE。 16 我想把 java 编译成 exe 文件,该怎么做? 答:JDK 只能将 java 源文件编译为 class 文件。 class 文件是一种跨平台的字节码,必须依赖平台相关的 JRE 来运行。Java 以此来实现跨 平台.有些开发工具可以将 java 文件编译为 exe 文件。作者反对这种做法,因为这样就取消 了跨平台性。如果你确信你的软件只在 Windows 平台上运行,你可以考虑使用 C++/C#来 编程。 17 我在编译的时候遇到什么"deprecated API",是什么意思? 答:所谓 deprecated 是指已经?时,但是为了向前兼容起见仍然保留的方法??br&;gt; 这些 方法可能会在以后取消支持。你应当改用较新的方法。一般在 API 里面会说明你应当用什 么方法来代替之。 三、I/O 篇 18 我怎么给 java
程序加启动参数,就像 dir /p/w 那样? 答:还记得 public static void main(String[] args)吗?这里的 args 就是你的启动参数。在运行
时你输入 java package1.class1 -arg1 -arg2,args 中就会有两个 String,一个是 arg1,另 一个是 arg2。 19 我怎么从键盘输入一个 int/double/字符串? 答:java 的 I/O 操作比 C++要复杂一点。如果要从键盘输入,样例代码如下:BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) );String s = cin.readLine(); 这样你就获得了一个字符串,如果你需要数字的话再加上:int n = Integer.parseInt( s ); 或者 double d = Double.parseDouble( s ); 20 我怎么输出一个 int/double/字符串? 答:在程序开始写: PrintWriter cout = new PrintWriter( System.out ); 需要时写: cout.print(n); 或者 cout.println("hello")等等。 21 我发现有些书上直接用 System.in 和 System.out 输入输出,比你要简单得多。 答:java 使用 unicode,是双字节。而 System.in 和 System.out 是单字节的 stream。 如果你要输入输出双字节文字比如中文,请使用作者的做法。 22 我怎么从文件输入一个 int/double/字符串? 答:类似于从键盘输入,只不过换成 BufferedReader fin = new BufferedReader( new FileReader(" myFileName " ) ); PrintWriter fout = new PrintWriter( new FileWriter(" myFileName " ) ); 另外如果你还没下载 API,请开始下载并阅读 java.io 包中的内容。 23 我想读写文件的指定位置,该怎么办? 答:你肯定没有认真看 API。java.io.RandomAccessFile 可以满足你的需要。 24 怎么判断要读的文件已经到了尽头? 答:你肯定没有认真看 API。在 Reaer 的 read 方法中明确说明返回-1表示流的结尾。 四、 关键字篇 25 java 里面怎么定义宏? 答:java 不支持宏,因为宏代换不能保证类型安全。 如果你需要定义常量,可以将它定义为某个类的 static final 成员。参见26和30。 26 java 里面没法用 const。 答:你可以用 final 关键字。例如 final int m = 9。被声明为 final 的变量不能
被再次赋值.final 也可以用于声明方法或类,被声明为 final 的方法或类不能被继承。注意 const 是 java 的保 留字以备扩充。
27 java 里面也不能用 goto。 答:甚至在面向过程的语言中你也可以完全不用 goto。请检查你的程序流程是否合理。 如果你需要从多层循环中迅速跳出,java 增强了(和 C++相比)break 和 continue 的功能。