this、static、super、final

本文详细解析了Java中的this、static、super、final关键字的使用场景和注意事项,包括它们的基本语法、功能特性及对程序性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、this

通常写this的时候,都是指“这个对象”或者“当前对象”,而且它本身表示对当前对象的引用。

this的使用方法如下。
(1)用this指代对象本身。
(2)访问本类的成员:this.属性名,this.方法名()。解决参数和成员变量名字歧义问题
(3)调用本类的构造器:this(参数)。构造函数里调用构造函数

二、static

static(静态)更像是全局变量可以共享数据。静态数据都只占用一份存储区域。 

static方法就是没有this的方法;

在static方法内部不能调用非静态方法,但是反过来却可以;

可以在没有创建任何对象的前提下,仅仅通过类名本身来调用static方法,这其实是static方法的主要用途。

static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量)。

static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。

static 代码块优化性能:

static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

  为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。

很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。

三、super

super关键字主要有以下两种用途。
(1)调用父类的构造器:super(参数);
(2)访问隐藏的成员:super.属性名;super.方法名();

四、final

1.final修饰类表示该类不能被继承。

在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,那么就设计为final类。

有时候出于安全考虑,可以把一些类定义为final型,比如String类是Java中非常重要的类,对于编译器和解释器的运行有着重要作用,不能轻易改变。
针对final型类:其属性可以定义为final,也可以不是final;对于方法,由于所属类为final型,其方法也就默认为final型方法了,即使方法没有声明final型。

2.final修饰的属性是常量。

final修饰基本类型容易理解就表示这个基本类型值不可变。

对于引用类型的final对象,表示引用恒定不变、对象本身可以修改。

有个形象的比喻:一个女子定义了一个final的老公,这个老公的职业和收入都是允许改变的,只是这个女人不会换老公而已

3.final修饰的方法称为最终方法,不允许子类重写父类的final方法。

使用final方法的有两个优点。

第一,把方法锁定,防止任何继承类修改它的意义和实现。

第二,final方法执行效率高,因为不需要进行方法重写判定。编译器在遇到调用final方法时,会转入内嵌机制,大大提高执行效率。

4. 对于被final修饰的变量,在用的时候是可以直接替换的,因为其本身是固定不可变的

	public static void main(String[] args) {
		final String s = "java"; 
		String s1="hello";
		String s2 ="hellojava";
		
		String s3="hello"+s;//s是final可以直接替换为java,因此s3在编译期间即可确定值,存放在常量池。
		String s4=s1+s;//s1在编译期间是一个变量也就是说在编译期间不能确定s4的值,必须到运行时才能确定s4的值,不会存放在常量池。和s3的引用不相同
		System.out.println(s2==s3);//true
		System.out.println(s2==s4);//false
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值