Java_10【关键字】

java中含有许多自带的关键字方便我们编程实现程序,关键字的使用是javaEE部分的重点和基础

static

“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”
引用自Java编程思想
重点抽取之后 再没有穿件对象的情况之下也能使用的方法和变量
static可以用来修饰成员方法,类的成员方法,可以被用来优化程序性能

1)staitc方法

一般被称作静态方法,在使用时直接用类名去调用
在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
但是在非静态成员方法中是可以访问静态成员方法/变量的。

2)static变量

修饰的变量被称为静态变量,静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
  static成员变量的初始化顺序按照定义的顺序进行初始化。

3)static代码块

静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
特点 执行的级别在类中最高,在类加载时就执行且只执行一次。

this

在某种情况下区分调用对象

1)调用本类的属性

引用成员变量出现最多的情景,就是封装

class test{
	private String name;
	public void setName(String name){
	this.name=name;
	}
}

区分传入的参数name与本类中对象调用name的区别
某个变量前面加上一个this关键字,其指的就是这个对象的成员变量或者方法,而不是指成员方法的形式参数或者局部变量。
this.name代表的就是对象中的成员变量,又叫做对象的属性,而后面的name则是方法的形式参数。

2)在构造器中调用对象本身的其他构造器

使用的场景体现在构造器的重载

class Test{
	void test(){
		System.out.println("wudi")}
	void test(String name){
		this.test();
		System.out.println("shuaihui");
	}
}

这是一点测试的代码假如我们去调用有参数的test就会在有参的中this调用无参test;最终执行两段代码
wudiu
shuaihui
在构造器中可以通过this()方式来调用其他的构造器。但在一个构造器中最多只能调用一个其他的构造器。并且,对其他构造器的调用动作必须放在构造器的起始处(也就是构造器的首行),否则编译的时候将会出现错误,另外不能在构造器以外的地方以这种方式调用构造器。

3)返回类的引用

可以使用return this来返回某个类的引用。此时,这个this关键字就代表类的名称。

为什么有static就不能有this

1.Static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了,但是对象是在创建时才在内存中生成。而this指代的是当前的对象,在方法中定义使用的this关键字,它的值是当前对象的引用.也就是说你只能用它来调用属于当前对象的方法或者使用this处理方法中成员变量和局部变量重名的情况.而且,更为重要的是this和super都无法出现在static 修饰的方法中,static 修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象.如果使用的是类来调用而不是对象,则 this就无法指向合适的对象.所以static 修饰的方法中不能使用this.。简单的说就是this的使用必须伴随对象而static的存在不需要对象所有有static不能有this

final

字面意思就是最终的,可以理解不可变的
1、被final修饰的方法,JVM会尝试为之寻求内联,这对于提升Java的效率是非常重要的。因此,假如能确定方法不会被继承,那么尽量将方法定义为final的。
2、被final修饰的常量,在编译阶段会存入调用类的常量池中。

1)变量

表示该变量不可改变,对基本类型来说是其值不可变,而对于对象变量来说其引用不可变。
被final修饰的变量不可以被改变

2)方法

将方法声明为final,说明这个方法提供的功能已经满足当前要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆盖这个方法。

但任然可以继承这个方法。即可以直接使用。
被final修饰的方法不可以被重写

3)类

被final修饰的类不可以被继承,也就是说该类不能被扩展。对于final类中的成员,可以定义其为final也可以不是final。
被final修饰的类不可以被继承

总结
在这里插入图片描述
生命不息!!!奋斗不止!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值