Java学习笔记(12)

news2024/12/24 9:39:30

导包

Final

不能被改变的,修饰方法 类 变量

方法不能被重写

类不能被继承

变量,赋值一次,变成常量,不能再被赋值

final修饰引用数据类型,地址值不能变,里面的内容可以变

字符串是不可变的

源码中使用了private 和 final来修饰

Final修饰value使其中所存的string的地址值不能发生改变

再用private使得外界无法访问这个地址值,也就无法修改地址值

所以string里面的内容就是不能改变的

权限修饰符

代码块

局部代码块

构造代码块

这两种代码块渐渐被淘汰,不够灵活

怎么改?

  1. 直接调用有参构造
  2. 直接把重复的代码写成一个方法,直接调用

静态代码块

数据初始化的时候用

创建第一个student类时就会执行一次

创建第二个student类时机不会执行

抽象类 abstract

注意抽象方法定义没有大括号

抽象类不能创建对象

既然不能创建对象,那写构造方法有什么用?

A:当创建子类对象时,给属性进行赋值的

统一代码格式

接口 interface

定义规则

Implement

注意接口里swim是抽象方法

一个类implement一个接口后,就成了这个接口的子类,叫做实现类

接口中成员的特点

成员变量只能是常量

没有构造方法

只有抽象方法

多个接口有同名的抽象方法,则实现类中只需重写一次抽象方法,相当于重写了所有接口里的同名抽象方法。

接口继承之后,实现类里要重写所有父接口和子接口的抽象方法

JDK8后接口新增的方法

默认方法 带方法体的

加default,如果省略了default,就会被当成一个抽象方法

出现多个相同名字的默认方法,就必须要重写

静态方法 不能被重写

通过接口名.静态方法调用

JDK9之后,接口中加入私有方法

有static,只能用在静态方法中

没有static,用在默认default默认方法中

抽象方法都没有方法体,所以这些私有方法抽象方法都用不了

接口的应用

适配器设计模式 class,也是一个类

在实现类和接口之间的中间类,让实现类继承extends中间类

里面重写所有接口的抽象方法,不过是空实现

适配器写成抽象类abstract,防止被外界创建对象

内部类

为什么外部类访问内部类成员必须要创建对象?

A:因为在测试类中调用外部类的成员方法时,成员方法的形参中会有一个隐藏的this要表示调用者,如果直接使用内部类的方法,这个this调用者就没办法调用,必须先创建一个内部类的对象,通过这个内部类对象才能调用内部类的方法。

内部类的分类

成员内部类

Private:只能在本类中使用,在外界不能用

默认:只能在本包当中用,其他包用不了

Protected:只能在本包中其他类中使用或者是其他包的子类也能用

Public:所有地方都能创建对象

Static:叫做静态内部类

Private:方式一适用,方式二不适用

其他基本都用方式二

成员内部类如何获取外部类的成员变量

Outer.this.a?

内存方面解释

外部类和内部类的字节码文件是分别独立加载在方法区内存中的

内部类对象中会有一个隐藏的this记录外部类对象的地址值

Outer.this 就是获取外部类对象的地址值

总结

静态内部类 成员内部类的特殊情况 static修饰

Show1是静态内部类的非静态方法,show2是静态内部类的静态方法

局部内部类

匿名内部类 最重要!

隐藏了名字 java会帮我们起名字 叫做  (外部类类名$序号)

其实new出来的是一个对象,真正的匿名内部类是后面大括号里面的内容。

大括号里和前面的类名或是接口名是继承或实现的关系。

然后这个匿名内部类中就要重写前面的类名或是接口的所有的抽象方法

所以,把这个匿名内部类当做是一个不用起名字的子类/实现类 去用

同时,也可以起名字,即把它赋值给一个变量

还可以直接调用自己的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1520943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu(20.04)-安装JAVA环境-IDEA

1.下载IDEA 2.解压文件 sudo tar -zxvf idealC-2022.2.3.tar.gz -C /opt 3.添加环境变量: .vim ~/.bashrc export IDEA_HOME/opt/ideaIC-2022.2.3/ export PATH${IDEA_HOME}/bin:$PATH source ~/.bashrc 4.启动: cd /opt/ideaIC-2…

安装jupyter报错:404 GET /static/notebook/4131.bundle.js

1、报错安装过程 我直接是pip install jupyter 进行的安装,如下,安装的版本是7.1.2 2、报错结果 运行jupyternotebook后报错:404 GET /static/notebook/4131.bundle.js (3bea7012d1534d70a935c3c193d9308d127.0.0.1) 5.70ms refererht…

cf(163)

D. Tandem Repeats? 找最长串联字串的长度 #include<iostream> #include<algorithm> #include<cstring> #include<queue> #include<vector> #include<map> using namespace std; typedef pair<int,int>PII; typedef long long ll…

ThingsBoard Edge 安装部署

文章目录 一、概述1.官方文档2.部署说明3.安装准备3.1. 克隆服务器3.2.安装 Docker3.3.安装 Java 113.4.安装 PostgreSQL3.5.下载安装包 二、安装部署1.创建 Edge 实例2.创建数据库3.Edge 服务安装3.1.安装服务3.2.配置 Edge3.3.运行安装脚本3.4.重新启动服务 4.访问 Edge5.故障…

基于ssm+layui的图书管理系统

