Java编程预习2:《this关键字 & static关键字》
发布日期:2021-05-07 02:18:43 浏览次数:25 分类:精选文章

本文共 2464 字,大约阅读时间需要 8 分钟。

this 关键字学习

我认为,this关键字实际上就是一个对自身的引用!

this关键字的用法:

第一:用于调用对象级别的方法(可视作对自身的引用

第二:用于在构造方法中调用其他的构造方法

这种做法必须要让关键语句:this(实参);放在构造方法的第一句!

第三:this关键字不能用在静态方法中

静态方法(包括 main 方法也是静态)是没用指向自身的this引用的,所以在静态方法中使用this关键字直接会报错!

第四:不要用this引用static方法或static变量

这样会引发警告,因为static的方法或者变量需要用 类名.方法名 的方式去使用

关于this关键字的测试代码:

package Main;public class Main {   		// this 关键字的测试	//	String str = "看看是否能够访问非静态变量";// 这是一个成员变量//	要想使用,则:static String str = "****";		public static void main(String[] args) {   				// this 指针的作用1:在成员方法中使用		Student stu = new Student(10, true, "小良", "1800418123", 92);		stu.GetSex();		stu.ScoreAna();		System.out.println(stu.name + "是" + stu.AgeDivid() + "年级的学生");				// this 不能在静态方法中使用!//		System.out.println(this.str);				// this 指针的作用2:在构造函数中使用(去调用另一个构造)				// 需求:我们要求默认的构造对象,年龄是6岁,姓名是 XXX,性别是 男,学号是000000,分数是0		// 实现:用this在无参数的构造方法中调用有参数的构造方法				Student test = new Student();		test.GetSex();		test.ScoreAna();		System.out.println(test.name + "是" + test.AgeDivid() + "年级的学生");				// 测试能否用 this 引用 static 方法//		test.Test();		// 结论:可以访问,但是会警告,因为它检测到是对象在访问	}	}
package Main;public class Student {   private	int age, score;	boolean sex;	String name, id;public	Student() {   		this(6, true, "XXX", "000000", 0);		// this(实参); 必须出现在构造函数的第一行!	}		Student(int age, boolean sex, String name, String id, int score) {   		this.age = age;		this.sex = sex;		this.name = name;		this.id = id;		this.score = score;	}	int AgeDivid() {   		if(this.age < 6 || this.age >= 13) {   			System.out.println("学生年龄不合法!");			return 0;		}		else if(this.age >= 6 && this.age < 9)			return 1;		else if(this.age >= 9 && this.age < 11)			return 2;		else			return 3;	}		void ScoreAna() {   		if(this.score > 90)			System.out.println("Very good!");		else if(this.score > 80)			System.out.println("Good!");		else if(this.score > 60)			System.out.println("Just so so!");		else			System.out.println("Go away!");	}		void GetSex() {   		if(this.sex)			System.out.println("男");		else			System.out.println("女");	}	//	static void Msg() {   //		System.out.println("Successful");//	}//	//	void Test() {   //		this.Msg();//	}		}

static 关键字学习

static可以产生静态语句块

也就是说,可以产生一个固定的语句块,在 main 方法执行前就会自上而下地执行,但是只能执行一次。

语法是:
static{
// 语句块内容
}

static 方法

第一:static 方法中不可以用 this 关键字
第二:static 方法中不可以访问非静态数据
第三:static 方法必须有: 类名.方法名 的格式访问

static 变量和常量

static变量和常量是放在:方法区

好处:

成员变量是一个对象一份,因为成员变量是对象级别的,但是如果有些变量是每个对象都是一样的,如果用成员变量则浪费空间。处理成静态变量,就可以给所有的对象都共享这一份变量空间,所以static变量是类级别的,使用:类名. 的方式访问。

应用:

如果这个变量每个对象都有,并且值都一样,就可以设为static变量

上一篇:ACM-ICPC寒假算法训练2:高级数据结构2:二叉堆的模板类实现!!(好开心!)
下一篇:ACM-ICPC寒假算法训练2:高级数据结构1(并查集):基础并查集

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月09日 23时40分06秒