java 关键字总结之 this 和 static

本文详细介绍了Java中this关键字的三种关键用法:访问成员变量以区分局部变量,构造方法内调用其他构造方法,以及调用成员方法。同时涵盖了静态变量、静态方法、静态代码块和单例模式的应用。

关键字总结

this

this 关键字常见有三种用法

1. 访问一个类的成员变量

通过this关键字明确地去访问一个类的成员变量,解决与局部变量冲突的问题

 class people {
			int age;//这里的age是成员变量
			public people(int age){		//这个形参是局部变量
			this.age = age;         //this.age调用的是成员变量
			}
			public int get_age(){
			return this.age;
			}
}

上述代码有两个age变量,一个是people的成员变量,一个是构造方法的局部变量,this.age使用的就是成员变量,单单一个age就是指局部变量。

2. 在一个构造方法中调用其他构造方法。

因为构造方法是在实例化对象时,被java虚拟机自动调用的,所以构造方法没法像其他方法一样自由地调用,那么this关键字就可以用来在一个构造方法中调用其他构造方法。

 public class people {
	public people()
	{
		this(5);
		System.out.println("无参构造方法。。。");
		
	}
	public  people(int age) {
		System.out.println("有参构造方法");
	}

3. this关键字可以调用成员方法。

public class people {

	public void openMouth()
	{
		System.out.println("张开嘴了");
	}
	public void speak() 
	{
		this.openMouth();
		System.out.println("开始说话了");
	}
}

上述代码的this关键字调用了openMouth()方法,这个用法和不适用关键字直接调用openMouth()方法一样,有点鸡肋。。。。

static

1. 静态变量

可以用static来修饰成员变量,(不能用来修饰局部变量)。
内存:被static修饰的成员变量在内存中只会有一份。
使用方法:可以用类名.静态成员变量名,也可以使用实例化对象名.静态成员变量名
作用范围:所有的实例对象共享这一个静态变量。

 public class People {
	static String country = "China";
			
}
public class Test {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		People beijingPeople = new People();
		//两种方式均可以访问到静态成员变量
		System.out.println("我的国籍是" + beijingPeople.country);
		System.out.println("我的国籍是" + People.country);
		
	}
}	

结果
在这里插入图片描述

2. 静态方法

方法前加上static关键字后,静态方法可以直接用 类名.方法 名来调用。

 public class People {
	public static   void say_hello() {
		// TODO 自动生成的方法存根
		System.out.println("无参构造方法。。。");
	}			
}

public class Test {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		People.say_hello();
	}

}

3. 静态代码块

 static{
中间放代码  ; //只会被执行一次
}

用{ }包围起来的是一个代码块,用static关键词修饰的代码块叫做静态代码块。静态代码块只会被执行一次。常用作初始化工作。

4. 单例模式

这是一种设计模式,指的是在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。

public class People {

	private static People INSTANCE = new People();
	private  People() {	
	}    				//私有化的构造方法
	public static People getInstance() {  //提供返回实例化对象的静态方法。
		return INSTANCE;	
	}
			
}

上述代码实现了单例模式具有以下特点
1. 类的构造方法用private修饰,声明为私有,这样就不能在类的外部使用new 来创建实例对象了。
2. 在类的内部创建该类的实例对象,并且用INSTANCE 引用该对象,INSTANCE需要用private修饰。
3. 定义一个静态方法getInstance(),用于方法实例对象INSTANCE。

Java 中,`this`、`final` `static` 是三个重要的关键字,它们在不同场景下发挥着关键作用。 ### `this` 关键字 `this` 关键字主要用于在类的方法中引用当前对象。在调用没有 `static` 关键字的方法时可以使用 `this.方法名` 的形式。例如: ```java public class Student { public String name; public void run(String name) { this.name = name; } public void aaa() { this.run("aaaa"); } } ``` 在上述代码中,`this.run("aaaa")` 调用了当前对象的 `run` 方法,`this.name = name` 则是将传入的参数 `name` 赋值给当前对象的成员变量 `name` [^2]。 ### `final` 关键字 `final` 关键字是一个实用且强大的特性,可用于类、方法变量的定义。当使用 `final` 修饰变量时,必须赋予初始值。 - **类变量**:必须在静态初始化块中指定初始值或声明该类变量时指定初始值,且只能在这两个地方的其中之一指定。 - **成员变量**:必须在普通初始化块、声明该实例变量或构造器中指定初始值,且只能在这三个地方的其中之一指定。 示例代码如下: ```java public class Class1 { // 定义成员变量时直接赋值 final int a = 0; final String b; final int c; final static double d; // 对于被 final 修饰的没有初始值的类变量,必须在静态初始化代码块中赋值 static { d = 0.1; } // 被 final 修饰的没有初始值的成员变量可以在初始化代码块中赋值 { b = "acd"; } // 被 final 修饰的没有初始值的成员变量还可以在构造函数中赋值 public Class1(int c) { this.c = c; } } ``` `final` 还可用于修饰类方法,修饰类时,该类不能被继承;修饰方法时,该方法不能被重写 [^1][^4]。 ### `static` 关键字 `static` 表示静态的意思,可用来修饰成员方法成员变量。 - **成员变量**:`static` 修饰后的变量被称为类变量或静态成员变量,可被类的所有对象共享;无 `static` 修饰的成员变量是属于每个对象的,被称为实例变量。 - **成员方法**:`static` 修饰后的方法被称为类方法或静态方法;无 `static` 修饰的成员方法是属于每个对象的,也叫做实例方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码出优雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值