当前位置:文档之家› JAVA异常解读

JAVA异常解读

JAVA异常解读
JAVA异常解读

一、异常的概念和Java 异常体系结构

Java 把异常当作对象来处理,并定义一个基类https://www.doczj.com/doc/c56364379.html,ng.Throwable 作为所有异常的超类。在Java API 中已经定义了许多异常类,这些异常类分为两大类,错误Error 和异常Exception 。

Thorwable 类所有异常和错误的超类,有两个子类Error 和Exception ,分别表示错误和异常。其中异常类Exception 又分为运行时异常(RuntimeException) 和非运行时异常,也称之为不检查异常(Unchecked Exception )和检查异常(Checked Exception )。

Error 是程序无法处理的错误,比如OutOfMemoryError 、ThreadDeath 等。这些异常发生时,Java 虚拟机(JVM )一般会选择线程终止。Exception 是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。

运行时异常都是RuntimeException 类及其子类异常,如NullPointerException 、 IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异

常的发生。

非运行时异常是RuntimeException 以外的异常,类型上都属于Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException 、SQLException 等以及用户自定义的Exception 异常,一般情况下不自定义检查异常。

二、异常的捕获和处理

Java 异常的捕获和处理是一个不容易把握的事情,如果处理不当,不

但会让程序代码的可读性大大降低,而且导致系统性能低下,甚至引发一些难以发现的错误。

Java 异常处理涉及到五个关键字,分别是:try 、catch 、finally 、throw 、throws 。

try 、catch 、finally 三个语句块应注意的问题

1>try 、catch 、finally 三个语句块均不能单独使用,三者可以组成try...catch...finally 、try...catch 、try...finally 三种结构,catch 语句可以有一个或多个,finally 语句最多一个。

2>try 、catch 、finally 三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。

3> 多个catch 块时候,只会匹配其中一个异常类并执行catch 块代码,而不会再执行别的catch 块,并且匹配catch 语句的顺序是由上到下。throw、throws 关键字

throw 关键字是用于方法体内部,用来抛出一个Throwable 类型的异常。如果抛出了检查异常,则还应该在方法头部声明方法可能抛出的异常

类型。该方法的调用者也必须检查处理抛出的异常。如果所有方法都层层上抛获取的异常,最终JVM 会进行处理,处理也很简单,就是打印异常消息和堆栈信息。如果抛出的是Error 或RuntimeException ,则

该方法的调用者可选择处理该异常。

throws 关键字用于方法体外部的方法声明部分,用来声明方法可能会抛出某些异常。仅当抛出了检查异常,该方法的调用者才必须处理或者重新抛出该异常。当方法的调用者无力处理该异常的时候,应该继续抛出,而不是囫囵吞枣一般在catch 块中打印一下堆栈信息做个勉强处理。

三、异常处理的一般原则

1>能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException 处理。因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。

2> 对于检查异常,如果不能行之有效的处理,还不如转换为RuntimeException 抛出。这样也让上层的代码有选择的余地――可处理也可不处理。

3> 对于一个应用系统来说,应该有自己的一套异常处理框架,这样当异常发生时,也能得到统一的处理风格,将优雅的异常信息反馈给用户。J2EE 项目异常处理

为什么要在J2EE 项目中谈异常处理呢?可能许多java 初学者都想说:“异常处理不就是 try….catch…finally 吗?这谁都会啊!”。笔者在初学java 时也是这样认为的。如何在一个多层的j2ee 项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked Exception 转化成unchecked Exception ,何时需要把

unChecked Exception 转化成checked Exception? 异常是否应该呈现到前端页面?如何设计一个异常框架?本文将就这些问题进行探讨。

1 . JAVA 异常处理

在面向过程式的编程语言中,我们可以通过返回值来确定方法是否正常执行。比如在一个c 语言编写的程序中,如果方法正确的执行则返回

1. 错误则返回0 。在vb 或delphi 开发的应用程序中,出现错误时,

我们就弹出一个消息框给用户。

通过方法的返回值我们并不能获得错误的详细信息。可能因为方法由不同的程序员编写,当同一类错误在不同的方法出现时,返回的结果和错误信息并不一致。

所以java 语言采取了一个统一的异常处理机制。

什么是异常?运行时发生的可被捕获和处理的错误。

在java 语言中,Exception 是所有异常的父类。任何异常都扩展于Exception 类。Exception 就相当于一个错误类型。如果要定义一个新的错误类型就扩展一个新的Exception 子类。采用异常的好处还在于可以精确的定位到导致程序出错的源代码位置, 并获得详细的错误信息。

Java 异常处理通过五个关键字来实现,try,catch,throw ,throws, finally 。具体的异常处理结构由try….catch….finally 块来实现。

try 块存放可能出现异常的java 语句,catch 用来捕获发生的异常,并对异常进行处理。Finally 块用来清除程序中未释放的资源。不管理try 块的代码如何返回,finally 块都总是被执行。

一个典型的异常处理代码

java 代码

1.

2.public String getPassword(String userId)throws Da

taAccessException{

3.String sql = “select password from userinfo wher

e userid=’”+userId +”’”;

4.String password = null;

5.Connection con = null;

6.Statement s = null;

7.ResultSet rs = null;

8.try{

9. con = getConnection();// 获得数据连接

10. s = con.createStatement();

11. rs = s.executeQuery(sql);

12. while(rs.next()){

13. password = rs.getString(1);

14. }

15. rs.close();

16. s.close();

17.

18.}

19.Catch(SqlException ex){

20. throw new DataAccessException(ex);

21.}

22.finally{

23. try{

24. if(con != null){

25. con.close();

26. }

27. }

28. Catch(SQLException sqlEx){

29. throw new DataAccessException(“关闭连接失

败!”,sqlEx);

30. }

31.}

32.return password;

33.}

34.

可以看出Java 的异常处理机制具有的优势:

