静态变量有什么作用
- 静态变量就是用static修饰的变量,属于类的所有实例,无论一个类创建了多少实例,他们都共享同一份静态变量,也就是说静态变量只会分配一次 内存,这样可以节省内存。
- 静态变量可以通过:类名.变量名的方式访问。(加了private就不可以了)
- 被final修饰之后会成为常量。
静态方法为什么不能调用非静态成员?
- 因为静态方法是 属于类的,在类加载的时候就会分配内存,可以通过类名直接访问。非静态成员属于实例对象,只有对象实例化之后才存在,需要通过类的实例对象去访问。
- 静态方法分配内存时,非静态成员在内存中还不存在,无法调用。
静态方法和实例方法有何不同
- 调用方式不同:静态方法可以用类名直接调,也可以用对象调,实例方法必须要用对象调。即调用静态方法可以无需创建实例对象。
- 访问类成员是否存在限制:静态方法只能访问静态成员(静态变量和静态方法),实例对象都可以访问。
重载和重写的区别:
- 重载 :方法名相同,返回值,参数的顺序,数量,类型,访问修饰符可以不同
- 重写:方法名相同,参数相同,子类的返回值类型范围应当比父类方法返回值类型更小或相等,抛出的异常范围《=父类,访问修饰符范围》=父类。遵循两同,两小一大。另:如果方法的返回类型是 void 和基本数据类型,则返回值重写时不可修改。但是如果方法的返回值是引用类型,重写时是可以返回该引用类型的子类的。
什么是可变长参数?
public static void method1(String... args) {
//......
}
- 可变参数只能作为函数的最后一个参数,但是其前面也可以没有任何其他参数。
- 遇到重载的情况怎么办:优先匹配固定参数的,优先度更高。