当前位置: 首页 > news >正文

【JavaSE】复习(进阶)

文章目录

  • 1.final关键字
  • 2.常量
  • 3.抽象类
    • 3.1概括
    • 3.2 抽象方法
  • 4. 接口
    • 4.1 接口在开发中的作用
    • 4.2类型和类型之间的关系
    • 4.3抽象类和接口的区别
  • 5.包机制和import
    • 5.1 包机制
    • 5.2 import
  • 6.访问控制权限
  • 7.Object
    • 7.1 toString()
    • 7.2 equals()
    • 7.3 String类重写了toString和equals
  • 8.内部类
    • 8.1 概述
    • 8.2内部类示例
    • 8.3 匿名内部类
  • 9.数组
    • 9.1声明
    • 9.2 初始化
    • 9.3 main方法的String数组
    • 9.4数组扩容
    • 9.5 二维数组
    • 9.6Array

1.final关键字

final修饰的类无法继承

final修饰的方法无法被覆盖,被重写。

final修饰的局部变量,一旦赋值,就不能再赋值。

final修饰的引用,只能指向同一个对象,不能再指向其它对象。在该方法中,该引用指向该对象后,该对象不会被垃圾回收器回收。直到该方法结束。

fianl修饰的实例变量,系统不管,程序员必须手动赋值。在变量后面赋值可以,在构造方法中赋值也可以。

2.常量

final修饰的实例变量一般添加static修饰。

3.抽象类

3.1概括

类和类之间有共同特征,将共同特征提取出来,构成抽象类。

抽象类也属于引用数据类型。

语法:

[修饰符列表] abstract class 类名 {类体;
}

抽象类无法被实例化,但抽象类有构造方法,供子类使用。

3.2 抽象方法

在这里插入图片描述

抽象类不一定有抽象方法,抽象方法一定在抽象类中。

非抽象类继承抽象类的时候,非抽象类要将父类继承过来的抽象方法进行重写。

4. 接口

接口也是一种引用数据类型,编译后也生成.class字节码
语法:

[修饰符列表] interface 接口名{}

接口支持多继承

接口中只有常量和抽象方法。

接口中的方法定义时 public abstract 可以省略。
接口中的常量定义时 public static final 可以省略。

类和接口之间叫做实现。使用implements关键字。
类和类之间叫做继承。使用extends关键字。

当一个非抽象类实现一个接口时,必须重写接口中的所有抽象方法。

4.1 接口在开发中的作用

在这里插入图片描述

4.2类型和类型之间的关系

在这里插入图片描述

4.3抽象类和接口的区别

在这里插入图片描述

5.包机制和import

5.1 包机制

package 包名

注:该语句只能出现在java源代码的第一行。
包名一般为:公司域名倒序 + 项目名 + 模块名 + 功能名

使用包机制后,编译

javac -d . HelloWorld.java

运行使用

java 包名.原来的类名

(类名改变)

5.2 import

在这里插入图片描述

6.访问控制权限

在这里插入图片描述
在这里插入图片描述

7.Object

7.1 toString()

package com.sdnu.test01;public class MyTime {public static void main(String[] args) {TestTime testTime = new TestTime();System.out.println(testTime.toString());TestTime testTime1 = new TestTime(2000, 2, 6);System.out.println(testTime1.toString());}
}
class TestTime {int year;int month;int day;public TestTime(){}public TestTime(int year, int month, int day){this.year = year;this.month = month;this.day = day;}/*** 重写* @return String*/public String toString(){return "testTime" + "@" + this.year + "\\" + this.month + "\\" + this.day;}
}

testTime@0\0\0
testTime@2000\2\6

7.2 equals()

该方法返回是否是同一个对象。

package com.sdnu.test01;import java.util.Objects;public class TestEquals {int year;int month;int day;public TestEquals() {}public TestEquals(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}public int getYear() {return year;}public int getMonth() {return month;}public int getDay() {return day;}@Overridepublic String toString() {return "TestEquals{" +"year=" + year +", month=" + month +", day=" + day +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;TestEquals that = (TestEquals) o;return year == that.year &&month == that.month &&day == that.day;}public static void main(String[] args) {TestEquals testEquals = new TestEquals();TestEquals testEquals1 = new TestEquals(2000, 2, 8);System.out.println(testEquals.equals(testEquals1));}
}

