首页 > 其他分享 >关键字

关键字

时间:2023-08-15 21:12:56浏览次数:24  
标签:name 对象 关键字 static 修饰 super 构造函数

final finally finalize 区别

final 有什么用? 用于修饰类、属性和方法;

• 被 final 修饰的类不可以被继承

• 被 final 修饰的方法不可以被重写

• 被 final 修饰的变量不可以被改变,被 final 修饰不可变的是变量的引 用,而不是引用指向的内容,引用指向的内容是可以改变的 

•final 可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法 表示该方法不能被重写、修饰变量表 示该变量是一个常量不能被重新赋值。

• finally 一般作用在 try-catch 代码块中,在处理异常的时候,通常我们 将一定要执行的代码方法 finally 代码块 中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭 资源的代码。

• finalize 是一个方法,属于 Object 类的一个方法,而 Object 类是所有类 的父类,该方法一般由垃圾回收器来调 用,当我们调用 System.gc() 方法的时候,由垃圾回收器调用 finalize(),回收垃圾,一个对象是否可回收的 最后判断。

this关键字

this 关键字的用法 this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指 针。 this 的用法在 java 中大体可以分为 3 种:

1.普通的直接引用,this 相当于是指向当前对象本身。

2.形参与成员名字重名,用 this 来区分:

public Person(String name, int age) { this.name = name; this.age = age; }

3.引用本类的构造函数

class Person{ private String name; private int age;

public Person(){

}

public Person(String name) { this.name = name; }

public Person(String name, int age) { this(name); this.age = age; } }

super 关键字的用法

super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离 自己最近的一个父类。

super 也有三种用法:

1.普通的直接引用 与 this 类似,super 相当于是指向当前对象的父类的引用,这样就可以用 super.xxx 来引用父类的成员。

2.子类中的成员变量或方法与父类中的成员变量或方法同名时,用 super 进行区 分

class Person{ protected String name;

public Person(String name) { this.name = name; }

}

class Student extends Person{ private String name; public Student(String name, String name1)

{ super(name); this.name = name1; } public void getInfo(){ System.out.println(this.name);

//Child System.out.println(super.name); //Father } } public class Test { public static void main(String[] args) {

Student s1 = new Student("Father","Child"); s1.getInfo(); } }

3.引用父类构造函数 • super(参数):调用父类中的某一个构造函数(应该为构造函数中的第 一条语句)。

• this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的 第一条语句)。

this 与 super 的区别

• super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐 藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如: super.变量名 super.成员函数据名(实参)

• this:它代表当前对象名(在程序中易产生二义性之处,应使用 this 来 指明当前对象;如果函数的形参与类中的成员数据同名,这时需用 this 来指明成员变量名)

• super()和 this()类似,区别是,super()在子类中调用父类的构造方法, this()在本类内调用本类的其它构造方法。

• super()和 this()均需放在构造方法内第一行。 • 尽管可以用 this 调用一个构造器,但却不能调用两个。

• this 和 super 不能同时出现在一个构造函数里面,因为 this 必然会调用 其它的构造函数,其它的构造函数必然也会有 super 语句的存在,所以在 同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会 通过。

• this()和 super()都指的是对象,所以,均不可以在 static 环境中使用。 包括:static 变量,static 方法,static 语句块。

• 从本质上讲,this 是一个指向本对象的指针, 然而 super 是一个 Java 关 键字。

static 存在的主要意义

static 的主要意义是在于创建独立于具体对象的域变量或者方法。以致于即使没 有创建对象,也能使用属性和调用方法!

static 关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性 能。static 块可以置于类中的任何地方,类中可以有多个 static 块。

在类初次 被加载的时候,会按照 static 块的顺序来执行每个 static 块,并且只会执行一 次。

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

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

static 的独特之处

1、被 static 修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变 量和方法不属于任何一个实例对象,而是被类的实例对象所共享。 怎么理解 “被类的实例对象所共享” 这句话呢?就是说,一个类的静态成员, 它是属于大伙的【大伙指的是这个类的多个对象实例,我们都知道一个类可以创 建多个实例!】,所有的类对象共享的,不像成员变量是自个的【自个指的是这 个类的单个实例对象】…我觉得我已经讲的很通俗了,你明白了咩?