给错误进行了统一的分类,通过扩展Exception 类或其子类来实现。从而避免了相同的错误可能在不同的方法中具有不同的错误信息。在不同的方法中出现相同的错误时,只需要throw 相同的异常对象即可。

获得更为详细的错误信息。通过异常类,可以给异常更为详细,对用户更为有用的错误信息。以便于用户进行跟踪和调试程序。

把正确的返回结果与错误信息分离。降低了程序的复杂度。调用者无需要对返回结果进行更多的了解。

强制调用者进行异常处理,提高程序的质量。当一个方法声明需要抛出一个异常时,那么调用者必须使用try….catch 块对异常进行处理。当然调用者也可以让异常继续往上一层抛出。

2 . Checked 异常还是 unChecked 异常?

Java 异常分为两大类:checked 异常和unChecked 异常。所有继承https://www.doczj.com/doc/c56364379.html,ng.Exception 的异常都属于checked 异常。所有继承

https://www.doczj.com/doc/c56364379.html,ng.RuntimeException 的异常都属于unChecked 异常。

当一个方法去调用一个可能抛出checked 异常的方法,必须通过try…

catch 块对异常进行捕获进行处理或者重新抛出。

我们看看Connection 接口的createStatement() 方法的声明。

public Statement createStatement() throws SQLException;

SQLException 是checked 异常。当调用createStatement 方法时,java 强制调用者必须对SQLException 进行捕获处理。

java 代码

