1.java常用关键字,构造函数,块

目录

this关键字

super关键字

instanceof 关键字

final关键字

static关键字

构造函数

普通块代码(构造代码块)

静态代码块



this关键字

this关键字代表是对象的引用。也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用

用途:

  1. 存在同名成员变量与局部变量时,方法默认访问局部变量的数据,可以通过this指定访问成员变量。
  2. 在一个构造函数中可以调用另一个构造函数初始化对象。(注:this关键字调用其他构造函数时必须位于构造函数的第一个语句)

注意事项:

  1. 存在同名成员变量与局部变量时,java采用“就近原则”访问机制访问局部变量的数据。
  2. 在一个方法中范围一个变量,该变量只存在成员变量情况下,java编译器会在该变量前面添加this关键字。

调用其他构造方法时注意:

  1. this关键字调用其他构造方法时必须位于构造方法中的第一个语句。否则编译错误
  2. 不能出现递归构造方法调用,构造方法的相互调用出现死循环,在编译时期会报错。

 


super关键字

super关键字代表父类空间的引用。必须有继承关系才能使用

作用:

  1. 子父类存在同名成员时,子类中默认访问子类成员;可通过super关键字指定访问父类的成员。
  2. 创建子类对象时,默认会先调用父类无参的构造方法;可通过super关键字指定调用父类的构造方法。

注意事项:

  1. 如果在子类的构造方法中没有调用父类的构造方法,那么java编译器会在子类的构造方法中加上  super();  语句。
  2. super关键字调用父类构造方法时,该语句必须位于构造方法中的第一个语句

super与this关键字不能同时出现在同一个构造方法中调用其他的构造方法。

 


instanceof 关键字

判断一个对象是否属于指定的类型。

 

使用前提:判断对象与指定的类别必须要存在继承或实现的关系。

使用格式:   (对象 instanceof 类别)   返回boolea类型

作用:做强制类型转换之前一般都会先用instanceof判断,然后再转换

 


final关键字

  1. final关键字修饰一个基本类型的变量时,该变量不能重新赋值
  2. final关键字修饰一个引用类型变量时,该变量不能重新指向新的对象
  3. final关键字修饰一个函数的时候,该函数不能被重写
  4. final关键字修饰一个类的时候,该类不能被继承

 


static关键字

为了实现对象之间重复属性的数据共享

用途:主要用于修饰类的成员

  • 成员变量

非静态成员变量:需要创建对象来访问。    (对象.变量名

静态成员变量:使用类名直接调用,也可以通过对象访问。    (对象.变量名;    类名.变量名

  • 成员方法(可以使用类名直接调用)

非静态函数:只能使用对象进行调用。    (对象.静态函数名()) 

静态函数:可以使用对象或类名进行调用。    (对象.静态函数名();    类名.静态函数名()

 

推荐使用类名直接访问静态的成员。

什么时候定义静态函数?    如果功能内部没有直接访问到非静态成员数据(对象的特有数据。那么该功能就可以定义为静态),一般用于工具类型方法(不用创建对象,直接使用  类名.方法名() 调用)

注意事项:

  1. 静态函数中可以直接访问静态成员,但不能直接访问非静态成员。    原因:静态函数可以使用类名调用,这时候可能还没有对象存在,就没有非静态成员数据
  2. 非静态函数可以直接访问静态成员与非静态成员。    原因:非静态函数只能使用对象调用,对象存在时,静态数据与非静态数据都存在了
  3. 静态函数不可以定义this,super关键字。     原因:静态函数一旦使用类名调用,这时候还不存在对象

 

静态数据生命周期:静态的成员变量的数据是优先于对象存在的。静态方法与非静态方法的字节码文件是同时存在内存中的。


native

JNI,Java Native Interface(Java本地接口)

和本地C代码进行互操作的

 


构造函数

  • 构造函数作用:给对应的对象进行初始化;

构造函数与普通的函数的区别

  1. 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容
  2. 构造函数是在对象建立时由jvm主动调用对应的构造方法, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。
  3. 构造函数只有在创建对象时调用。普通函数可以使用对象多次调用。
  4. 构造函数的函数名要与类名一样。而普通的函数只要符合标识符的命名规则即可。
  5. 构造函数没有返回值类型。而普通的函数即使没有返回值,返回值类型也要写void。


构造函数注意的细节

  1. 当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数,权限修饰符与类的权限修饰符一致。当类中如果自定义了构造函数,这时默认的构造函数就没有了。    备注:可以通过javap命令反编译验证。
  2. 在一个类中可以定义多个构造函数,以进行不同的初始化。多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同。

 


从 { 开始 到对应的 } 结束,即一个块

 

普通块代码(构造代码块)

:给所有的对象进行统一的初始化; 对象一建立就立刻运行 并且优先于构造函数

{

 执行语句 ;

}

与构造函数区别

  1. 构造代码块和构造函数的区别,构造代码块是给所有对象进行统一初始化, 构造函数给对应的对象初始化。
  2. 构造代码块的作用:它的作用就是将所有构造方法中公共的信息进行抽取。

 

静态代码块

:随着类的加载而加载。只执行一次,优先于主函数。用于给类进行初始化。

static{

静态代码块执行语句;

}

 


注 + + + + + + + + + + + + + + + java编译顺序

java编译器编译源文件时,把成员变量声明语句提前至类的最前端,初始化其实在构造函数中执行。

java编译后构造代码块的代码就会移到构造函数中,在构造函数之前执行,原构造函数中代码最后执行

 

成员变量的显示初始化与构造代码块按顺序执行

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xyc1211

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

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

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

打赏作者

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

抵扣说明:

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

余额充值