static,final,this关键字总结

static,final,this关键字总结

一.static关键字

四个用法:

1.修饰成员变量

当成员变量不使用static修饰时,变量是属于不同的对象的,也就是说创建一个对象后,这个变量是它独有的,和其它对象没有关系。

当使用static修饰后,变量则是属于这个类的,也就是对象共有的,当在一个对象中修改后,其它对象中也同时会被修改。

2.修饰成员方法

成员方法本就属于类,所以使用static修饰后,最大的作用就是可以用类名.方法名调用,其它没有太大区别。

3.静态代码块

对象初始化相关:用static修饰的成员变量,不需要创建对象,而是只要使用到这个对象便会被初始化,而且总是在普通成员变量之前按定义的顺序被初始化。

使用下面这种语法:

class Book{
    public Book(String msg) {
        System.out.println(msg);
    }
}
public class Person {
    static Book book1;
    
    static {
        book1 = new Book("static成员book1成员变量初始化");
    }
    
    
}

 可以替代static Book book1 = new Book("static成员book1成员变量初始化");而static加花括号的部分便是静态代码块

4.静态导包

采用import static com.xustudy.PrintHelper.*;这种语法后,便可以直接调用方法名来使用PrintHelper中的静态方法。

二.final关键字

四个用法:

1.修饰数据

包括修饰基本类型变量和引用类型变量

修饰基本类型变量:代表该变量被赋值后便不可被改变,也就是成为常量。

修饰引用类型变量:代表引用变量的引用不能改变,也就是不能再指向堆中的其它对象,但在堆中存储的数据是可以被改变的。

注意:使用final修饰的变量前必须初始化变量。直接赋值或在构造器中赋值都可以。

2.修饰方法中的参数

如果传参用final修饰,表示在方法当中你不能再改变传参的值了(基本类型和引用类型的区别和上面一样)。

3.修饰方法

用final修饰某个方法表示该方法不能被覆盖,同样private方法也不能被覆盖。

4.修饰类

表示该类不能被继承。

以上四种用法中1,2较常用,3,4较鸡肋。

三.this关键字

三个用法

1.调用本类中的属性和其它方法

即把 '对象名.成员变量'  或 '对象名.方法名' 改成  'this.成员变量  'this.方法名'。其中 'this.成员变量' 一个用法是:当成员变量名称与形参重名时可以用this区分。而 'this.方法名' 更多的时候没有必要使用,直接调用方法名即可。

2.调用本类中其它构造方法,调用时必须放在构造方法首行

基本用法是在一个构造器中调用其它构造器,比如Person类中有两个构造器:

class Person{
        public Person(){
	}
	
	public Person(String name){
	    this();
	}
}


this();就表示第一个无参构造器,且必须放在有参构造器第一行。同样也是根据参数数量进行区分。

3.返回当前对象的引用

将自身传递给外部方法,如下例:

class Person {
	public void eat(Apple apple){
		Apple peeled = apple.getPeeled();
	}


}
class Peeler{
	static Apple peel(Apple apple){
		//...remove peel
		return apple;
	}
}
class Apple{
	Apple getPeeled(){
		return Peeler.peel(this);
	}
}


public class Test{
	public static void main(String[] args) {
		new Person().eat(new Apple());
	}
}
 

Apple需要调用Peeler.peel()方法,它是一个外部的工具方法,将执行由于某种原因而必须放在Apple外部的操作,为了将其自身传递给外部方法,Apple必须使用this关键字。(来自java编程思想)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值