1. public String getPassword(String userId){

2. try{

3.……

4. Statement s = con.createStatement()

;

5.……

6. Catch(SQLException sqlEx){

7.……

8. }

9.……

10.}

或者

java 代码

1.public String getPassword(String userId)throws SQ

LException{

2. Statement s = con.createStatement();

3.}

( 当然,像Connection,Satement 这些资源是需要及时关闭的,这里仅是为了说明checked 异常必须强制调用者进行捕获或继续抛出)

unChecked 异常也称为运行时异常,通常 RuntimeException 都表示用户无法恢复的异常,如无法获得数据库连接,不能打开文件等。虽然用

户也可以像处理checked 异常一样捕获 unChecked 异常。但是如果调用者并没有去捕获unChecked 异常时,编译器并不会强制你那么做。

比如一个把字符转换为整型数值的代码如下:

java 代码

1.String str = “123”;

2.int value = Integer.parseInt(str);

parseInt 的方法签名为:

java 代码

1.public static int parseInt(String s) throws Numbe

rFormatException

当传入的参数不能转换成相应的整数时,将会抛出NumberFormatException 。因为NumberFormatException 扩展于RuntimeException ,是unChecked 异常。所以调用parseInt 方法时

无需要try…catch

因为java 不强制调用者对unChecked 异常进行捕获或往上抛出。所

以程序员总是喜欢抛出unChecked 异常。或者当需要一个新的异常类时,总是习惯的从RuntimeException 扩展。当你去调用它些方法时,如果

没有相应的catch 块,编译器也总是让你通过, 同时你也根本无需要去了解这个方法倒底会抛出什么异常。看起来这似乎倒是一个很好的办法,但是这样做却是远离了java 异常处理的真实意图。并且对调用你这个类的程序员带来误导,因为调用者根本不知道需要在什么情况下处理异常。而checked 异常可以明确的告诉调用者,调用这个类需要处理什么异常。如果调用者不去处理,编译器都会提示并且是无法编译通过的。当然怎么处理是由调用者自己去决定的。

所以Java 推荐人们在应用代码中应该使用checked 异常。就

像我们在上节提到运用异常的好外在于可以强制调用者必须对将会产

生的异常进行处理。包括在《java Tutorial 》等java 官方文档中都把checked 异常作为标准用法。

使用checked 异常,应意味着有许多的try…catch 在你的代

码中。当在编写和处理越来越多的try…catch 块之后,许多人终于开始怀疑checked 异常倒底是否应该作为标准用法了。

甚至连大名鼎鼎的《thinking in java 》的作者Bruce Eckel 也改变了他曾经的想法。Bruce Eckel 甚至主张把unChecked 异常作为标准用法。并发表文章,以试验checked 异常是否应该从java 中去掉。Bruce Eckel 语:“当少量代码时,checked 异常无疑是十分优雅的构思,

并有助于避免了许多潜在的错误。但是经验表明,对大量代码来说结果正好相反”

关于checked 异常和unChecked 异常的详细讨论可以参考

Alan

Griffiths https://www.doczj.com/doc/c56364379.html,/java/ExceptionalJa va.html

Bruce

Eckel https://www.doczj.com/doc/c56364379.html,/Etc/Disscussions/CheckedExcept ions

《java Tutorial 》

https://www.doczj.com/doc/c56364379.html,/docs/books/tutorial/essential/exceptions/ runtime.html

使用checked 异常会带来许多的问题。

checked 异常导致了太多的try…catch 代码

可能有很多checked 异常对开发人员来说是无法合理地进行处理的,比如 SQLException 。而开发人员却不得不去进行try…catch 。当开发人员对一个checked 异常无法正确的处理时,通常是简单的把异常打印出来或者是干脆什么也不干。特别是对于新手来说,过多的checked 异常让他感到无所适从。

java 代码

1. try{

2.……

3. Statement s = con.createStatement()

;

4.……

5. Catch(SQLException sqlEx){

6. sqlEx.PrintStackTrace();

7. }

8.或者

9. try{

10.……

11. Statement s = con.createStatement()

;

12.……

13. Catch(SQLException sqlEx){

14. // 什么也不干

15.}

checked 异常导致了许多难以理解的代码产生

当开发人员必须去捕获一个自己无法正确处理的checked 异常,通常的是重新封装成一个新的异常后再抛出。这样做并没有为程序带来任何好处。反而使代码晚难以理解。

就像我们使用JDBC 代码那样,需要处理非常多的try…catch. ,真正有用的代码被包含在try…catch 之内。使得理解这个方法变理困难起来

checked 异常导致异常被不断的封装成另一个类异常后再抛出

java 代码

1. public void methodA()throws ExceptionA{

2.…..

3. throw new ExceptionA();

4.}

5.

6.public void methodB()throws ExceptionB{

7. try{

8. methodA();

9.……

10. }catch(ExceptionA ex){

11. throw new ExceptionB(ex);

12. }

13.}

14.

15. Public void methodC()throws ExceptinC{

16. try{

17. methodB();

18.…

19. }

20. catch(ExceptionB ex){

21. throw new ExceptionC(ex);

22. }

23. }

我们看到异常就这样一层层无休止的被封装和重新抛出。

checked 异常导致破坏接口方法

一个接口上的一个方法已被多个类使用,当为这个方法额外添加一个checked 异常时,那么所有调用此方法的代码都需要修改。

可见上面这些问题都是因为调用者无法正确的处理checked 异常时而被迫去捕获和处理,被迫封装后再重新抛出。这样十分不方便,并不能带来任何好处。在这种情况下通常使用unChecked 异常。

chekced 异常并不是无一是处,checked 异常比传统编程的错误返回值要好用得多。通过编译器来确保正确的处理异常比通过返回值判断要好得多。

如果一个异常是致命的,不可恢复的。或者调用者去捕获它没有任何益处,使用unChecked 异常。

如果一个异常是可以恢复的,可以被调用者正确处理的,使用checked 异常。

在使用unChecked 异常时,必须在在方法声明中详细的说明该方法可能会抛出的unChekced 异常。由调用者自己去决定是否捕获unChecked 异常

倒底什么时候使用checked 异常,什么时候使用unChecked 异常?并没有一个绝对的标准。但是笔者可以给出一些建议

当所有调用者必须处理这个异常,可以让调用者进行重试操作;或者该异常相当于该方法的第二个返回值。使用checked 异常。

这个异常仅是少数比较高级的调用者才能处理,一般的调用者不能正确的处理。使用unchecked 异常。有能力处理的调用者可以进行高级处理,一般调用者干脆就不处理。

这个异常是一个非常严重的错误,如数据库连接错误,文件无法打开等。

或者这些异常是与外部环境相关的。不是重试可以解决的。使用

unchecked 异常。因为这种异常一旦出现,调用者根本无法处理。

如果不能确定时,使用unchecked 异常。并详细描述可能会抛出的异常, 以让调用者决定是否进行处理。

3 .设计一个新的异常类

在设计一个新的异常类时,首先看看是否真正的需要这个异常类。一般情况下尽量不要去设计新的异常类,而是尽量使用java 中已经存在的异常类。

java 代码

1.IllegalArgumentException, UnsupportedOperationExcept

ion

不管是新的异常是chekced 异常还是unChecked 异常。我们都必须考虑异常的嵌套问题。

java 代码

1.public void methodA()throws ExceptionA{

2.…..

3. throw new ExceptionA();

4.}

方法methodA 声明会抛出ExceptionA.

public void methodB()throws ExceptionB

methodB 声明会抛出ExceptionB, 当在methodB 方法中调用methodA 时,ExceptionA 是无法处理的, 所以ExceptionA 应该继续往上抛出。一个办法是把methodB 声明会抛出 ExceptionA. 但这样已经改变了MethodB 的方法签名。一旦改变,则所有调用methodB 的方法都要进行改变。

另一个办法是把ExceptionA 封装成ExceptionB ,然后再抛出。如果我们不把ExceptionA 封装在ExceptionB 中,就丢失了根异常信息,使得无法跟踪异常的原始出处。

java 代码

1.public void methodB()throws ExceptionB{

2. try{

3. methodA();

4.……

5. }catch(ExceptionA ex){

6. throw new ExceptionB(ex);

7. }

8.}

如上面的代码中,ExceptionB 嵌套一个ExceptionA. 我们暂且把ExceptionA 称为“起因异常”, 因为ExceptionA 导致了ExceptionB 的产生。这样才不使异常信息丢失。

所以我们在定义一个新的异常类时,必须提供这样一个可以包含嵌套异常的构造函数。并有一个私有成员来保存这个“起因异常”。

java 代码

1.public Class ExceptionB extends Exception{

2.private Throwable cause;

3.

4.public ExceptionB(String msg, Throwable ex){

5. super(msg);

6. this.cause = ex;

7.}

8.

9.public ExceptionB(String msg){

10. super(msg);

11.}

12.

13.public ExceptionB(Throwable ex){

14. this.cause = ex;

15.}

16.}

当然,我们在调用printStackTrace 方法时,需要把所有的“起因异常”的信息也同时打印出来。所以我们需要覆写printStackTrace 方法来显示全部的异常栈跟踪。包括嵌套异常的栈跟踪。

java 代码

1.public void printStackTrace(PrintStrean ps){

2.if(cause == null){

3. super.printStackTrace(ps);

4.}else{

5. ps.println(this);

6. cause.printStackTrace(ps);

7.}

8.}

一个完整的支持嵌套的checked 异常类源码如下。我们在这里暂且把它叫做NestedException

java 代码

1.public NestedException extends Exception{

2.private Throwable cause;

3.public NestedException (String msg){

4. super(msg);

5.}

6.

7.public NestedException(String msg, Throwable ex){

8. super(msg);

9. This.cause = ex;

10.}

11.

12.public Throwable getCause(){

13. return (this.cause == null ? this :this.cause);

14.}

15.

16.public getMessage(){

17. String message = super.getMessage();

18. Throwable cause = getCause();

19. if(cause != null){

20. message = message + “;nested Exception is ” +

cause;

21. }

22. return message;

23.}

24.public void printStackTrace(PrintStream ps){

25. if(getCause == null){

26. super.printStackTrace(ps);

27.

28. }else{

29. ps.println(this);

30. getCause().printStackTrace(ps);

31. }

32.}

33.

34.public void printStackTrace(PrintWrite pw){

35. if(getCause() == null){

36. super.printStackTrace(pw);

37. }

38. else{

39. pw.println(this);

java基础笔试测试题与答案

Java 一章至五章考试 一. 填空题(8 分) 1. 面向对象的三大原则是( 封装),( 继承) 和( 多态).2 分 2. 如果想在对象实例化的同时就初始化成员属性,则使用( 构造函数).2 分 3. ( 实体) 方法和( 构造) 方法不能修饰为abstract ?2分 二.选择题(60 分) 1) 在Java 语言中,下列(a,d )是不满足命名规范的变量名。(选择二项) a) 姓名 b) $Name c) _instanceof d) instanceof 2) 下列Java 代码片段的输出结果是( a ) 。 char c='a'; int i=c; float f=i; byte b=(byte)c; System.out.println(c+","+i+","+f+","+b); a) 编译错误 b) a,97,97,97 c) a,97,97.0,97 d) a,97,97.0f,97 3) 下列Java 代码中,空白处的代码是(b,c )。( 选择两项) public interface Fee{ public float calLabFee(float unitPrice, float time); } public class FeeImpl implements Fee { public float calLabFee(float unitPrice, float time){ return unitPrice * time; } } public class FeeInterfaceTest { public static void main(String[] args){ ________________ Float labFee = fee.calLabFee(400.00,5); } }

