一、this关键字
- 1.在类的方法中,使用this关键字代表的是调用此方法的对象的引用
- 2.this 可以看作一个变量 它的值是当前对象的引用
- 3.使用this 可以处理方法中的成员变量和形参同名的问题
- 4.当在方法内需要用到调用到该方法的对象时,就可以用·this
- 5.在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法
class Student
{
private int age;
String name;
double score;
Student(int age,double score)
{
System.out.println("构造方法2被调用!!");
}
Student()
{
System.out.println("构造方法3被调用!!!");
}
// Student(int newage,String newname,double newscore)
// {
// System.out.println("构造方法被调用!");
// age = newage;
// name = newname;
// score = newscore;
// }
Student(int age,String name,double score)
{
//5. 在类的构造方法中调用该类的指定构造的方法
//this();
this(99,0.83);
System.out.println("构造方法被调用!");
this.age = age; 3.处理变量和形参同名的问题
this.name = name;
this.score = score;
}
void testThis()
{
Student stutmp = null;
stutmp = this; // 2.将对象赋给stutmp
System.out.println(stutmp.age);
System.out.println(this.name); //1. this 调用对象中的name
}
}
public class demo1 {
public static void main(String[] args) {
Student stu1 = new Student(20,"erdang",89);
stu1.testThis();
}
}
二、static关键字
1.static 关键字的特点:
1.用来修饰类的成员------修饰成员变量的称为类变量(静态变量)
2.修饰成员方法称之为类方法(静态方法)
3.当类被加载的时候就会被加载,优先于对象的存在
4.用来修饰语句块------称为静态代码块,先于构造方法之前执行,只会执行一次,用来对静态成员做初始化
5.调用的时候可以直接通过类名 成员来进行访问
2.static关键字的注意事项:
静态方法中只能访问外部的静态成员
静态方法中不能出现this关键字
class Student
{
int age;
String name;
double score;
// 静态变量
static int data;
// 构造方法
Student(int newage,String newname,double newscore)
{
System.out.println("构造方法被调用!");
age = newage;
name = newname;
score = newscore;
}
// 静态代码块 先于构造方法执行 且只会执行一次
static
{
System.out.println("静态代码块!");
data = 100;
}
// 静态方法
static void test()
{
System.out.println("test-----!");
// 静态方法中不能出现this关键字 故报错
// System.out.println(this.age);
System.out.println(data); // 只能访问外部静态成员
}
}
public class Demo {
public static void main(String[] args) {
Student stu1 = new Student(18,"heavysea",99);
stu1.score = 10;
// stu1.data = 0; 不能通过该方式来访问
Student.data = 0; // 通过类名 不去实例化来访问
// Demo d = new Demo(); 若不在函数前加上static
// System.out.println("ret="+d.add(5,7));
// 调用add函数需要在函数前加上static
System.out.println("ret="+add(4,5));
}
static int add(int a,int b) // 静态成员函数
{
return a+b;
}
}