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[]...{1, 2};
}
}
定义一个二维数组,如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中常见错误和异常类型的详细解释: 1. **算术异常类:Arithmetic...
- 参数设置和结果集处理需要手动操作,容易出错。 - SQL 与 Java 代码混杂,不易于维护。 2. **MyBatis 的架构**: - MyBatis 包含 SqlSessionFactory 和 SqlSession,前者用于创建后者,SqlSession 提供了执行 ...
2. **易出错**:人为操作容易出现错误,如借阅记录填写错误等。 3. **查询不便**:读者查找所需图书时通常需要较长时间。 4. **维护困难**:对于大量图书和读者信息的更新和维护非常不便。 #### 三、现有图书管理...
在Java开发过程中,尤其是在处理中文字符时,经常遇到字符编码不一致导致的乱码问题。由于Java默认使用Unicode编码,而在中国大陆地区,常见的字符集为GB2312(GB18030)或GBK,在台湾地区则多使用Big5编码。这些...
在开发过程中,我们应该编写测试用例来确保代码的正确性,特别是在处理字符串操作这类容易出错的任务时。 10. 函数接口:两个函数都要求不包含任何IO操作,这意味着它们只关注逻辑处理,不涉及数据的输入或输出。...
Java基础学习总结(183)—— Flyway 在项目中迁移数据实践 在软件开发中,尤其是企业级应用,数据库的管理和更新是一个至关重要的环节。随着项目的迭代,数据库的表结构经常需要变更以适应业务需求。传统的做法是...
这使得多线程编程往往比单线程编程更容易出错,例如死锁、饥饿、活锁等问题。因此,在开发多线程程序时,需要特别注意线程的同步与协作,确保线程安全,并合理分配线程任务,避免资源竞争和线程阻塞。 总之,Java多...
手动编写这些类可能会很繁琐且容易出错。为了解决这个问题,开发者们发明了Java Bean自动生成工具,它可以自动根据数据库表结构生成对应的Java实体对象,大大提高了开发效率。 本文将详细介绍Java Bean自动生成工具...
注意,使用这种方法,你需要实现自己的tar文件解析逻辑,这可能比较复杂,容易出错,而且功能可能不如使用成熟的库如Apache Commons Compress全面。 总结,Java中解析tar.gz文件可以借助第三方库如Apache Commons ...
本篇总结针对Java期末考试中容易出错的知识点进行了详细梳理。理解并掌握这些基础概念对于提高编程技能至关重要。希望这份总结能够帮助学生更好地准备考试,同时也为今后深入学习Java打下坚实的基础。
这种方式虽然灵活,但当类中的字段数量增加时,代码会变得冗长且容易出错。 为了解决这个问题,Apache Commons Lang库提供了一个实用工具类`ToStringBuilder`。它简化了`toString()`的构建过程,允许我们以更简洁的...
下面我们来总结一些常见的Java异常: 1. java.lang.NullPointerException 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常...
这个问题可能由多种因素导致,理解这些原因并找到相应的解决方案至关重要,因为Tomcat是Java Web应用程序部署的常用平台。下面我们将深入探讨这个常见问题以及可能的解决策略。 首先,确保**配置正确**。检查Tomcat...
在Java开发过程中,有时我们需要快速生成大量的Java类或者XML配置文件,这通常是为了构建数据模型、映射文件或实现某种自动化任务。为了提高效率,开发者会利用代码生成工具,例如MyBatis的MyBatis Generator或者...
两位作者主张,旧有的重型架构(例如WebLogic、JBoss和WebSphere)因庞大、复杂而难以维护,容易造成应用代码运行缓慢且容易出错。相反,轻量级架构能够使得企业级应用更易维护、编写和调试,最终实现更快的运行速度...
然而,由于效率较低且容易出错,这种方法在实际开发中并不常见,除非在实现自定义XML解析器时可能会用到。 方法二:使用XmlDocument类 尽管JAXP标准中并未包含XmlDocument类,但Apache Crimson这个XML解析器提供了...
1. **节省时间**:手动配置环境变量可能耗时且容易出错,而批处理文件可以快速完成所有步骤。 2. **可重复性**:当需要在多台机器上部署相同的开发环境时,只需运行批处理文件即可。 3. **易于分享**:对于团队或...
”,这个值固定不变,复制粘贴,不要自己输入,容易出错。 * “CLASSPATH”变量,变量值为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”,这个值固定不变,复制粘贴,不要自己输入,容易出错。 最后,...
这种手动管理方式不仅繁琐,而且容易出错。 这就是模板设计模式发挥作用的地方。模板模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这样,子类可以不改变一个算法的结构即可重定义该算法的某些特定...
在Java开发中,尤其在基于Oracle或MySQL数据库的项目中,使用MyBatis作为持久层框架时,手动编写数据库表的实体类、MyBatis接口和对应的XML文件是一项耗时且容易出错的工作。为了解决这个问题,开发者通常会利用代码...