Java基础知识总结(超级经典)

Java基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它

两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运

Java编程中常见的错误有哪些

Java编程中常见的错误有哪些? sql错误 找不到列 Unknown column …fillMen? in …field list? 2.列名在sql语句中写了2次 Column …fillMan? specified twice 3.下面2条数据库插入对应的列都是int类型的所插入的数据类型不符合要求时报错 Data truncated for column …gatheringMoney? at row 1 Data truncation: Out of range value adjusted for column …amount? at row 1 4. Mixing of GROUP columns (MIN(),MAX(),COUNT(),…) with no GROUP columns is illegal if there is no GROUP BY clause 5.修改一个表时无法取得同一个表的数据 ERROR 1093 (HY000): You can?t specify target table …context? for update in FROM clause 6.主键未自动增长 ERROR 1062 : 7.int 类型字符过长 com.mysql.jdbc.exceptions.MySQLDataException: ?2.5026744582E10′in column ?1′is outside valid range for the datatype INTEGER. 8.没找到错误没影响数据读取 java.sql.SQLException: Operation not allowed after ResultSet closed 9.类型错误最常见的是数字类型错误 Data truncated for column …gatheringMoney? at row 1 10.换另一个项目时数据库连接池没换(未解) Name java: is not bound in this Context 换了之后似乎还是不行 ===== java:/comp/env/jdbc/ConnSqlSer 前面多了一个?/? 应为java:comp/env/jdbc/ConnSqlSer ======= 11.\(未解) java.sql.SQLException: QueryRunner requires a DataSource to be invoked in this way, or a Connection should be passed in 12.executeQuery()方法改成execute()(未解) Can not issue data manipulation statements with executeQuery(). Can not issue data manipulation statements with executeQuery(). struts错误 Failed to obtain specified collection 下拉框没值 警告: No FormBeanConfig found under …yuanLiaoRuKuForm?配置文件Form出错 Cannot find bean: “org.apache.struts.taglib.html.BEAN” in any scope < html:text >标签外面没有嵌套标签

Java基础知识

一、填空题(每题1分,共50分) 1.Java程序可以分为两种基本的类型,分别是_________________和_________________。 2.如果一个类不显示地写上其继承的父类,则它的默认的直接父类是系统类_______________。 3.Java对内存的释放是采用____________________机制。 4.接口的所有成员方法都具有________________和________________属性。 5.设有一个Java应用程序,其源程序文件名为Test.java,则编译该源程序的命令是_________________________,运行该应用程序的命令为_________________________。 6.如果线程类A需要继承类B,而类B不是线程类,则需要通过接口类Runnable构造线程类A,类A的具体定义为 ___________________________________________________。 7.Java系统提供了方法____________________来强制立即回收垃圾。 8.运行以下语句后b的值是__________________。 String s1=“1234”; String s2=new String(“1234”); Boolean b=(s1 = = s2); 9.通过Connection实例对象的_____________________方法可以创建出Statement的实例对象。 10.JAVA小应用程序一般是_____________的子类。 11.JAVA语言通过____________机制简化了程序的内存管理。 12.JAVA字符(char)采用的是___________字符集。 13.面向对象的计算机语言一般应具有3个基本特性:____________、____________和______________。 14.JAVA语言中,捕获异常是通过________________语句结构来实现的。 15.编写线程程序主要是构造线程类,而构造线程类的方式主要有以下两种:(1)____________________________________________ (2)____________________________________________ 16.假设用JAVA语言为清华大学(网址为https://www.doczj.com/doc/c56364379.html,)编写了图像处理包image,那么按照SUN公司的建议,这个包的名称最好为_________________。 17.JAVA数据类型中,具体包括哪三种引用数据类型:___________、____________、______________。 18.JAVA程序以________为单位进行组织的。 19.如果没有显式的定义类的构造方法,则系统会为该类定义一个默认的构造方法,这个默认的构造方法的作用是_____________________________________。

Java基础知识及面试题

Java基础 1.什么是类?类是某一种事物的一般性的集合体,是相同的或相似的各个事物共同特性的一种抽象。 2.什么是对象?在面向对象概念中,对象是类的实例。对象与类的关系就像变量与数据类型的关系一样。 3.类的核心特性 封装性:类的封装性为类的成员提供公有的、缺省的、保护的、私有的等多级访问权限。目的是隐藏类中的私有变量和类中方法的实现细节。 继承性:类的继承性提供从已存在的类创建新类的机制,继承使一个新类自动拥有被继承类的全部可继承的成员。 多态性:类的多态性提供类中方法执行的多样性,有两种表现形式:重载和覆盖。 4.方法:对象中方法表达了对象所具有的行为。 5.属性:一个对象的属性是能够被外界或对象所处的环境所感知或操纵的数据或状态。 6.什么是Java?Java是一门易于编程的跨平台编程语言,同时又是一个开发、应用、执行和部署的平台。 7.为什么要有Java?Java与平台无关、一次编译处处运行、以及他的易于编程的特性。 8.Java开发程序的步骤?编写源代码(2)编译(3)执行 9.Java的环境变量 1)JAVA –HOME jdk的安装路径 2)CLASSPATH jvmclass字节码文件时的搜索路径 3)PATH 是系统的环境变量、命令的搜索路径 10.JVM :Java Virtual Machine 是一个逻辑的操作系统、它屏蔽了硬件和平台的信息、jvm能将字节码文件解释并执行、正 是这种独立执行的方式是Java 具有与平台无关的特性。 11.类的加载过程:类加载器加载字节码文件到存、jvm存数据区将对象状态放置在堆区、各线程使用的变量放在栈区、类的 特征放在方法区、然后进行字节码验证再执行。 12.常用的Java命令:Javac、java、javadoc、jar 13.类的语法与规 一个源文件只能有一个public的类 Public源文件可以有多个类定义 源文件名必须与public类名保持一致 包名必须放在第一行 包名可以有0个或1个但不能有多个 源文件如果带包的话最好存放在包结构对应的目录下 标识符程序语言用于标识变量名类名方法名的字符串就是标识符。 标识符必须字母下划线美元符开头大小写敏感。 类名要求首字母大写 方法名首字母小写每个单词首字母大写 常量名所有字母大写如果有两个或几个字母的联合用下划线连接 关键字:程序语言中、程序已经所有用户不能再使用的单词一般关键字都是小写 14 .数据类型:基本数据类型: 整型(byte、short、int、long)默认是int 浮点型(float、double)、默认是double 布尔型(boolean)、 字符型(char) 引用类型:类、接口、数组 15 .main()方法执行过程 1)先到方法区搜索student、如果搜索不到则去加载student的字节码文件 2)通过classpath查找对应的student字节码文件找不到就返回错误(ClassNotFound) 3)将字节码文件的二进制数据转换为class对象放置于方法区(class对象描述了student类的方法特征及静态成员等)加载完成 4)验证字节码文件

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

