This与成员变量、成员方法、类变量和类方法
说明:成员变量和成员方法必须被实例化之后才可以调用;(因为被实例化后才分配内存)
类变量和类方法(即有static修饰的变量或方法)可以通过类名直接调用,(因为类被加载时就分配内存),但是也可通过实例对象名调用,但是没必要
1、在定义类时,其中的成员变量和成员方法在这个类中可以直接调用也可以用this调用;其中的类变量和类方法可以直接调用也可以用this调用,但是会提示没这个必要用this;
2、类方法只能调用类变量,不能调用成员变量;
3、类方法中不能使用this。
(我是新人,请大家多多指教)
代码范例:
import java.util.Scanner;
class Test{
inta,b,sum;
Scannersc =new Scanner(System.in);
staticinta1,b1,sum1;
static Scannersc1 =new Scanner(System.in);
//在成员方法中,this调用成员变量,也可直接调用,不用this
voidsum(){
this.a =sc.nextInt();
b =sc.nextInt();
sum =a + b;
System.out.println("a+b="+sum);
}
//在类方法中,只能使用类变量,不能使用成员变量,也不能使用this关键字
staticvoid sub(){
a1 =sc1.nextInt();
b1 =sc1.nextInt();
sum1 =a1 -b1;
System.out.println("a-b="+sum1);
//this.a = sc.nextInt(); //报错,不能使用this
//b = sc.nextInt(); //报错,不能使用非类变量
}
//this调用成员方法,也可直接调用,不用this
void test(){
this.sum();
//sum(); //也是对的
}
//类方法直接调用
void test1(){
sub();
//this.sub(); //也是对的
System.out.println(a1);
//System.out.println(this.a1); //是对的,但是没必要
}
staticvoid test2(){
//this.sum(); //报错,在类方法中不能用this
}
}
publicclassMain{
publicstaticvoid main(String[]args){
Testobj=newTest();
obj.test();
obj.test1();
obj.sum();
Test.sub();
System.out.println(obj.a);
System.out.println(Test.a1);
}
}