this关键字
this强调对象本身,它表示当前对象,而当前对象就是指调用类中方法或属性的那个对象
下面我用两个例子来说明一下this关键字的作用:
没有this关键字的例子:
class person1{
private String name;
private int age;
public void Person1(String name,int age){
name = name;
age = age;
}
}
这个代码,我们在构造方法中声明了name参数和age参数,但是在形参中也定义了name和age,这时候就会出现问题,我们到底是将形参中的name赋给类中的属性name,还是将类中的属性name赋给形参中的name,接下来加上this关键字试试
class person1{
private String name;
private int age;
public void Person1(String name,int age){
this. name = name;
this.age = age;
}
}
此时this.name和this.age就分别代表类中的name和age,然后完成赋值操作的话,就可以知道是形参name和age赋给类中的属性name和age。
有一点需要注意,构造方法是在实例化一个对象时被自己调用的,也就是说在类的所有方法里,只有构造方法是被优先调用的,所以使用this调用的构造方法也必须只能放在类中。
static关键字
static关键字可以定义属性和方法,如果程序中用static方法来定义属性的话,此变量称为静态变量。用static修饰类的属性后,此属性就是公共属性了。
假如说程序有40个相同的对象,那么如果想修改其中一个属性,就得一个一个挨个修改,十分麻烦。如果将那个属性用static来修饰的话,那个属性就是公共属性了。举例说一下:
class Person{
String name;
static String city = "中国";
int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String talk(){
return"我是:"+this.name+",今年"+this.age+"岁,来自"+city;
}
}
public class StaticDemo2 {
public static void main(String[] args){
Person p1 = new Person("张三",20);
Person p2 = new Person("张三",20);
Person p3 = new Person("张三",20);
System.out.println(p1.talk());
System.out.println(p2.talk());
System.out.println(p3.talk());
}
}
final关键字
final是Java中的终结器,在Java中final可以定义类,定义方法和定义变量。使用final关键字时要注意:
- final标记的类不能被继承
- final标记的方法不能被子类覆盖
-
final标记的变量即为常量,只能赋值一次
我以final标记的变量为例,试试对它进行加1操作 :
instanceof关键字
用instanceof判断一个类是否实现了某个接口,也可以判断一个实例化对象是否属于一个类。它的返回值为布尔型