基于ssmlayui的图书管理系统 账户类型分为&#xff1a;管理员&#xff0c;用户管理员私有功能用户私有功能公共功能技术栈功能实现图 视频演示 账户类型分为&#xff1a;管理员&#xff0c;用户 图书管理系统主要登录账户类型为管理员账户与用户账户 管理员私有功能 账户管理…

算法的渐进时间复杂度

T(n) = O(F(n)) T(n):Time 渐进时间复杂度 O:正比例关系 F(n):代码执行次数 只要代码执行的次数越来越多 所耗费的时间也就越来越高 常见的5种: O(n^2) O(n logn) O(n) O(logn) O(1):不管重复多少次1次也是这个时间,10次也是这个时间。 时间复杂度排序:由小到…

关于如何在BIOS中设置引导顺序,看这篇文章就差不多了

前言 更改计算机上“可引导”设备(如USB端口、软盘驱动器或光盘驱动器中的硬盘驱动器或可引导介质)的引导顺序非常容易。 为什么要更改引导顺序 有几个场景需要更改引导顺序,例如启动一些数据销毁工具和可引导防病毒程序,以及安装操作系统。 BIOS设置实用程序用于更改引…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ScrollBar)

滚动条组件ScrollBar&#xff0c;用于配合可滚动组件使用&#xff0c;如List、Grid、Scroll。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含单个子组件。 接口 ScrollBar(val…

C++ 入门篇

目录 1、了解C 2、C关键字 2、命名空间 2.1 命名空间的定义 2.2 命名空间的使用 3. C输入与输出 4.缺省参数 4.1 缺省参数的概念 4.2 缺省参数的分类 5. 函数重载 5.1 函数重载的概念 5.2 C中支持函数重载的原理--名字修饰 6. 引用 6.1 引用概念 6.2 引用…

【Miniconda】Linux系统中 .condarc 配置文件的位置一般在哪里

【Miniconda】Linux系统中 .condarc 配置文件的位置一般在哪里 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到…

Elasticsearch 索引库操作 文档操作

索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。要向es中存储数据&#xff0c;必须先创建“库”和“表”。 mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a; 字段数据类型&#xff0c;常见的简…

CSS3技巧38:3D 翻转数字效果

博主其它CSS3 3D的文章&#xff1a; CSS3干货4&#xff1a;CSS中3D运用_css 3d-CSDN博客 CSS3干货5&#xff1a;CSS中3D运用-2_中3d-2-CSDN博客 CSS3干货6&#xff1a;CSS中3D运用-3_css3d 使用-CSDN博客 最近工作上烦心的事情太多&#xff0c;只有周末才能让我冷静一下 cod…

黑群晖: 未在 DS918+ 中检测到硬盘 之 解决方案

黑群晖&#xff1a; 未在 DS918 中检测到硬盘 之 解决方案 操作如下&#xff1a; 进入BIOS&#xff0c;将sata operation 设置为 AHCI 即可

ARMv8架构特殊寄存器介绍-0

一、zero 寄存器 零寄存器用作源寄存器时读取零&#xff0c;用作目标寄存器时丢弃结果。您可以在大多数指令中使用零寄存器&#xff0c;但不是所有指令。二、sp寄存器 在ARMv8架构中&#xff0c;要使用的堆栈指针的选择在某种程度上与Exception级别。默认情况下&#xff0c;异…

套利 19个ETH 案例二解析

交易时间 2024.03.10 &#xff1b; 获利&#xff1a;19eth 套利交易地址&#xff1a; 0x4a3e5209877755c293b39b6cdc9414195cf7c951cd7a36bea426ded224f1b337 交易流程看着比较复杂&#xff1a; 实际核心获利的部分就是第4行的交易和第7行的交易&#xff0c;也是利用了2个交易…

【OceanBase诊断调优】—— 敏捷诊断工具obdiag一键分析OB集群日志设计与实践

最近总结一些诊断OCeanBase的一些经验&#xff0c;出一个【OceanBase诊断调优】专题&#xff0c;也欢迎大家贡献自己的诊断OceanBase的方法。 1. 前言 obdiag定位为OceanBase敏捷诊断工具。1.2版本的obdiag支持诊断信息的一键收集&#xff0c;光有收集信息的能力&#xff0c;…

Ubuntu 安装 KVM 虚拟化

1. Ubuntu 安装 KVM 虚拟化 KVM 是 Linux 内核中一个基于 hypervisor 的虚拟化模块&#xff0c;它允许用户在 Linux 操作系统上创建和管理虚拟机。 如果机器的CPU不支持硬件虚拟化扩展&#xff0c;是无法使用KVM(基于内核的虚拟机)直接创建和运行虚拟机的。此时最多只能使用…

JavaScript进阶:js的一些学习笔记-4

文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象&#xff1a;Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…

双路控制比例方向阀放大器

该模块比例放大器用于控制一个带有两个螺线管的比例方向控制阀或一个/两个独立的比例压力阀或比例节流阀&#xff0c;每个阀带有一个或二个螺线管。 各种可调参数允许对相应阀门的最佳适应。单路双路四路控制&#xff0c;供电24VDC&#xff0c;输入指令兼容多种可选&#xff0c…

前端基础——HTML傻瓜式入门(1)

该文章Github地址&#xff1a;https://github.com/AntonyCheng/html-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…