Java中常见错误和异常解决方法(打印)

https://www.doczj.com/doc/c56364379.html,ng.NullPointerException 原因是:有空指针,有地址没赋值 2.Exception in thread "main" https://www.doczj.com/doc/c56364379.html,ng.ArithmeticException: / by zero 原因是除数是0 3.ArrayIndexOutOfBoundsException 原因是:数组越界 https://www.doczj.com/doc/c56364379.html,ng.NumberFormatException 原因是:数字格式化有问题 5.Unhandled exception type Exception 原因是:没有进行异常处理 6.进行国际化操作的时候遇到这样的错误:Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name Message, locale zh_CN 答:因为在命令提示符中,是没有错误的 解决方法是:在myeclipse中,会出现这个错误 java国际化之Can't find bundle for base name 1.初步学习 最近在学习ResourseBundle时遇到了“Can't find bundle for base name ”这个错误搞了很 久才解决了。原因就是类路径问题要将属性文件放在类路径中!百度里很多都是教程但没有涉及到解决方法!2.中文显示: 测试文件 java 代码 package com.lht.ResourseBundleStudy; import java.util.ResourceBundle; public class ResourseBundleDemo { public static void main(String[] args) { ResourceBundle resource = ResourceBundle.getBundle("test"); System.out.print(resource.getString("msg0") + "!"); System.out.println(resource.getString("msg1") + "!"); } } test.properties msg0="Hello World" msg1="da jia hao" 开始自己测试的时候:将属性文件放在bin/下也试过也不行无赖中就在google中搜索了一 下终于在sun的java论坛

JAVA笔试题--基础很全有答案

第一组 1.下列不可作为java语言修饰符的是(D) A) a1 B) $1 C) _1 D) 11 2.有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是(A) A) a1.java B) a1.class C) a1 D) 都对 3.整型数据类型中,需要内存空间最少的是(D) A) short B) long C) int D) byte 4. Java 类可以作为(C) A) 类型定义机制 B) 数据封装机制 C) 类型定义机制和数据封装机制 D) 上述都不对 5.在创建对象时必须(C) A) 先声明对象,然后才能使用对象 B) 先声明对象,为对象分配内存空间,然后才能使用对象 C) 先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象 D) 上述说法都对 6.在调用方法时,若要使方法改变实参的值,可以(B) A) 用基本数据类型作为参数 B) 用对象作为参数 C) A和B都对 D) A和B都不对 7. Java中(C) A) 一个子类可以有多个父类,一个父类也可以有多个子类 B) 一个子类可以有多个父类,但一个父类只可以有一个子类 C) 一个子类可以有一个父类,但一个父类可以有多个子类 D) 上述说法都不对 8.Java语言具有许多优点和特点,哪个反映了Java程序并行机制的特点?(B) A) 安全性B) 多线性C) 跨平台D) 可移植 9. Character流与Byte流的区别是(C) A) 每次读入的字节数不同B) 前者带有缓冲,后者没有 C) 前者是字符读写,后者是字节读写D) 二者没有区别,可以互换使用

