`
jdlsfl
  • 浏览: 159785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中容易出错的一些问题[总结]

阅读更多
1. String类的toString()方法
        刚开始一直没注意过这个问题,后来才发现,String类有这个toString方法的,其作用是返回这个string本身。

 

public class A ...{

public static void main(String args[]) ...{

if("a".toString() == "a"...{

System.out.println(
"a");

}
 
else ...{

System.out.println(
"b");

}


}


}


        这个程序中,输出结果是a,并不会因为string对象调用toString方法而报错。
2. 数组的定义

 

public class A ...{

public static void main(String args[]) ...{

int[][] a = new int[2][];

int[] b = new int[]...{12};

}


}


        定义一个二维数组,如int[][] a, 可以在new int[2][]中只写第一个维数,也可以写成new int[2][2]两个都写,但是不能都为空。
        定义数组b的时候,{}中的初始化内容可以跟在new int[]后面,但是要注意,这个时候[]中不能添加数字了。
3. 继承时候构造方法的影响
        大家看这段程序输出什么结果?2?错了。1?也错了。答案是:无法通过编译。因为Super类中并没有提供无参的构造方法,当A继承Super类时,找不到Super的无参构造方法,所以无法通过编译,即使你为A类写了一个无参构造方法也不行。必须要提供一个Super的无参构造方法,这样才可以通过运行。
4. 迭代器的问题
java.util.*;

public

 

List list =

list.add(

list.add(

list.add(

ListIterator ltr = list.listIterator();

 

 

 

System.

 

class A {public static void main(String args[]) {new ArrayList();"Cat");"Dog");"Rat");int i = 1;while (ltr.hasNext()) {if (i == 2)out.println(ltr.previous());else

i++;

}

}

}
        答案是NoSuchElementException。也许有人会奇怪,第一次循环中,虽然判断了i == 2不成立,转而执行else中的i++,接着第二轮循环开始的时候,i==2成立了,为什么不打印出前面一个元素即Dog呢?因为,hasNext()方法虽然判断了是否有下一个元素,但是,迭代器并没有向后移动,此时还停留在第一个元素即Cat前面的,所以会出现异常。只有next()或previous()才会移动迭代器。

5. 公共类与类文件
以下这段代码是放在名称为Test.java的文件中的

class Base{<o:p></o:p>

public static void main(String[] args){<o:p></o:p>

System.out.println("Hello");<o:p></o:p>

}<o:p></o:p>

}<o:p></o:p>

<o:p> </o:p>

public class Test{}<o:p></o:p>

        运行结果是什么?NoSuchMethodError。但是如果Test是extends Base的话,那就能够正常输出Hello。

6. 重载方法与null
class A {public void method(Object o) {out.println("Object Version");public void method(String s) {out.println("String Version");public static void main(String args[]) {new A();null);

public

 

System.

}

 

 

System.

}

 

 

A question =

question.method(

}

}
        method方法被重载了。一个参数是Object,一个参数是String。运行的时候我们把null传进去,得到的结果是String Version,说明调用的是参数为String的method方法。
7. 抽象类的定义
        抽象类中可以包含抽象方法,也可以不包含抽象方法。但是只要有一个抽象方法,这个类就必须声明为abstract!
8. 变量初始化问题
class A {static boolean b1;public static void main(String args[]) {boolean[] b2 = new boolean[1];boolean b3;out.println(b1);out.println(b2[0]);

System.

out.println(b3);

}

}
        以前说过,一个类的变量有默认值,但是在方法中定义的变量必须要初始化才能用,不然会报错。这个程序中,b3是方法中定义的变量,这样用是错误的,因为没有初始化。但是,b2这个数组却是可以的,b2[0]的值是false。虽然没有初始化,但是像这样在方法中声明的数组却可以拥有默认值。

9. String的concat方法
class A {public static void main(String args[]) {null;"abc");"def");out.println(a);

public

 

String a =

a.concat(

a.concat(

System.

}

}
        编译不会报错。答案是abcdef,吗?不是,会出现空指针异常。因为刚开始a总是指向null的。

10.多余的异常
class A {public static void main(String args[]) {new A();try{catch(Ex1 e) {catch(Ex2 e){void bad() throws Ex1{

class

Ex1 extends Exception{}

class

 

11.输出的问题

 

public class Plus 
...{
     
public static void main(String[] args) 
     
...{
          
int c=1;
          
int a;
          c
=c++;
          a
=c;
          System.out.println(
"c = "+c+" a="+a);
     }

}

 

 

Ex2 extends Exception{}         这个程序有两个自定义异常Ex1和Ex2,同时,A类有一个bad()方法抛出Ex1异常。在main方法中,调用bad方法,然后catch Ex1、Ex2。这个程序是会出现编译错误的。因为在catch Ex2那里会说Ex2永远不会抛出,这就是多余的异常。

public

 

A a =

 

a.bad();

}

 

}

 

}

}

 

 

 

}

}

 

public

 

 

 

 

System.

System.

public

 

 

}

 

A a =

System.

}

}

 

class A extends Super {public A(String str) {i = 2;public static void main(String args[]) {new A("Hello");out.println(a.i);

class

 

 

 

}

}

 

import

 

Super {int i;public Super(String str) {i = 1;
分享到:
评论

相关推荐

    总结了java容易出错的信息 以及错误信息类型

    Java编程语言中,错误和异常处理是程序健壮性的重要组成部分。这些异常和错误可以分为不同的类别,帮助开发者识别和修复程序中的问题。以下是对Java中常见错误和异常类型的详细解释: 1. **算术异常类:Arithmetic...

    java,mybiats总结

    - 参数设置和结果集处理需要手动操作,容易出错。 - SQL 与 Java 代码混杂,不易于维护。 2. **MyBatis 的架构**: - MyBatis 包含 SqlSessionFactory 和 SqlSession,前者用于创建后者,SqlSession 提供了执行 ...

    基于Java平台swing+mysql实现图书管理系统总结报告.docx

    2. **易出错**:人为操作容易出现错误,如借阅记录填写错误等。 3. **查询不便**:读者查找所需图书时通常需要较长时间。 4. **维护困难**:对于大量图书和读者信息的更新和维护非常不便。 #### 三、现有图书管理...

    Java乱码问题解决

    在Java开发过程中,尤其是在处理中文字符时,经常遇到字符编码不一致导致的乱码问题。由于Java默认使用Unicode编码,而在中国大陆地区,常见的字符集为GB2312(GB18030)或GBK,在台湾地区则多使用Big5编码。这些...

    2014华为上机试题--java实现

    在开发过程中,我们应该编写测试用例来确保代码的正确性,特别是在处理字符串操作这类容易出错的任务时。 10. 函数接口:两个函数都要求不包含任何IO操作,这意味着它们只关注逻辑处理,不涉及数据的输入或输出。...

    Java基础学习总结(183)—— Flyway 在项目中迁移数据实践.pdf

    Java基础学习总结(183)—— Flyway 在项目中迁移数据实践 在软件开发中,尤其是企业级应用,数据库的管理和更新是一个至关重要的环节。随着项目的迭代,数据库的表结构经常需要变更以适应业务需求。传统的做法是...

    java多线程编程总结.pdf

    这使得多线程编程往往比单线程编程更容易出错,例如死锁、饥饿、活锁等问题。因此,在开发多线程程序时,需要特别注意线程的同步与协作,确保线程安全,并合理分配线程任务,避免资源竞争和线程阻塞。 总之,Java多...

    java bean自动生成工具

    手动编写这些类可能会很繁琐且容易出错。为了解决这个问题,开发者们发明了Java Bean自动生成工具,它可以自动根据数据库表结构生成对应的Java实体对象,大大提高了开发效率。 本文将详细介绍Java Bean自动生成工具...

    java 解析 tar gz文件 两种方法

    注意,使用这种方法,你需要实现自己的tar文件解析逻辑,这可能比较复杂,容易出错,而且功能可能不如使用成熟的库如Apache Commons Compress全面。 总结,Java中解析tar.gz文件可以借助第三方库如Apache Commons ...

    java 期末应试易错总结.pdf

    本篇总结针对Java期末考试中容易出错的知识点进行了详细梳理。理解并掌握这些基础概念对于提高编程技能至关重要。希望这份总结能够帮助学生更好地准备考试,同时也为今后深入学习Java打下坚实的基础。

    java toString ToStringBuilder ReflectionToStringBuilder

    这种方式虽然灵活,但当类中的字段数量增加时,代码会变得冗长且容易出错。 为了解决这个问题,Apache Commons Lang库提供了一个实用工具类`ToStringBuilder`。它简化了`toString()`的构建过程,允许我们以更简洁的...

    Java常见异常汇总.pdf

    下面我们来总结一些常见的Java异常: 1. java.lang.NullPointerException 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常...

    tomcat容易出错.doc

    这个问题可能由多种因素导致,理解这些原因并找到相应的解决方案至关重要,因为Tomcat是Java Web应用程序部署的常用平台。下面我们将深入探讨这个常见问题以及可能的解决策略。 首先,确保**配置正确**。检查Tomcat...

    使用Java自动生成Java类和XML文件

    在Java开发过程中,有时我们需要快速生成大量的Java类或者XML配置文件,这通常是为了构建数据模型、映射文件或实现某种自动化任务。为了提高效率,开发者会利用代码生成工具,例如MyBatis的MyBatis Generator或者...

    轻快轻便Java

    两位作者主张,旧有的重型架构(例如WebLogic、JBoss和WebSphere)因庞大、复杂而难以维护,容易造成应用代码运行缓慢且容易出错。相反,轻量级架构能够使得企业级应用更易维护、编写和调试,最终实现更快的运行速度...

    Java编程中更新XML文档的常用方法集

    然而,由于效率较低且容易出错,这种方法在实际开发中并不常见,除非在实现自定义XML解析器时可能会用到。 方法二:使用XmlDocument类 尽管JAXP标准中并未包含XmlDocument类,但Apache Crimson这个XML解析器提供了...

    Java开发环境配置批处理

    1. **节省时间**:手动配置环境变量可能耗时且容易出错,而批处理文件可以快速完成所有步骤。 2. **可重复性**:当需要在多台机器上部署相同的开发环境时,只需运行批处理文件即可。 3. **易于分享**:对于团队或...

    编程是什么之初识java

    ”,这个值固定不变,复制粘贴,不要自己输入,容易出错。 * “CLASSPATH”变量,变量值为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”,这个值固定不变,复制粘贴,不要自己输入,容易出错。 最后,...

    java事务 - 模板设计模式

    这种手动管理方式不仅繁琐,而且容易出错。 这就是模板设计模式发挥作用的地方。模板模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这样,子类可以不改变一个算法的结构即可重定义该算法的某些特定...

    Java自动生成数据库表实体和mybatis接口以及xml文件

    在Java开发中,尤其在基于Oracle或MySQL数据库的项目中,使用MyBatis作为持久层框架时,手动编写数据库表的实体类、MyBatis接口和对应的XML文件是一项耗时且容易出错的工作。为了解决这个问题,开发者通常会利用代码...

Global site tag (gtag.js) - Google Analytics