this关键字
this关键字有三种用法,第一种是用于方法中重名变量来指明当前变量的值。第二种是用于在类某个方法代码块中需要引用其他方法时,用this关键字来代替还未被实例化的对象。第三种是当使用构造函数时,可以在override的构造函数代替使用。
构造函数
class employee {
String name, salary;
employee() {
this("unKnow");
}
employee(String name) {
this(name, "unKnow");
}
private employee(String name, String salary) {
System.out.println("name: " + name + "," + "salary: " + salary);
}
}
不难发现,这种使用this来调用构造函数的方法是为了满足实际场景的测试
调用变量和方法
employee(String name) {
this.name = name;
}
protected void quit() {
System.out.println("quit");
}
protected void fired() {
System.out.println("fired");
this.quit();
}
全局变量和实例变量
局部变量:在方法中定义的变量和该方法的传入参数被称为局部变量。在该方法内,它可以覆盖掉全局变量。其作用域为该方法的花括号中。没有初始值,必须赋初值,否则发生编译错误。生命周期同作用域。
成员变量:定义在类中用来描写类的属性的变量。其作用域有权限控制符决定( public:在任何地方都能直接访问对象的成员变量。private:只能在当前类的对象方法中直接访问,如果子类要访问需要调用父类的get/set方法。protected:可以在当前类及其子类对象方法中直接访问。package:在同一个包下就可以直接访问,比如说在同一个框架)。有默认初始值。生命周期是随着实例化对象的产生而产生,消亡而消亡。
静态变量:由static符号修饰的变量即为静态变量,已被称为全局变量或类变量。其作用域同成员变量。有默认初始值。其生命周期是当类开始加载到程序结束。
基本数据类型和引用数据类型
- 当未被初始化的时候,基本数据类型有一个初始值,但是引用数据类型数据必须初始化才能使用。而且当引用的时候,对于变量来说,输出的是变量的值,而对于变量来说输出的是地址
- 分配内存
double newSalary = 10000;
Demo demo = new Demo();
System.out.println("Exchange the value of variables");
System.out.println(demo.saleary);
demo.saleary = newSalary;
System.out.println(demo.saleary);
System.out.println();
System.out.println("Exchange the value of objects");
Demo demo1 = new Demo();
System.out.println(demo1);
demo1 = demo;
System.out.println(demo1);
System.out.println(demo);
我们可以看出,在使用等号直接进行交换的时候,变量改变和输出的都是它的值。而对于实例化的对象来说,交换的是地址,demo把值赋给demo1的时候,demo1就指向了demo,此时的demo1已经被JVM处理了