10.以下声明合法的是( D ) A、default String s; B、public final static native int w( ) C、abstract double d; D、abstract final double hyperbolicCosine( ) 11.关于以下application的说明,正确的是( C ) 1.class StaticStuff 2.{ 3.static int x=10; 4.static { x+=5;} 5.public static void main(String args[ ]) 6.{ 7.System.out.println(“x=”+ x); 8.} 9.static { x/=3;} 10. } A、4行与9行不能通过编译,因为缺少方法名和返回类型 B、9行不能通过编译,因为只能有一个静态初始化器 C、编译通过,执行结果为:x=5 D、编译通过,执行结果为:x=3 12.关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2.private static int x=100; 3.public static void main(String args[ ]){ 4.HasStatic hs1=new HasStatic( ); 5.hs1.x++; 6.HasStatic hs2=new HasStatic( ); 7.hs2.x++; 8.hs1=new HasStatic( ); 9.hs1.x++; 10.HasStatic.x- -; 11.System.out.println(“x=”+x); 12.} 13.} A、5行不能通过编译,因为引用了私有静态变量 B、10行不能通过编译,因为x是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 13.以下选项中循环结构合法的是( C ) A、while (int i<7) { i++;

Java常见异常和错误

Java常见异常和错误 1、在某一路径下执行编译好的class文件出错。 异常如下: E:\liwy>java Test98 Exception in thread "main" https://www.doczj.com/doc/c56364379.html,ng.NoClassDefFoundError: Test98 如果出现了以上错误提示,常见问题有如下两种:1 大小写写错了,2 路径不正确。 2、数组错误,访问不存在的数组,数组超出绑定,代码如下: public class ArrayDemo { public static void main(String args[]){ int array[] = null; //声明数组 array = new int[3]; //为数组开辟空间,大小为3 for(int i=0;i

《Java编程基础知识点汇总及习题集》--答案

目录 第一章 Java入门 (2) 第二章 Java基础 (5) 第三章条件转移 (16) 第四章循环语句 (22) 第五章方法 (28) 第六章数组 (35) 第七章面向对象 (44) 第八章异常 (65)

第一章Java入门 知识点汇总 1、JAVA 三大体系 ?Java SE:(J2SE,Java2 Platform Standard Edition,标准版),三个平台中最核心 的部分,包含Java最核心的类库。 ?JavaEE:(J2EE,Java 2 Platform, Enterprise Edition,企业版),开发、装 配、部署企业级应用,包含Servlet、JSP、 JavaBean、JDBC、EJB、Web Service等。 ?Java ME:(J2ME,Java 2 Platform Micro Edition,微型版),用于小型电子设备 上的软件开发。 2、JDK,JRE,JVM的作用及关系 作用 ★JVM:保证Java语言跨平台 ★JRE:Java程序的运行环境 ★JDK:Java程序的开发环境 关系 ★JDK:JRE+工具 ★JRE:JVM+类库 3、JDK环境变量配置 ?path环境变量:存放可执行文件的存 放路径,路径之间用逗号隔开 ?classpath环境变量:类的运行路径, JVM在运行时通过classpath加载需要 的类 4、重点掌握两个程序 ?javac.exe:Java编译器工具,可以将编 写好的Java文件(.java)编译成Java 字节码文件(.class); ?java.exe:Java运行工具,启动Java虚 拟机进程,运行编译器生成的字节码 文件(.class) 5、一切程序运行的入口 public static void main(String args []){ System.out.println(“Hello World!”); } 课堂笔记

Java基础知识试题

第一章JA V A基础知识 §1.1 Java概述 1.完成在Windows 2000操作系统下环境变量的配置 2.创建一个Java程序,输出自己的基本信息:名字和年龄。 3.概述Java语言的版本发展过程。 4.简述Java语言的运行机制。 5.在自己的机器上用JDK开发运行环境完成第一个Java程序的编辑、编译、运行过程。6.简述Java语言的特点,Java虚拟机的概念及作用。 §1.2 java基本语法 1.什么是变量?什么是常量? 2.什么叫表达式,Java语言中共有几种表达式? 3.下面哪些表达式不合法?为什么? HelloWorld 2Thankyou _First -Month 893Hello non-problem HotJava implements $_MyFirst 4. 以下的选项中能正确表示Java语言中的一个整型常量的是( )。 A) 12. B) -20 C) 1,000 D) 4 5 6 5. 以下选项中,合法的赋值语句是( )。 A) a = = 1; B) ++ i; C) a=a + 1= 5; D) y = int ( i ); 6. 若所用变量都已正确定义,以下选项中,非法的表达式是( )。 A) a != 4||b==1 B) 'a' % 3 C) 'a' = 1/2 D) 'A' + 32 7. 若有定义int a = 2;则执行完语句a += a -= a * a; 后,a的值是( )。 A) 0 B) 4 C) 8 D) –4 8. 在Java语言中,逻辑常量只有true 和___________ 两个值。 9.Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float和 __________两种具体类型。

JAVA基础面试题经典

JAVA基础面试题经典

第一阶段题库 基础知识部分: 1.JDK是什么?JRE是什么? a)答:JDK:java开发工具包。JRE:java运行时 环境。 2.什么是java的平台无关性? a)答:Java源文件被编译成字节码的形式,无论 在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。 3.在一台电脑上配置java环境,path起什么作 用?如何配置? a)答:path的作用是在DOS环境下,能在任意 位置使用JDK目录中bin文件夹中的可执行程序,来编译执行java程序。 b)在环境变量中找到path变量,把bin文件夹 的绝对路径加上即可。 4.什么样的标识符是合法的? a)由字母、数字、_和$组成,长度不限。其中字 母能够是大写或小写的英文字母,数字为0到9。

b)标识符的第一个字符不能是数字。 c)标识符区分大小写。 d)标识符不能包含空格。 5.Java有几种基本数据类型? a)byte,short,int,long,char,boolean,float,double 6.什么是隐式类型转换?什么是显示类型转换? a)当将占位数少的类型赋值给占位数多的类型 时,Java自动使用隐式类型转换。 b)当把在级别高的变量的值赋给级别底变量时, 必须使用显示类型转换运算。 7.&&和&区别,||和|区别? a)&&和||是短路与,短路或,当左边的表示式能 判断当前结果,则不判断右边的表示式。 b)而& 和|则将两边的表示式都运算完毕后,再 算结果。 8.break,continue区别? a)break结束最近的一个循环,continue结束当 次循环,进入下次循环。 9.类的命名规则是什么? a)如果类名使用拉丁字母,那么名字的首写字母 使用大写字母。

java基础知识分析