2、在该类被第一次加载的时候,就会去加载被 static 修饰的部分,而且只在类 第一次使用时加载并进行初始化,注意这是第一次用就要初始化,后面根据需要 是可以再次赋值的。

3、static 变量值在类加载的时候分配空间,以后创建类对象的时候不会重新分 配。赋值的话,是可以任意赋值的!

4、被 static 修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载 完毕之后,即便没有创建对象,也可以去访问。 static 应用场景 因为 static 是被类的实例对象所共享,因此如果某个成员变量是被所有对象所 共享的,那么这个成员变量就应该定义为静态变量。

因此比较常见的 static 应用场景有:

1、修饰成员变量

2、修饰成员方法

3、静态代码块

4、修饰类【只能修饰内部 类也就是静态内部类】

5、静态导包 static 注意事项

1、静态只能访问静态。

2、非静态既可以访问非静态的,也可以访问静态的。

标签:name,对象,关键字,static,修饰,super,构造函数
From: https://www.cnblogs.com/szza/p/17632440.html

相关文章

  • JAVA关键字理解
    各种关键字总是弄混,划一根线来梳理一下它们之间的关系~前言关键字,是语言的肢体,利用关键字才能表现出不同的动作,进而真正实现功能。不得不说任何一种计算机语言都会从数据类型开始讲起。当基本数据类型不足以满足当下需求时,就会出现数组等各种类型,即引用数据类型。【所以会有......
  • 标识符和关键字
    标识符和关键字关键字 标识符  ......
  • 优维产品最佳实践第4期:如何在海量日志中捞到你要的关键字?
    日志记录了软件系统的生命线,为我们提供了故障排查和性能优化的关键线索。本期EasyOps产品使用最佳实践,我们将为您揭晓:如何监控日志的关键字?如何基于关键字告警?日志关键字监控日志作为软件系统运行时记录,记录了软件运行生命周期的事件,因此日志监控在监控实践中属于非常关键的......
  • 软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用
    在Python中,函数参数是定义在函数头部的变量,用于接收传递给函数的数据。Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。Python函数参数类型必传参数:最常用的,必传确定数量的参......
  • JavaSE--super关键字
    一、super关键字1、super是一个关键字,全部小写2、this与super对比  this:    this可以出现在实例方法中和构造方法中    语法:this.或者this()    this不能使用在静态方法中    this.大部分可以省略,在区分局部变量和实例变量的时候不能省略,    this......
  • WEB自动化-框架-关键字封装
    所谓的关键字驱动,本质就是函数封装的过程。⾃动化当中的封装⽬的是:拆分重复的⾏为代码和测试数据,增加可维护性和复⽤性 对于某些用例都需要执行的功能,比如登陆、切换环境、登陆后进入大模块等。像这样的前置功能或者后置功能写到一个用例里面,其他用例就不能使用了。所以需要配......
  • 软件测试|MySQL DISTINCT关键字过滤重复数据
    简介在MySQL中,有时候我们需要从表中检索唯一的、不重复的数据。这时,我们可以使用DISTINCT关键字来过滤掉重复的数据行。在本文中,我们将深入探讨MySQL中DISTINCT的用法以及如何在查询中使用它来得到不重复的结果集。基本语法DISTINCT关键字用于在SELECT语句中指示查询结果中去除重复......
  • 【八股文 03】extern、static、this、inline、volatile 关键字
    0概览以下为概览,如果看到问题都能基本想到答案,则不需要看正文中详细的内容extern作用static作用修饰变量局部变量全局变量类成员变量修饰函数普通函数类成员函数this指针this指针的类型为?在常函数里this指针的类型为?inline内联函数的特点与......
  • java中static关键字的作用
    static关键字的作用static可以修饰变量、方法、代码块和内部类static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。static变量和非sta......
  • 进程注入检测——DLL注入检测的几种方式:1、命令行,包含某些特定注入工具的关键字 2、排
    进程注入检测DLL注入检测的几种方式:1、命令行,包含某些特定注入工具的关键字2、排除白名单的可疑注入3、可疑的DLL加载4、特定工具注入的startaddress异常 以下内容来自CAR和splunk等开源检测渠道: title:CobaltStrikeProcessInjectionid:6309645e-122d-4c5b-bb2b-22e4f9c2fa42......