+ -
当前位置:首页 → 问答吧 → 新手常见问题解答

新手常见问题解答

时间:2003-08-21

来源:互联网

以下为转录自java连线版的新手系列
欢迎大家补足

作者: swanky   发布时间: 2003-08-21

1. 在什么情况下会发生 java.lang.NoClassDefFoundError , 以及如何避免这种情况发生?

Java.lang.NoClassDefFoundError 是 Java 无法在所给予的 classpath 中找到提及的类别或介面的定义,因而丢出的执行时期例外

作者: swanky   发布时间: 2003-08-21

2. 你如何以 Java 程式语言开发的程式来启动在 MS Windows 平台上的外部程式?

下列将会启动 MS Windows NT 中的记事本:

Runtime.getRuntime().exec("cmd /c notepad.exe");

要启动 MS Windows 95/98 中的,则使用:

Runtime.getRuntime().exec("c:\\windows\\notepad.exe");

Runtime 类别让程式和他的环境互动

作者: swanky   发布时间: 2003-08-21

3. 可以在哪里下载最新版的 JDK ?

你可以在 http://java.sun.com/j2se/downloads.html 找到最新版的 JDK

作者: swanky   发布时间: 2003-08-21

4. 如何在 Solaris 和 MS Windows 系统环境中设定永久的 classpath

作者: swanky   发布时间: 2003-08-21

5. 你如何明确的载入在使用者的 classpath 中所定义的类别?

1. 使用 System.getProperty("java.class.path");
2. 将 classpath 分割成它的元件路径名称. 检查每个路径名称的目录来搜寻 Java 的类别档, 并且使用 ClassLoader 载入类别. 关於载入类别和使用 java reflection 的相关文件如下:

执行时期类别资讯的设计, 位於 JavaWorld 的
http://www.javaworld.com/javaworld/jw-02-1999/jw-02-techniques_p.html

以 Reflection 来动态执行, 位於 Java Developer Connection 网站
http://developer.java.sun.com/developer/qow/archive/86/index.html

使用 Java 技术 Reflection, 位於 Java Developer Connection 网站
http://developer.java.sun.com/developer/technicalArticles/ALT/Reflection/

Reflection API Java 教学, 位於
http://java.sun.com/docs/books/tutorial/reflect/index.html

作者: swanky   发布时间: 2003-08-21

6. 我如何拿到 Java 的认证?

Sun 有四种不同的 Java 认证:Java Programmer, Java Developer, Java Architecture, 以及 Web Component Developer. 建议依照这个顺序来取得认证

作者: swanky   发布时间: 2003-08-21

7. 有任何网站可以让我为 Sun 认证的 Java 平台测验做准备吗?

下列网站有这个测验的资源:

http://javaprepare.com/
http://www.javaranch.com/
http://www.digitalthink.com/
http://www.jaworski.com/java/certification
http://www.jchq.net/
http://www.certificationguru.com/

与认证有关的相关资讯请参考Java Certification

作者: swanky   发布时间: 2003-08-21

8. 如何在基本资料型别和 java.lang.String 之间转换?

所有的基本资料型别都可以使用在 java.lang 底下的包装类别转换成字串

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 9
时间: Mon Jun 17 23:13:25 2002

9.当比较两个字串(String)时,使用 '==' 运算子和 java.lang.String.equals()这个
method有什么不同呢?

'=='这个运算子会看看这两个字串的references是不是指向同一个字串object

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 10
时间: Mon Jun 17 22:37:57 2002

10.在Java中是否可以移动/删除档案 (Java的基本的档案处理)

新增档案:
java.io.File.createNewFile() throws IOException

例如:

1
2
3
4
5
6
7
8
9
try { File myFile = new File("File"); if(myFile.createNewFile()) System.out.println( "No previous file with this name existed: file created"); else System.out.println( "File not created as a file with this name exists");
}catch(IOException e){}


新增目录:
java.io.File.mkdir()

例如:
1
2
 File myDir = new File("newDir/"); myDir.mkdir();


移动档案:
java.io.File.rename(String DestPath)

DestPath可以是相对的或是绝对的路径

删除档案或是目录

java.io.delete();

10. Is there any functionality to move/delete files on the underlying filesystem in
the Java programming language?

To create a new file on filesystem:
java.io.File.createNewFile() throws IOException

For example...
1
2
3
4
5
6
7
8
9
try { File myFile = new File("File"); if(myFile.createNewFile()) System.out.println( "No previous file with this name existed: file created"); else System.out.println( "File not created as a file with this name exists");
}catch(IOException e){}


To create a new directory on the filesystem:
java.io.File.mkdir()

For example...
File myDir = new File("newDir/");
myDir.mkdir();

To move a file on the filesystem:
java.io.File.rename(String DestPath)
The path can be absolute or relative to the current directory.

To delete a file or directory:
java.io.delete();

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 11
时间: Mon Jun 17 22:40:57 2002

11.deprecated是什么意思?

有时在编译完 java 的原始码后会出现Deprecation warings

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 12
时间: Mon Jun 17 22:46:54 2002

12.如何取得由Java程式呼叫的外在程式的执行结果?

每个application都会有一个Runtime类别的instance,让你可以和执行时期的环境做互动

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 13
时间: Wed Jun 19 00:59:26 2002

13.抽象类别(abstract classes)和介面(interfaces)有什么不同?
抽象类别和介面是两个不同的物件导向观念,用於不同的地方

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 14
时间: Wed Jun 19 01:10:24 2002

14.如何改变现在的工作目录?

在JDK1.3中,使用 Runtime.exec(String command,String [] envp, File dir)
会产生一个原生的process来执行command所指定的程式

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 15
时间: Wed Jun 19 01:28:47 2002

