当前位置:网站首页>内部类、static关键字、final
内部类、static关键字、final
2022-08-03 04:43:00 【lbsjdxsn】
final关键字:
final:最终、最后
1、一旦被它修饰变量,称为了常量
static final
final除了修饰常量外,也可以修饰方法或者类
2、如果final修饰了方法,该方法将无法被重写(override)
3、final关键字也可以修饰类,一旦某个类被final修饰,该类将断子绝孙,无法被继承。
面试题:为什么字符串使用final关键字
从设计安全上讲
- 确保它们不会在子类中改变语义。String类是final类,这意味着不允许任何人定义String的子类。换言之,如果有一个String的引用,它引用的一定是一个String对象,而不可能是其他类的对象。
- String 一旦被创建是不能被修改的。类加载器要用到字符串,不可变性提供了安全性,以便正确的类被加载。
从效率上讲
- 设计成final,JVM才不用对相关方法在虚函数表中查询,而直接定位到String类的相关方法上,提高了执行效率。
- Java设计者认为共享带来的效率更高,字符串常量池的出现实现共享,节约空间,提高效率。
内部类:
内部类,指的就是定义在某个类内部的类。
- 什么是内部类:
将类写在其他类的内部,可以写在其他的成员位置和其他类的局部位置,这时写在其他类内部的类就称为内部类。
- 什么时候使用内部类
在描述事物,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含这发动机这个事物,这时发动机就可以使用内部类来描述。即就是内部事物必须寄宿在外部事物内部。


- 面试常见的问题
以下代码运行中,请注意如何访问对应的num变量
public class Test {
public static void main(String[] args) {
Outer.Inner in = new Outer().new Inner();
in.show();
}
}
class Outer {
int num = 5;// 外部类的成员变量
class Inner {
int num = 6;// 内部类的成员变量
void show() {
int num = 7; // 内部类局部变量
System.out.println("内部类局部num=" + num);
System.out.println("内部类成员num=" + this.num);
System.out.println("外部类成员num=" + Outer.this.num);
}
}
}
static关键字:
静态导包:
如果需要使用第一个静态方法,该方法需要导包,可以使用静态导包的方式,如果静态导入成功后,就可以直接使用静态方法的名称。
边栏推荐
- Super handy drawing tool is recommended
- Shenzhen Offline Registration|StarRocks on AWS: How to conduct rapid and unified analysis of real-time data warehouses
- js的垃圾回收机制
- js中的闭包
- JS底层手写
- 修饰生物素DIAZO-生物素-PEG3-DBCO|重氮-生物素-三聚乙二醇-二苯基环辛炔
- Interface testing framework of actual combat (2) | interface request assertion
- DFS's complement to pruning
- Flink state
- Peptides mediated PEG DSPE of phospholipids, targeted functional materials - PEG - RGD/TAT/NGR/APRPG
猜你喜欢

DDL操作数据库、表、列

数字孪生园区场景中的坐标知识

私域流量时代来临,电商企业如何布局?

typescript47-函数之间的类型兼容性

Kotlin-Flow common encapsulation class: the use of StateFlow

shell script loop statement

WinForm的控件二次开发

【HMS core】【Ads Kit】华为广告——海外应用在国内测试正式广告无法展示

Jmeter 模拟多用户登录的两种方法

【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
随机推荐
MySQL 删除表数据,重置自增 id 为 0 的两个方式
closures in js
mysql bool盲注
The flink sql task is changed, and after adding several fields to the sql, an error occurs when restoring from the previously saved savepoint.
9.新闻分类:多分类问题
13.机器学习基础:数据预处理与特征工程
Interface test practice | Detailed explanation of the difference between GET / POST requests
js中的闭包
普乐蛙VR台风体验馆厂家VR防震减灾模拟VR沉浸式体验设备
常见荧光染料修饰多种基团及其激发和发射波长数据一览数据
rosbag工具plotjuggler无法打开rosbag的问题
索引创建、删除与使用
在竞争白热化的电商行业,链动2+1为什么还有企业在用
Live | StarRocks technology insider: low base dictionary global optimization
CobalStrike(CS)基础超级详细版
接口测试框架实战(四)| 搞定 Schema 断言
数字化时代,企业如何建立自身的云平台与商业模式的选择?
redis键值出现 xacxedx00x05tx00&的解决方法
接口测试框架实战(三)| JSON 请求与响应断言
MySql 创建索引