this关键字
this可调用本类属性、本类方法和当前方法
1、表示本类属性
public class this_static {
public static void main(String[] args) {
Person p1 = new Person("zhansang", 14);
System.out.println(p1.info());
}
}
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String info(){
return "name="+name+",age="+age;
}
}
2、调用本类方法
在一个类中,存在两种方法(普通方法、构造方法),要调用本类的方法需要两种方式。
调用普通方法:用“this.方法()”调用;
调用本类构造方法:在一个构造中要调用其他构造使用“this()”调用。
public class this_static {
public static void main(String[] args) {
Emp p1 = new Emp(14,"zhansang",1000,"high");
System.out.println(p1.info());
}
}
class Emp{
private int empno;
private String ename;
private double salary;
private String dept;
public Emp(){
}
public Emp(int empno){
this.empno = empno;
}
public Emp(int empno,String ename){
this(empno);
this.ename = ename;
}
public Emp(int empno,String ename,double salary){
this(empno,ename);
this.salary = salary;
}
public Emp(int empno,String ename,double salary,String dept){
this(empno,ename,salary);
this.dept = dept;
}
public String info(){
return "no="+empno+",name="+ename+",salary="+salary+",dept="+dept;
}
}
3、表示当前对象
当正在调用类中方法的对象为当前对象时,所有当前的对象都使用this来表示。
public class this_static2 {
public static void main(String[] args) {
Demo demo1 = new Demo();
Demo demo2 = new Demo();
System.out.println(demo1);
demo1.print();
System.out.println(demo2);
demo2.print();
}
}
class Demo{
public void print(){
System.out.println("当前对象:"+this);
}
}
static关键字
1、使用static定义属性
示例:static String country="beijing";
System.out.println(Person.country);
若希望将类中的某个属性定义为公共属性(所有对象都可使用的属性),则在该属性前加关键字static。
该属性存储于全局数据区,为所有该类型对象共享。类属性可由类名直接进行调用。
static属性可在没有实例化对象时进行调用。
2、使用static定义方法
示例:public static void setCountry(String c){...}
static定义的方法不能调用非static的方法或属性;非static定义的方法可调用static的属性或方法。
static定义的属性或方法,可在没有实例化对象的时候使用。非static定义的属性和方法必须实例化对象后才可调用。
一个方法在主类中定义,并且由主方法直接调用时,其前面必须有public static。非static方法必须要由实例化对象调用。
总之,static关键字可以在没有实例化对象时执行类的某些操作;表示出数据共享的概念。