7.3 String类重写了toString和equals

8.内部类

8.1 概述

在类的内部又定义了一个新的类。
分类:静态内部类,实例内部类,局部内部类。

8.2内部类示例

package com.sdnu.test01;public class Inner {static class Inner1{}class Inner2{}public void method(){class Inner3{}}
}

8.3 匿名内部类

9.数组

9.1声明

类型[] 数组名

9.2 初始化

静态初始化:

类型[] 数组名 = {122345};

动态初始化:

类型[] 数组名 = new 类型[数组长度];

9.3 main方法的String数组

在这里插入图片描述

9.4数组扩容

创建一个大的数组,然后将小数组的数据拷贝到大数组中。

package com.sdnu.javase.array;public class ArrayTest01 {public static void main(String[] args) {int[] src = {12, 23, 45};int[] dest = new int[20];System.arraycopy(src, 0, dest, 0, src.length);for(int i = 0; i < src.length; i++){System.out.println(dest[i]);}}
}

9.5 二维数组

声明和初始化

int 数组名[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

9.6Array

java.util.Arrays

相关文章:

【JavaSE】复习(进阶)

文章目录1.final关键字2.常量3.抽象类3.1概括3.2 抽象方法4. 接口4.1 接口在开发中的作用4.2类型和类型之间的关系4.3抽象类和接口的区别5.包机制和import5.1 包机制5.2 import6.访问控制权限7.Object7.1 toString()7.2 equals()7.3 String类重写了toString和equals8.内部类8.1…...

Java 主流日志工具库

日志系统 java.util.logging (JUL) JDK1.4 开始&#xff0c;通过 java.util.logging 提供日志功能。虽然是官方自带的log lib&#xff0c;JUL的使用确不广泛。 JUL从JDK1.4 才开始加入(2002年)&#xff0c;当时各种第三方log lib已经被广泛使用了JUL早期存在性能问题&#x…...

产品经理有必要考个 PMP吗?(含PMP资料)

现在基本上做产品的都有一个PMP证件&#xff0c;从结果导向来说&#xff0c;不对口不会有这么大范围的人来考&#xff0c;但是需要因地制宜&#xff0c;在公司内部里&#xff0c;标准程序并不流畅&#xff0c;产品和项目并不规范&#xff0c;关系错综复杂。 而产品经理的职能又…...

什么是原型、原型链?原型和原型链的作用

1、ES6之前&#xff0c;继承都用构造函数来实现&#xff1b;对象的继承,先申明一个对象&#xff0c;里面添加实例成员<!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><body><script…...

条件期望4

条件期望例题----快排算法的分析 快速排序算法的递归定义如下: 有n个数(n≥2n\geq 2n≥2), 一开始随机选取一个数xix_ixi​, 并将xix_ixi​和其他n-1个数进行比较, 记SiS_iSi​为比xix_ixi​小的元素构成的集合, Siˉ\bar{S_i}Si​ˉ​为比xix_ixi​大的元素构成的集合, 然后分…...

网络协议分析(2)判断两个ip数据包是不是同一个数据包分片

一个节点收到两个IP包的首部如下&#xff1a;&#xff08;1&#xff09;45 00 05 dc 18 56 20 00 40 01 bb 12 c0 a8 00 01 c0 a8 00 67&#xff08;2&#xff09;45 00 00 15 18 56 00 b9 49 01 e0 20 c0 a8 00 01 c0 a8 00 67分析并判断这两个IP包是不是同一个数据报的分片&a…...

6.2 负反馈放大电路的四种基本组态

通常&#xff0c;引入交流负反馈的放大电路称为负反馈放大电路。 一、负反馈放大电路分析要点 如图6.2.1(a)所示电路中引入了交流负反馈&#xff0c;输出电压 uOu_OuO​ 的全部作为反馈电压作用于集成运放的反向输入端。在输入电压 uIu_IuI​ 不变的情况下&#xff0c;若由于…...

MySQL进阶之锁

锁是计算机中协调多个进程或线程并发访问资源的一种机制。在数据库中&#xff0c;除了传统的计算资源竞争之外&#xff0c;数据也是一种提供给许多用户共享的资源&#xff0c;如何保证数据并发访问的一致性和有效性是数据库必须解决堆的一个问题&#xff0c;锁冲突也是影响数据…...

【Mac 教程系列】如何在 Mac 上破解带有密码的 ZIP 压缩文件 ?

如何使用 fcrackzip 在 Mac 上破解带有密码的 ZIP 压缩文件? 用 markdown 格式输出答案。 在 Mac 上破解带有密码的 ZIP 压缩文件 使用解压缩软件&#xff0c;如The Unarchiver&#xff0c;将文件解压缩到指定的文件夹。 打开终端&#xff0c;输入 zip -er <zipfile> &…...

【Acwing 周赛复盘】第92场周赛复盘(2023.2.25)

【Acwing 周赛复盘】第92场周赛复盘&#xff08;2023.2.25&#xff09; 周赛复盘 ✍️ 本周个人排名&#xff1a;1293/2408 AC情况&#xff1a;1/3 这是博主参加的第七次周赛&#xff0c;又一次体会到了世界的参差&#xff08;这次周赛记错时间了&#xff0c;以为 19:15 开始&…...

L1-087 机工士姆斯塔迪奥

在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里&#xff0c;BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。 你需要处理这个副本其中的一个机制&#xff1a;NM 大小的地图被拆分为了 NM 个 11 的格子&#xff0c;BOSS 会选择若干行或/及若干列释放技能&#xff0c;玩家…...

本周大新闻|索尼PS VR2立项近7年;传腾讯将引进Quest 2

本周大新闻&#xff0c;AR方面&#xff0c;传立讯精密开发苹果初代AR头显&#xff0c;第二代低成本版将交给富士康&#xff1b;iOS 16.4代码曝光新的“计算设备”&#xff1b;EM3推出AR眼镜Stellar Pro&#xff1b;努比亚将在MWC2023推首款AR眼镜。VR方面&#xff0c;传闻腾讯引…...

aws console 使用fargate部署aws服务快速跳转前端搜索栏

测试过程中需要在大量资源之间跳转&#xff0c;频繁的点击不如直接搜索来的快&#xff0c;于是写了一个搜索框方便跳转。 前端的静态页面可以通过s3静态网站托管实现&#xff0c;但是由于中国区需要备案的原因&#xff0c;可以使用ecs fargate部署 步骤如下&#xff1a; 编写…...

Redis实战之Redisson使用技巧详解

一、摘要什么是 Redisson&#xff1f;来自于官网上的描述内容如下&#xff01;Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的 redis 常用数据结构命令服务&#xff0c;还提供了许多分布…...

SQLAlchemy

文章目录SQLAlchemy介绍SQLAlchemy入门使用原生sql使用orm外键关系一对多关系多对多关系基于scoped_session实现线程安全简单表操作实现方案CRUDFlask 集成 sqlalchemySQLAlchemy 介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上&#xff0c;使用关系…...

【Linux学习笔记】8.Linux yum 命令和apt 命令

前言 本章介绍Linux的yum命令和apt命令。 Linux yum 命令 yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理&#xff0c;能够从指定的服务器自动下载 RPM 包并且安装&#xf…...

windows服务器实用(4)——使用IIS部署网站

windows服务器实用——IIS部署网站 如果把windows服务器作为web服务器使用&#xff0c;那么在这个服务器上部署网站是必须要做的事。在windows服务器上&#xff0c;我们一般使用IIS部署。 假设此时前端给你一个已经完成的网站让你部署在服务器上&#xff0c;别人可以在浏览器…...

Random(二)什么是伪共享?@sun.misc.Contended注解

目录1.背景简介2.伪共享问题3.问题解决4.JDK使用示例1.背景简介 我们知道&#xff0c;CPU 是不能直接访问内存的&#xff0c;数据都是从高速缓存中加载到寄存器的&#xff0c;高速缓存又有 L1&#xff0c;L2&#xff0c;L3 等层级。在这里&#xff0c;我们先简化这些复杂的层级…...

Linux解压压缩

打包tar首先我们得提一下专门用于打包文件的命令——tartar用于备份文件&#xff0c;打包多个文件或者目录&#xff0c;也可以用于还原被打包的文件假设打包目录test下的文件 tar -cvf test.tar ./test 假设打包目录test下的文件,并用gzip命令将包压缩 tar -zcvf test.tar ./te…...

JavaSe第3次笔记

1.String str "hello";字符串类型。 2.两个字符串类型相加意思是拼接&#xff0c;类似于c语言里面的strcat函数。 3.整型变成字符串类型: int a 10; String str String. valueOf(a); 4.当字符串和其他类型进行相加的时候&#xff0c;结果就是字符串。(不完全…...

非人工智能专业怎样从零开始学人工智能?

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是指让机器具有类似人类智能的能力&#xff0c;包括感知、理解、推理、学习、规划、决策、创造等多个方面。人工智能研究涉及到计算机科学、数学、物理学、心理学、哲学等多个领域&#xff0c;旨在模拟和…...

MyBatis之增、删、查、改

目录 前言 一、配置MyBatis开发环境 1.1 创建数据库和表 1.2 添加框架支持 1.3 创建目录结构 1.4 配置数据库连接 1.5 配置MyBatis中的XML文件路径 二、添加业务代码 2.1 查询数据库操作 2.1.1 添加实体类 2.1.2 添加mapper接口 2.1.3 在xml中实现mapper接口 2.1.…...

死磕Spring,什么是SPI机制,对SpringBoot自动装配有什么帮助

文章目录如果没时间看的话&#xff0c;在这里直接看总结一、Java SPI的概念和术语二、看看Java SPI是如何诞生的三、Java SPI应该如何应用四、从0开始&#xff0c;手撸一个SPI的应用实例五、SpringBoot自动装配六、Spring SPI机制与Spring Factories机制做对比七、这里是给我自…...

因果推断10--一种大规模预算约束因果森林算法(LBCF)

论文&#xff1a;A large Budget-Constrained Causal Forest Algorithm 论文&#xff1a;http://export.arxiv.org/pdf/2201.12585v2.pdf 目录 0 摘要 1 介绍 2 问题的制定 3策略评价 4 方法 4.1现有方法的局限性。 4.2提出的LBCF算法 5验证 5.1合成数据 5.2离线生…...

Linux基础命令-df显示磁盘的使用情况

文章目录 文章目录 df 命令介绍 语法格式 基本参数 参考实例 1&#xff09;以人类可读形式显示磁盘空间的使用情况 2&#xff09;显示磁盘的inode信息 3&#xff09;显示磁盘和文件系统类型 4&#xff09;指定显示文件系统 5&#xff09;显示所有磁盘空间中的内容 …...

如何使用goquery进行HTML解析以及它的源码分析和实现原理

目录 goquery 是什么 goquery 能用来干什么 goquery quick start 玩转goquery.Find() 查找多个标签 Id 选择器 Class 选择器 属性选择器 子节点选择器 内容过滤器 goquery 源码分析 图解源码 总结 goquery 简介 goquery是一款基于Go语言的HTML解析库&#xff0c;…...

【Java 数组和集合 区别及使用案例】

Java中数组和集合都是用来存储一组数据的容器&#xff0c;但是在实际使用中&#xff0c;它们有一些区别和不同的使用场景。 数组 vs 集合&#xff1a;存储方式 数组是一个固定长度的容器&#xff0c;它的长度一旦被初始化之后&#xff0c;就无法再改变了。而集合是一个动态长…...

使用pynimate制作动态排序图

大家好&#xff0c;数据可视化动画使用Python包就可以完成&#xff0c;效果如下&#xff1a;想要使用Pynimate&#xff0c;直接import一下就行&#xff1a;import pynimate as nim输入数据后&#xff0c;Pynimate将使用函数Barplot&#xff08;&#xff09;来创建条形数据动画。…...

Mysql 事务的隔离性(隔离级别)

Mysql 中的事务分为手动提交和自动提交&#xff0c;默认是自动提交&#xff0c;所以我们在Mysql每输入一条语句&#xff0c;其实就会被封装成一个事务提交给Mysql服务端。 手动提交需要先输入begin&#xff0c;表示要开始处理事务&#xff0c;然后就是常见的sql语句操作了&…...

2023年网络安全竞赛——Python渗透测试PortScan.py

端口扫描Python渗透测试:需求环境可私信博主获取 任务环境说明: 服务器场景:PYsystem0041服务器场景操作系统:未知服务器场景FTP用户名:anonymous 密码:空1. 从靶机服务器的FTP上下载PortScan.py,编辑Python程序PortScan.py,实现...