1:构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项是什么?
运用构造方法可以对属性(成员变量初始化);
书写:构造方法需要与其所在类有完全相同的名字,
无返回值
无返回值类型
如:
class Example{
public Example(){
}
}
在初始化对象时,构造方法系统自动调用,构造方法无法手动调用
构造方法可以同名,区分看参数个数,类型,顺序,
初始化时后面的括号有无参数可判断出,系统自动调用了哪个构造方法
类中最好定义无参构造方法,再根据需求添加是否需要定义有参构造方法
注意事项:
1,如没写任何构造方法,系统会提供一个无参构造方法
2,而写了有参的构造方法后,系统不会再提供任何构造方法,所以需把无参构造方法加上
2:给成员变量赋值有几种方式?
1,成员变量直接赋值:
int num = 1;
2,无参构造方法对成员变量初始化赋值:
public Example(){
num = 2;
}
3,有参构造方法对成员变量初始化赋值:
public Example(int num){
this.num = num;
}
4,对象赋值
example.num = 3;
5,private私有化后由set 方法修改赋值
public void setNum(int num){
this.num = num;
}
3:标准的代码编写及测试:
定义一个员工类Employee
* 自己分析出几个成员,然后给出成员变量
* 姓名name,工号id,工资salary
* 构造方法,
* 空参和有参的
* getXxx()setXxx()方法,
* 以及一个显示所有成员信息的方法。并测试
public class Employee {
//成员变量
private String name;
private int id;
private int salary;
//无参构造方法,初始化成员变量
public Employee() {
}
//有参构造方法,初始化成员变量
public Employee(String name,int id, int salary) {
this.name = name;
this.id = id;
this.salary = salary;
}
//set get
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
public int getSalary() {
return salary;
}
//成员方法
public void fun() {
System.out.println(name + "--" +id + "--" + salary);
}
}
测试代码
public class EmployeeTest {
public static void main(String[] args) {
Employee em = new Employee("李白",14,10000);
em.setId(5);
em.getId();
System.out.println(em.getId());
em.fun();
}
}
4:一个类的成员变量初始化过程
Student s = new Student();
对象初始化,在堆内存中创建一片存储空间,
静态变量
5:static关键字是什么?有什么特点?什么时候用呢?
静态变量因为是在对象还没有创建时就已经随着类加载到方法区的静态区,
所以调用它最好不使用对象(虽然可以),使用类名调用
静态变量特点:
静态变量随着类的加载而加载到方法区的静态区,
先于对象的创建
使用含有此静态变量创建的类来初始化的对象,可以在静态区共享此静态变量,节省内存空间
可以用类名调用
应用场景:如饮水机相对于办公室里的人,是静态变量可以共享
静态变量与成员变量区别(判断区别可从生命周期,位置,内存,初始值,调用方式等方面考虑)
1,所属不同
成员变量属于对象,位于类中方法外
静态变量属于类,前面加static,位于类中方法外
局部变量位于方法中或方法声明中,属于此方法
2,内存中存储位置不同
成员变量存储在堆内存
静态变量存储在静态区
局部变量存储在栈内存
3,生命周期不同
成员变量随着对象的创建到回收
静态变量随着类的加载到释放
局部变量随着方法的入栈到出栈
4,调用方法
成员变量只能使用对象调用
静态变量可使用类调用,对象调用可以但不推荐
局部变量就近原则,不调用
5,初始值
成员变量随着对象的初始化,如果无初始值,会有默认初始值
局部变量必须给定初始值才能使用
静态变量同成员变量一样
内存表现步骤
1,类加载到方法区
2,同时静态变量加载到方法区的静态去
3,main函数入栈
4,堆内存中创建对象
5,把地址赋值到main函数中的对象来保存
6,main函数出栈
7,gg
静态方法
同样用类名调用,
成员方法中可以有成员变量和静态变量
静态方法中只能有静态变量
6:main方法各种修饰符及参数的解释?
public jvm虚拟机调用main,需要访问权限
static jvm虚拟机调用main时,不需要创建对象
main jvm虚拟机调用时,只知道main这个词,调不到其他词,注意:main不是关键字
String[] args 原来是接收从键盘输入的值
现在用Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();