15.前置和后置的increment运算子有什么不同?
(a++ 和 ++a 有什么不同)

不同的地方在於发生累加的顺序

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 16
时间: Wed Jun 19 01:42:42 2002

16.递移运算子(Shift operators):为什么 3<<3 和 3<<1 是一样的?

在Java中,整数是二的补数的方式储存

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 17
时间: Wed Jun 19 01:52:18 2002

17.如何对两个日期做相减?

做日期相减的一个有效的方法是先将日期转成时间,再来做相减的动作

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 18
时间: Wed Jun 19 01:58:52 2002

18.我可以在哪里找到Java程式的写作惯例(coding convetions)?

下面有两个有关写作惯例不错的资源,包括好的版面设计的准则和变数的标准命名方式:

The Java Language Specification 中第六章有关命名惯例nhttp://java.sun.com/docs/books/jls/second_edition/html/names.doc.html

升阳定的 Code Conventions for the Java Programming language
http://java.sun.com/docs/codeconv/

18. Where can I find information on the Java programming language coding
conventions?

Following are two good resources on the Java programming language coding
conventions, including the principles of good layout, the standard format for
variable and class names, etc:

Chapter 6 of The Java Language Specification describes naming conventions.
Code Conventions for the Java Programming language, as set by Sun.

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 19
时间: Wed Jun 19 02:07:29 2002

19.介面(interface)可以从别的地方继承任何的行为吗?

介面可以继承别的介面

作者: swanky   发布时间: 2003-08-21

作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 20
时间: Wed Jun 19 02:16:54 2002

20.如何取得记忆体的统计资料(memory statistics)?

你可以使用Runtime类别来取得这些统计资料:

1
2
3
4
5
6
7
8
public class MemoryStats{ public static void main(String args[]){ long totalMem = Runtime.getRuntime().totalMemory(); long freeMem = Runtime.getRuntime().freeMemory(); System.out.println("Total memory"+ totalMem); System.out.println("Free memory" + freeMem); }
}


取得的资料是从Java 虚拟机器(JVM[ym] software)而来的

作者: swanky   发布时间: 2003-08-21

deprecated啊﹐以前也碰到过﹗
像响应事件时常会有这个warning
JDK的版本问题而已
不影响程序的执行效果

作者: 寒冰   发布时间: 2003-12-25

跨月好像会有问题耶???
还是我写错了!!!

作者: dinos   发布时间: 2005-02-15

这篇标题跟内容少到一个3
3<<"33"和3<<1是一样的
swanky wrote:
作者: contagious (传染) 看板: java
标题: [合作翻译]Java新手 16
时间: Wed Jun 19 01:42:42 2002

16.递移运算子(Shift operators):为什么 3<<3 和 3<<1 是一样的?

在Java中,整数是二的补数的方式储存

作者: 小波   发布时间: 2005-07-21

照指教试运行这个test文件,还是一样不行

作者: nfrog8108   发布时间: 2005-08-25

程式码友 bug,顺便修理一下 XD
swanky wrote:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.io.*;
public class ReadingProcess { public static void main(String args[]){ //Provide a command as an input argument Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(args[0]); BufferedWriter buffOut = new BufferedWriter( new OutputStreamWriter( process.getOutputStream())); BufferedReader buffIn = new BufferedReader( new InputStreamReader( process.getInputStream()));
  buffOut.write("//Some String"); buffOut.flush(); //Ensure that the output reaches the process
  String s;
  if((s=buffIn.readLine())!= null) System.out.println(s);
  buffOut.close(); buffIn.close(); }
}



其实也没啥大不了的事情啦... 只不过复制贴上还要改,就会有点火大... [逃]

作者: psmonkey   发布时间: 2006-03-07

补充一点...
如果要delete档案的话...
除了要用file.delete()外...

如果你发现删不掉...可能是你之前有开启OutputStream或InputStream来读写档案...
如果是这样...要记得先close()...
file.delete()才会有效

作者: mch   发布时间: 2006-06-11

swanky wrote:
'=='这个运算子会看看这两个字串的references是不是指向同一个字串object

作者: viva0322   发布时间: 2008-05-05

viva0322 wrote:
1.请问如果s1="HELLO" , s2=="hello" 有大小写的差别
那 s1==s2 还会是True吗? s1.equals(s2) 也会是True吗?大小写有影响吗?

2.如果用if( "nokia".equals(x[i].brand) ) {)
假设x[i].brand里头有nokia也有NOKIA ,那NOKIA也会比对成功吗?


第1个问题, s1 == s2 会得到false,java 的 == operator是用来比对两个object 的instance是不是同一个,如果你改成

<题外话>
在Groovy中 == operator 会呼叫到equals这个method,去判断value是否相同,而不是判断两个instance是不是同一个,但就算对Groovy来说s1 == s2还是分大小写的(当然你可以去override他),因Groovy在台湾似乎被冷落,故藉此题外话来看是否能提高他的人气

1
2
 String s1 = "Hello World"; String s2 = s1;


那么再比较 s1 == s2 就会得到true

而 s1.equals(s2) 一样会得到 false,若要不分大小写请改用 s1.equalsIgnoreCase(s2)

第2个问题不大了解,请您再解释

作者: jason_chan19   发布时间: 2008-05-05

我刚有去翻书,我找到我要的语法了
跟你说的一样 equalsIgnoreCase()

第2个问题其实就只是要搜寻大小写皆相同的意思
我已利用equalsIgnoreCase()写出来了 感谢你....

作者: viva0322   发布时间: 2008-05-05

今天测试了这些方法后得到以下结果:
在 MS Windows XP 环境下需要使用 Process p = rt.exec("command.com /c c:\\mydir\\myfile.bat"); 才可顺利执行

作者: kevin75116   发布时间: 2011-12-06

热门下载

更多