Q:实例成员与方法成员的区别?
A:成员包括变量与方法,先说类变量与实例变量的区别
类变量:(1)有static关键字修饰(2)可以通过类名直接访问,不需要先创建对象(3)程序编译运行时,会马上给类变量分配内存空间,这也就是为什么创建过多的类变量,编译后会爆内存
实例变量:如果不去创建对象,是不会给实例变量分配内存空间的
区别:
(1)不同对象的实例变量互不相同
(2)所有对象共享类变量
(3)可以通过类名直接访问类变量
共享与独立的关系见下图
下边来说类方法与实例方法的区别
类方法:可以通过类名.方法名 或者 变量.方法名访问,只能操作类变量
实例方法:只能通过 变量.方法名 访问 ,可以操作 类变量+实例变量
操作变量的规则见下图
设计类方法的原则:当一些算法不需要操作成员变量时,就可以考虑将这样的算法写成类方法:
例如 Math.min(a,b),Array.sort(a)等等,可以直接调用这样的方法
Q:说说Java中方法的重载?
A:Java中存在两种多态:重载(Overload)和重写(Override)
重载是两种多态中的一种,具体表现如下:
一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,可以是:
(1)参数的个数不同
(2)参数个数相同,但参数列表中对应的某个参数的类型不同
public class Example01 {
static int a=1,b=2;
static long c=5L;
public static void main(String[] args) {
System.out.println("a="+a+" b="+b+" c="+c);
System.out.println("a+b="+People.caculate(a, b));
System.out.println("a-c="+People.caculate(a, c));
System.out.println("a*b*c="+People.caculate(a, b, (int)c));
}
}
public class People {//要么参数个数不同,要么参数个数相同但参数类型不同
static int caculate(int a,int b) {
return a+b;
}
static float caculate(int a,long b) {
return a-b;
}
static float caculate(int a,int b,int c) {
return a*b*c;
}
}
Q:请谈一谈this关键字
A:this是Java的一个关键字,表示某个对象
this可以出现在实例方法和构造方法中
this不可以出现在类方法中
Q:说一说什么是包
A:包是Java语言有效的管理类的一个机制,不同Java源文件中的类名相同时,他们可以通过所属包名来进行区分