this基础
class Person{
String name;
void talk(){
System.out.println("name is" + name);
}
}
在成员函数里的name其实隐藏了this对象。应该是System.out.println("name is " + this.name);
当遇到下面这种情况是就不能省略this,
void talk(String name){
System.out.println("name is " + this.name);
}
因为这里的函数参数也是name,所以就不能省略this.
this在构造函数中的使用.
class Person{ String name; int age; String address; Person(){ System.out.println("无参构造函数"); } Person(String name, int age){ this.name = name; this.age = age; System.out.println("有2个参数的构造函数"); } Person(String name, int age, String address){ this(name, age); this.address = address; System.out.println("有3个参数的构造函数"); } }
需要注意的是第三个构造函数,可以通过this来调用其他构造函数,但必须放在构造函数的第一行。
Static 关键字
静态成员变量
class Person{
static int i;
}
可以使用类名来调用 : Person.i; (当然也可以用成员变量来调用)
静态成员变量一经定义,所有对象共享这个变量。
静态成员函数
class Person{
static void fun(){
System.out.println("我是静态函数");
}
}
1、静态函数也是直接用类名来调用
2、在静态函数中不能直接使用非静态成员变量
class Person{
String name;
static void talk(){
System.out.println(name); //错误,无法使用非静态变量
}
}
3、静态变量可以在静态函数中使用,上面的例子中把name 定义成static 就可以使用。
静态代码块
1、格式
static{
System.out.println("静态代码块");
}
静态代码块的执行时期:在装载类的时候就执行,无需调用,主要作用是为静态变量赋一些初值。