划词......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

java基础知识问答?java入门与加深一 (2)

Posted on 2007-05-18 08:09  王君  阅读(302)  评论(0编辑  收藏  举报
16 我想把java编译成exe文件,该怎么做? 

 答:JDK只能将java源文件编译为class文件。 


 class文件是一种跨平台的字节码,必须依赖平台相关的JRE来运行。Java以此来实现跨平台.有些开发工具可以将java文件编译为exe文件。作者反对这种做法,因为这样就取消了跨平台性。如果你确信你的软件只在Windows平台上运行,你可以考虑使用C++/C#来编程。 


 17 我在编译的时候遇到什么"deprecated API",是什么意思?


  答:所谓deprecated是指已经?时,但是为了向前兼容起见仍然保留的方法??br> 这些方法可能会在以后取消支持。你应当改用较新的方法。一般在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的功能。 


 例如:


 outer :


 while( ... )


 {


 inner :


 for( ... )


 {


 ... break inner; ...


 ... continue outer; ...


 }


 }


 


 和const一样,goto也是java的保留字以备扩充。 


 28 java里面能不能重载操作符? 


 答:不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实现类似功能。


 29 我new了一个对象,但是没法delete掉它。 


 答:java有自动内存回收机制,即所谓Garbarge Collector。你再也不用担心指针错误了. 


 30 我想知道为什么main方法必须被声明为public static? 


 


 答:声明为public是为了这个方法可以被外部调用,详情见面向对象篇37。 


 static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。 


 你不需要创建一个对象就可以直接使用这个类的static成员,在A类中调用B类的static成员可以使用B.staticMember的写法。 


 注意一个类的static成员变量是唯一的,被所有该类对象所共享的。