Java 思路 1写代码 1)明确需求,我要做什么? 2)分析思路。要怎么做?1 2 3。 3)确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4)代码实现。用具体的java语言代码把思路体现出来 2学习新技术的四点 1)该技术是什么? 2)该技术有什么特点(使用注意) 3)该技术怎么使用。Demo 4)该技术什么时候使用?test。 一Java 概述: 1991年San公司的JamesGosilng(詹姆斯·高斯林) 等人开始开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒,PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构; JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对wep程序的开发 JAVASE: Java Platform Enterprise Edition, 完成桌面应用程序的开发是其他两者的基础; JAVAME: Java DevelopmentKit, java的开发和运行环境,java的开发工具jre;

JDK, JRE: 1JDK:java DevelopmentKit , java的开发和运行环境,java的开发工具和jre。 2JRE:java Runtime Environment, java程序的运行环境,java运行的所需的类库+JVM(java 虚拟机)。 3配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 1) 永久配置方式: JAVA_HOME=%安装路径%\Java\jbk Path=%JAVA_HOME%\bin 2) 配置临时方式: setpath=%path%C:\ProgramFiles\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置路径下找。 classpath的配置: 1)永久配置方式:classpath=.;c:\;e:\ 2)临时配置方式:setclasspath=.c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况: 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件。如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1)如果classpath的值结果有分号,在具体路径中没有找到运行的类,会默认在前目录 在找一次。 2)如果classpath的值结果处没有分号,在具体路径中没有找到运行的类,不会再当前 目录找。 一般不指定分号,如果没有在指定目录下找到想运行的类文件,就报错,这样可以调试程序4javac命令和java命令做什么事情呢? 要知道java是分两部分的: 一个人是编译,一个是运行。 Javac: 负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java 文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件也就是java的运行程序。 Java: 负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行. 一个文件要被执行,必须要有一个执行的起始点就是main函数(也叫方法)。

JAVA常见编译错误信息及说明

Java编译错误信息及说明 1、java:33:不是语句 解释:程序中出现了没有任何意义的字符(串),可能是无意中打出了没有任何意义的字符; 2、java:34:需要';' 解释:某条语句没有以分号结束; 3、java:36:缺少返回语句 解释:带返回值的函数缺少return语句; 4、java:33:不兼容的类型 解释:运算符两边的数据类型不一致或者不能做隐式转换; 5、java:36:无法访问的语句 解释:此语句永远不可能被执行,可能是此语句之前存在类似于while(true)的语句,导致此语句永远不可能被执行; 6、java:34:非法的表达式开始 解释:有不符合语法规范的表达式出现; 7、java:34:找不到符号 解释:使用了没有定义或没有引入的变量; 8、java:33:非法字符:\65307 解释:在中文输入状态下输入了一些标点符号; 9、java:18:不可转换的类型 解释:运算符两边的数据类型不一致或者不能做隐式转换; 10、java:19:"else"不带有"if" 解释:编译器找到else语句但是没有找到与之对应的if语句,可能是由于大括号没有成对出现;

11、java:12:可能损失精度 解释:把高精确度类型的数据赋值给低精确度类型的变量; 12、java:17:需要')' 解释:括号没有成对出现; 13、java:8:可能尚未初始化变量s 解释:局部变量s没有赋初值; 14、java:7:不可比较的类型:int和Boolean 解释:运算符两边操作数的数据类型不符合运算符的使用规范; 15、java:6:已在isLeap(int)中定义year 解释:变量year被重复定义; 16、java:21:字符字面值的行结尾不合法 解释:程序语句的结尾不是java规定的结束符号,而是其他的符号; 17、java:9:需要<标识符> 解释:可能是由于用户指定了数据类型,但未指定该类型的变量名; 18、java:8:无法从静态上下文中引用非静态变量this 解释:在静态方法中使用了非静态变量this; 19、java:12:在switch或loop外部中断 解释:在非循环语句或非switch语句中使用了中断循环功能的语句break; 20、java:21:对于结果类型为void的方法,无法返回值 解释:空返回值方法中出现了return语句; 21、java:12:需要数组,但找到int 解释:在应该出现数组的地方没有找到数组类型的变量,而是找到int类型的变量; 22、java:13:无法将Node中的setData(int)应用于()

Java编程基础知识点汇总及习题集答案

J a v a编程基础知识点汇总及习题集答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

目录 第一章 Java入门 (2) 第二章 Java基础 (5) 第三章条件转移 (14) 第四章循环语句 (20) 第五章方法 (26) 第六章数组 (33) 第七章面向对象 (42) 第八章异常 (63) 第一章 Java入门 知识点汇总 1、JAVA 三大体系 Java SE:(J2SE,Java2 Platform Standard Edition,标准版),三个平台中最核心的部分,包含Java 最核心的类库。 JavaEE:(J2EE,Java 2 Platform, Enterprise Edition,企业版),开发、装配、部署企业级应用,包含Servlet、JSP、JavaBean、JDBC、EJB、Web Service等。 Java ME:(J2ME,Java 2

Platform Micro Edition,微型版),用于小型电子设备上的软件开发。 2、JDK,JRE,JVM的作用及关系作用 ★JVM:保证Java语言跨平台 ★JRE:Java程序的运行环境 ★JDK:Java程序的开发环境 关系 ★JDK:JRE+工具 ★JRE:JVM+类库 3、JDK环境变量配置 path环境变量:存放可执行文件的存放路径,路径之间 用逗号隔开 classpath环境变量:类的运行路径,JVM在运行时通过classpath加载需要的类 4、重点掌握两个程序 :Java编译器工具,可以将编写好的Java文件(.java)编译成Java字节码文件(.class); :Java运行工具,启动Java虚拟机进程,运行编译器生成的字节码文件(.class) 5、一切程序运行的入口public static void main (String args []){ World!”); } 课堂笔记

Java基础知识总结

