Java新手最常见的8个错误

简介: Java新手最常见的8个错误

1.使用 == 比较对象

== 运算符比较的是对象的引用。

引用指向对象在内存中的地址。如果它们存储在不同的地址,那么使用==比较就会返回false。


应该使用对象的equals()方法来比较。但是默认的equals()方法比较的是引用(和==一样),所以你应该重写自己的equals()方法。


2.在静态方法中使用非静态变量

你可能遇到过这样的报错:Non-static variable x cannot be referenced from a static context


静态方法不能访问非静态变量(实例变量)。毕竟,静态方法可以在没有对象的情况下调用。


另外,在非静态方法中可以使用静态变量。(因为此时静态变量存在)

3.错误理解参数的传递方式:传引用(地址)还是传值?

参数是对象时传地址,是基本类型(如int)时传值

传值和传地址的区别

public class Main {
    public static void main(String[] args) {
        int x = 7;
        incrementNumber(x);
        System.out.println(x);
        Cat cat = new Cat(7);
        catLevelUp(cat);
        System.out.println(cat.getAge());
    }
    //传引用
    public static void catLevelUp(Cat cat) {
        cat.setAge(cat.getAge()+1);
    }
    //传值
    public static void incrementNumber(int x) {
        x++;
    }
}

输出结果x=7 (没有改变) cat.age = 8 (改变)

4.忽视代码规范

要写具有可读性、符合规范的代码,有意义的命名。

//错误示范:
public class Cat {

    private int S_O_M_E_T_H_I_N_G = 7;
    public String striiiiiiiiiiiiiing;
    protected double I_HAVE_NO_IDEA_WHAT_THIS_IS = 3.14;
    boolean random = Math.random() > 0.5;

}

5.误解 String

public class Main {
    public static void main(String[] args) {
        String s1 = "I'm learning Java";
        String s2 = new String("I'm learning Java");
        System.out.println(s1 == s2);
    }
}

结果是false,原理见String Pool

6.错误处理异常

7.不理解操作符(算数、逻辑、其它)

运算符的次序问题

public class Main {
    public static void main(String[] args) {
        int i = 6;
        System.out.println(7 == i++);
    }
}

结果是false,因为==优先级比后++的优先级高,因此会先比较,然后i++。

如果你不清楚运算符的执行优先级,建议使用()提高优先级。并且避免上面比较难懂的写法。

8.在switch中忽略break

//错误示范
public class Main {
    public static void main(String[] args) {
        int i = 1;
        switch (i) {
            case 1: {
                System.out.println("The number is equal to 1");
            }
            case 2: {
                System.out.println("The number is equal to 2");
            }
            case 3: {
                System.out.println("The number is equal to 3");
            }
        }
    }
 }

The number is equal to 1 The number is equal to 2 The number is equal to 3

别忘记每个case里的break;

相关文章
|
10天前
|
Java UED
Java中的异常处理:从新手到专家
【9月更文挑战第17天】在Java编程世界中,异常处理是一块基石,它确保了程序的健壮性和可靠性。本文将通过浅显易懂的语言和实例,带你了解如何在Java中优雅地处理异常。我们将一起探索try-catch块的奥秘,学习如何自定义异常,以及何时应该使用throw和throws关键字。准备好了吗?让我们开始这段旅程,把那些不请自来的编程小怪兽——异常,一一捕获!
|
2月前
|
监控 Java
解决Java中的MalformedURLException异常的实用技巧
解决Java中的MalformedURLException异常的实用技巧
|
Java
Java入门常见错误总结
Java入门常见错误总结
53 0
|
4月前
|
存储 小程序 前端开发
Java代码能搭建小程序
Java代码能搭建小程序
40 0
|
Java 数据库连接 数据库
Java有关异常的超详细笔记
本文主要写了Java有关异常的部分,从异常的分类开始介绍包括异常的产生、传递、两种常用的处理方式、自定义异常以及异常中面试题;
93 0
|
算法 Java
Java | 手把手教你实现一个抽奖系统(Java版)
Java | 手把手教你实现一个抽奖系统(Java版)
1299 1
|
Java 开发工具
JAVA入门教程(34)——异常机制
这篇文章是让大家简单了解一下异常机制
117 0
java202302java学习笔记第十九天-升级学生管理系统14获取验证码
java202302java学习笔记第十九天-升级学生管理系统14获取验证码
51 0
|
安全 Java 程序员
19、JAVA入门——异常
19、JAVA入门——异常
92 0
19、JAVA入门——异常
|
Java 编译器
【Java常见问题】(一)基础知识篇
Java初始化的顺序 有以下原则:(序号越小优先级越高) static>non-static 父类>子类 按成员变量定义的顺序 对于同一个成员,在域中初始化和块中初始化平级,即按照从上到下的顺序。
112 0