abstract不允许修饰字段
abstract String name; //错误的写法
声明抽象方法不可写出大括号,并且抽象方法只存在抽象类中
abstract class Person{
abstract void eat(); //均不加大括号,加大括号编译器就会报错
abstract void sleep();
}
对static关键字的理解
- 当一个变量或者方法使用static关键字修饰之后,全局唯一,在一个进程结束之前不会释放内存。
- 一个方法使用之后就会弹栈,就会被jvm回收。
- static关键字不能修饰局部变量,原因就在上面两点。
- static修饰的方法称为类方法,可以直接使用Class.方法名调用;没有使用static关键字修饰的方法成为实例方法,此方法可以被该类的任意引用对象调用,而实例方法中可以直接调用类方法。
int的包装类Integer的默认缓存长度
- Integer默认的缓存长度为-128~127
-
Integer a = 100; Integer b = 100; Integer a1 = 200; Integer b1 = 200; System.out.println(a==b) //true System.out.println(a1==b1) //false 因为已经超过了默认长度,就不会从常量池中获取了
ArrayList空间存储满之后,解决存满的问题
会先在内存中开辟一个新的集合,长度是原来集合的2倍,再将原集合的数据存储到新的集合中。
Java中的参数传递类型
public class Demo {
public static void B() {
//值传递 先将a=1复制 形式参数的值改变不会影响实际参数的值
int a = 1;
A(a);
System.out.println(a);
//引用传递 传递引用的地址值 相当于将该地址值复制一份指向堆内存中的空间
Student s = new Student();
s.age = 10;
testStu(s);
System.out.println(s.age);
}
public static void A(int a) {
a = 2;
}
public static void testStu(Student s) {
s.age = 25;
}
}
class Student{
public String name;
public int age;
}