基础预备:低级基础 1.1 java基本类型 byte(字节) short(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char(字符型) boolean(布尔型) 1.2值传递和引用传递的区别 值传递:实参初始化形参,两个存储单元不同,不影响实参的值 引用传递:实际参数与形式参数指向同一个地址,形式参数的改变将会影响实际参数1.3当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。方法调用该对象引用的参数,参数被改变,但是引用不会改变 1.4 &和&&的区别。 &和&&都是逻辑「与」,&&只要第一个表达式是false就不会计算第二个表达式 &也可以作为运算符 2.1使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 引用变量不能变,引用变量所指向的对象中的内容可以改变 2.2final类型可不可以不初始化,如果没有初始化的final类型应该在哪里初始化? final一定有初始值,没有初始化叫空白final 如果没有需要声明之后在其构造器中赋值 2.3 "=="和equals方法究竟有什么区别? 「==」是看两个对象引用是否指向同一个对象 「 equals() 」是比较两个对象的内容是否相等 3.1静态变量和实例变量的区别 静态变量的变量前加了static 的修饰,其中一个对象将它值改变,其他对象得到的就是改变后的结果; 实例变量的变量前没加static 的修饰,某一个对象将其值改变,不影响其他对象

3.2是否可以从一个static方法内部发出对非static方法的调用?为什么? 不可以。使用非static方法需要先创建对象,而使用static方法则不用 4.1 java中什么是自动装箱与拆箱呢? 自动装箱是某地方需要Integer类型,你传int类型会自动生成Integer, 反之Integer变int,就是自动拆箱 4.2 int 和 Integer 有什么区别 Int是基本数据类型,Integer是int的封装类。 原始类型封装类 Boolean Boolean Char Character Byte Byte Short Short Int Integer Long Long Float Float Double Double 5.1请说出作用域public, protected,以及不写时的区别 不写是表示friendly。 作用域当前类同一package 子孙类其他package public √√√√ protected √√√× friendly √√×× private √××× 6.1能不能自己写个类,也叫https://www.doczj.com/doc/c56364379.html,ng.String? 可以,但在应用的时候,需要用自己的类加载器去加载,否则,系统的类加载器永远只是去加载jre.jar包中的那个https://www.doczj.com/doc/c56364379.html,ng.String。 7.1 排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 冒泡,选择,插入,快速 冒泡排序:

Java常见问题

Java面试题 1.什么是B/S架构?什么是C/S架构? 2.你所知道的网络协议有哪些? 3.Java都有哪些开发平台? 4.什么是JVM?java虚拟机包括什么? 5.Java是否需要开发人员进行垃圾回收? 6.什么是数据结构? 7.Java有哪些数据结构? 8.什么是jdk?JRE? 9.什么是OOP? 10.什么是面向对象? 11.类与对象的关系? 12.Java中有几种数据类型? 13.什么是隐式转换,显式转换? 14.char能不能转换成int?string?double? 15.什么是拆装箱? 16.Java中包装类都有哪些? 17.一个Java类中都包括哪些 18.列如:if(a+1.0=4.0),这样做好吗 19.那针对浮点型数据运算出现错误的问题,你怎么解决 20.程序的结构有哪些 21.数组实例化有几种方式 22.Java中各种数据默认值 23.Java常用包有哪些 24.Java最顶级的父类是 25.Object类最常用的方法有哪些 26.Java中有没有指针 27.Java中是值传递还是引用传递 28.假设把实例化的数组的变量当做方法参数,当方法执行的时候改变了数组内的元素,那么方法外,数组元素有发生改变吗 29.实例化数组后,能不能改变数组的长度 30.假如数组内有5个元素,如果对数组反序,该如何做 31.++i与i++有什么区别 32.形参与实参 33.构造方法能不能显示调用 34.构造方法能不能重写?重载? 35.什么是方法重载 36.内部类和静态内部类的区别 37.Static关键字有什么作用 38.Final在java中的作用 39.Java中操作字符串使用哪个类

java基础知识点

第一天课程(2012-7-10) JAVA常用的名词 JVM java 虚拟机 Application 应用程序必须有一个入口的方法叫做public static void main(String[] args){} Applet 小应用程序该程序必须要内嵌在一个容器中运行,它有自己的生命周期 重点: JAVA的开发环境 JDK: java 开发工具集 JDK版本问题1.4不支持泛型5.0 泛型 6.0枚举 默认安装路径C:\Program Files\Java\ JRE: JAVA运行时环境 环境变量的配置 (1)Path:window寻找可执行应用程序的一个查找路径不同的路径之间使用; 来分隔 配置一个路径C:\Program Files\Java\jdk1.6.0_26\bin (2)CLASSPATH 告诉系统到那些目录下面去查找对应的要执行的文件 .;D:\3020\j2se\cx\chapter1 .表示当前目录 预习作业: 常用的DOS命令 切换目录查询文件拷贝文件重命名移动文件 *表示通配符*.java *.* 常用java命令 Javac 编译命令主要将以.java结尾的Java文件编译生成以.Class结尾的二进制字节码文件。 Javac java文件名.java Java 运行命令java 类名 Javadoc生成帮助文档命令 javadoc java文件 面向对象的基本概念

类 (属性方法构造方法 ) 对象对象创建传递销毁 面向对象的三大基本特性:封装、继承、多态 OOP AOP 类 是由客观事物经过大脑抽象而形成概念,是对一类事物的描述 使用class 关键字来描述类 类中有属性和方法: 属性对应的是事物的静态特性(可以叫做成员变量) 方法对应的是事物的动态特性 对象:是类的一个具体的实例化 创建对象对象的方法: 类名对象名= new 类名(); 调用类的构造方法来创建对象构造方法是特殊的方法:方法名=类名 注意: 类中属性和方法必须在创建对象之后才能使用 对象.属性对象.方法.表示引用 第二天课程 (2012-7-11) JAVA语言描述 类的声明 语法格式: [< modifiers>] class < class_name> { [] [] } 修饰词class类名{ 属性定义部分<可选> 构造方法 <可选> 普通方法 <可选> } 用于修饰class的关键字有两种:(1) public 公共的 (2)缺省不写表示当前类只能在同一个包中使用 注意点:(1)一个java文件中最多只能有一个类被public 修饰,并且要求使用public

相关主题
文本预览
相关文档 最新文档