Java常用总结

1、字符串常用的三个类:String、StringBuffer、StringBuilder
  • String是引用类型数据
  • StringBuffer是线程安全的——append()方法有使用sychnolized修饰,但是性能会低一些;如果是在循环体内需要频繁的对字符串进行操作,推荐使用StringBuffer

例如:循环体内对String进行拼接操作,我们在进行发编译之后会发现,循环体内创建了多个StringBuffer对象,并进行append()操作,这样会增加内存的消耗,所以在类似的场景中我们可以使用StringBuffer来替换

public  void test(){
        String s = "hello";
        for(int i = 0 ; i < 10 ;i++){
            s = s + "world";
        }
    }

在这里插入图片描述

  • StringBuilder是线程非安全的
2、浮点数不可以直接进行相等比较

浮点数不可以直接比较是否相等,应该将两个数的绝对值与一个非常小的数进行比较

// 比较x和y是否相等,先计算其差的绝对值:
        double r = Math.abs(x - y);
        // 再判断绝对值是否足够小:
        if (r < 0.00001) {
            // 可以认为相等
        } else {
            // 不相等
        }
3、从键盘读入涉及到的类
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
4、引用类型的数据比较

引用类型的数据比较有两种方式: “==”、“equals()”

==大多数场景下比较的是两个引用的地址是否相同
equals则比较内存中的值是否相等(已重写Object中的equals()方法)

注:在使用equals()比较是否相等时,建议将一定不为null的放在前面,如“hello”.equals(s),否则当否贼当需要equals()中的内容为null时,则会出现nullPointException

5、switch的使用
  • 如果case后面没有使用break,当前面的case匹配到,则后面的case都将被输出
  • 如果switch语句中有default语句,当没有匹配到时,则会输出default中的内容
  • switch支持的数据类型有:
6、super关键字的使用

如下代码在编译阶段会报错,子类构造方法中无法调用父类的构造方法

public class Main {
    public static void main(String[] args) {
        Student s = new Student("Xiao Ming", 12, 89);
    }
}

class Person {
    protected String name;
    protected int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

class Student extends Person {
    protected int score;

    public Student(String name, int age, int score) {
        this.score = score;
    }
}

这是因为在所有的java代码中都要先调用父类的构造方法,加入在子类的构造方法中没有显示的调用,那编译器会自动帮我们增加对父类构造方法的调用,如下所示:

class Student extends Person {
    protected int score;

    public Student(String name, int age, int score) {
    	super();
        this.score = score;
    }
}

但是父类没有默认的构造方法,因此此处我们应该调用父类的有参构造方法

class Student extends Person {
    protected int score;

    public Student(String name, int age, int score) {
        super(name, age); // 调用父类的构造方法Person(String, int)
        this.score = score;
    }
}
7、static

static修饰的变量在只会在第一次实例化的时候在内存开辟一个“空间”,后续的实例共享该空间

8、双亲委派机制与package
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值