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

java期末复习

java

jdk jre jvm

image-20240429210213926

image-20240429210244640

.java-------->.class----jvm---->机器语言

编写源文件 编译源文件生成字节码 加载运行字节码

java语句执行顺序 顺序 选择 循环 异常处理

基本语法

方法格式

权限修饰符 返回值声明 方法名称(参数列表){方法中封装的逻辑功能;return 返回值;}

–权限修饰符

image-20240429211122988

–注释

//单行注释   /*
多行注释
*/ /**
文档注释
**/

标识符举例

image-20240429212106385

java变量

java是一个强类型语言 必须先声明类型后使用

java数据类型分两大类 基本数据类型与引用类型

image-20240429212539612

引用数据类型:

string

数组

接口

按照声明位置进行定义分为局部变量与成员变量

变量的类型转换

boolean类型不参与转换

自动类型转换

容量小的类型自动转换成容量大的类型

byte,short,int -> float -> long ->double

byte short int之间不会互相转换 三者计算时会转化成int类型

强制类型转换

容量大的类型转换成容量小的类型时需要加上强制转换符

变量的作用域

在类体内定义的变量称为成员变量 作用域是整个类

在一个方法或方法内代码块中定义的变量称为局部变量

常量

量前加一个final

变量赋值注意事项:

float a = 133f
long a = 22220202l
char c = '羊'

数组

数组初始化方式

不允许在前面的[]里写元素个数

动态两种

int[][] arr = new int[3][];
arr[0] = new int[3]int [][] arr2 = new int[3][2]
arr[0][0] = 33

静态一种

int arr4[][] = new int[][]{{1,2,3},{2,3,4}}
arr.length 得到数组长度
 

image-20240504154600252

输入输出

scanner类型

#输入
Scanner s = new Scanner(System.in);
s.nextInt();
s.nextLine();
s.nextfloat();
scanner.next();
#输出
System.out.println("XX");

system.out. print() 普通输出

​ printf()格式化输出

​ println()换行输出

类与对象

封装继承多态

我们进行一次举例

public class Student {private String username;public String getUsername{return username;}#这个函数存在而不使用直接赋值的意义就是因为username这个变量是私有的public void setUsername(String username){this.username = username;}
}class Test {public static void main(String[] args) {Student student=new Student();student.setUsername("张三");student.getUsername();System.out.println();}
}

类的实例化通过new语句进行创建

类的定义格式

[修饰符] class 类名 [extends 父类名]  [implements 接口名]{//类体 包括类的成员变量与成员方法
}

继承

基类object

没有选择继承的时候默认继承object,有很多自带方法

继承格式

public class Parent {private int age;public int getAge() {return age}public void setAge(int age) {this.age = age;}#有参public Parent(int age){this.age = age;}#无参public Parent(){}public void myprint(){system.out.println("我是父类的myprint方法");}
}class Son extents Parent{public static void main(String[]args) {Son son = new son();son.age = 3;}
}

类的重写

对相同的函数进行再次声明就可以进行重写

类的封装

将类的某些信息隐藏在内部,不允许直接访问而是提供get set方法

public class Person {private intn age;private string name;public String getName(){return name;}public int getAge(){return age;}public void setName(String name){this.name = name;}public void setAge(int age){this.age = age; }
}

构造方法 重点

构造方法定义

主要用来创建对象时 初始化对象的

总与new一起使用在创建对象的运算符中

一个类可以有 多个构造函数 可根据参数个数不同或者参数类型不同区分 即构造函数的重载

image-20240504184116949

方法的重载重写

重载

image-20240504184435692

重写

区别

image-20240504184920698

this关键字

在构造方法中指该构造器所创建的新对象

也就是对应对象的属性

也可以使用this关键字调出对象本身

例如在一个对象的setAge中调用getAge

注意:this只能在类的非静态方法中使用 静态方法与静态的代码块中不能出现this 原因 static方法在类加载时就已经存在了 但是对象在创建时才在内存中生成

super关键字

super关键字主要存在于子类方法中

用于子类调用父类的方法

例如子类重写了父类的一个方法 但是又想重新调用一次父类的方法就使用super关键字

static关键字

静态 的关键字

静态变量

静态方法

静态代码块

使用了static后的方法变成类方法 不需要new就能直接调用

final关键字

final修饰的类不能被继承

final修饰的方法不能被重写 但是可以直接用

final修饰的基本类型变量不可变 但是引用类型变量引用不可改变 但是引用对象的内容可以改变

抽象类

在class前加一个abstract来修饰

抽象方法要在子类里进行实现 不然不正确

接口

将class替换为interface即可

接口里所有定义的方法实际上都是抽象的public abstract

变量只能为public static final类型的

public abstract void add(); 等效于 void add();

抽象类与接口的区别

  1. 接口要被子类实现 抽象类要被子类继承
  2. 接口中变量全为公共静态常量 抽象类中可有普通变量
  3. 接口中全为方法的声明 抽象类中可以有方法的实现
  4. 接口中不可以有构造函数 抽象类中可以有构造函数
  5. 接口可多实现 而抽象类必须被单继承
  6. 接口中方法全为抽象方法 而抽象类中可以有非抽象方法

内存机制

存放局部变量 不可以被多个线程共享

系统自动分配

空间连续 速度快

存放对象 可以被多个线程共享

每个对象都有锁

空间不连续 速度慢 灵活

方法区

存放类的信息:代码 静态变量 字符串 常量等

可以被多个线程共享

空间不连续 速度慢 灵活

垃圾回收机制

程序员不能调用垃圾回收器 但是可以通过system.gc()建议回收

未引用的会被回收

finallize方法 每个对象都有这个方法 用来释放对象区域资源 一般不去调用

递归算法

递归头 什么时候不调用自己

递归体 什么时候调用自己

异常机制:

try catch finally catch的顺序 先小后大

声明抛出异常:throws

手动抛出异常:throw

自定义异常: 首先继承Exception 或者它的子类

容器:

Collection接口: List -》ArrayList LinkedList Vector

​ Set-》HashSet 内部使用HashMap实现

Map接口: 采用 key value存储数据

​ HashMap线程不安全 效率高

​ HashTable线程安全 效率低

Iterator接口:遍历容器中元素

泛型:

Collections: 包含排序查找的工具类

字符串比较中 == 与 equal的区别

  • ==:比较的是两个字符串内存地址(堆内存)的数值是否相等,属于数值比较;
  • equals():比较的是两个字符串的内容,属于内容比较。

多态

多态体现为一个事物的多种形态 例如 父类引用变量可以指向子类对象

isinstanceof

向上转型 将子类对象赋值给父类变量

向下转型 将父类对象赋值给子类变量

注解

也叫元数据 用于描述数据的数据

基本注解:

@Override 重写 在重写的方法前加入即可

@SuppressWarnings 压制警告 在警告内容前加入 可以让我们暂时忽略特定的警告

自定义注解

[public] @interface 注解名
{
数据类型 成员变量名()[default 初始值]
}

注解跟类一样 会被编译为 注解名.class的字节码文件

成员变量名后面的()必不可少

反射机制

一段程序在运行过程中 接受一个对象作为形参 该对象的编译时类型与运行时类型不一致 但是程序又需要调用该对象运行时的类中的方法

这就需要引用反射机制 保证在程序运行过程中

可以知道任意对象的运行时类型

可以构造任意类的对象

可以调用任意对象的属性和方法

其实就是在运行时获取对象的属性与方法,例如对象.getClass

内部类

将一个类作为成员放在另一个类或者方法的内部

嵌套类

内部类可以分为 非静态内部类和静态内部类

非静态内部类 是指 在非静态类的方法内访问某个变量时 先找局部变量 再找内部类的属性 最后找外部类的属性

如果局部变量 内部类属性 外部类三者名字相同

静态内部类是用static修饰的内部类都称为静态内部类

静态内部类是一个普通类 可以包含静态成员 也可以包含非静态成员

静态内部类不能访问外部类的实例成员 只能访问外部类的类成员

lambda表达式

当接口中只有一个抽象方法 匿名内部类的语法过于频繁

这种接口叫做函数式接口

表达式 : (形参列表)->{代码块}

形参列表:如果形参列表中只有一个参数 形参列表的圆括号也可以忽略

异常处理

基本语法

try{执行语句
}catch (ExceptionType e) {异常处理
}finally{无论是否发生异常都会执行的语句
}

创建Exception

通过继承Exception来创建异常

public class CustomException extends Exception{public CustomException(String message){super(message)}
}

throw/throws

用于手动抛出异常 需要使用

public void processAge(int age) {if (age < 0) {throw new IllegalArgumentException("Age cannot be negative");}// 其他处理逻辑
}

throws

public String readFile(String fileName) throws IOException {// 读取文件内容的逻辑
}

输入输出操作

InputStream

InputStream是用于从各种源(如文件、网络连接等)读取字节流的抽象类。它定义了一系列用于读取字节的方法。你可以使用InputStream来读取二进制数据,比如图片、音频或视频文件。

OutputStream是用于向各种目标(如文件、网络连接等)写入字节流的抽象类。它定义了一系列用于写入字节的方法。你可以使用OutputStream来写入二进制数据,比如将数据写入文件或通过网络发送。

Reader是用于从各种源(如文件、网络连接等)读取字符流的抽象类。它定义了一系列用于读取字符的方法。你可以使用Reader来读取文本数据,比如读取文本文件中的内容。

Writer是用于向各种目标(如文件、网络连接等)写入字符流的抽象类。它定义了一系列用于写入字符的方法。你可以使用Writer来写入文本数据,比如将数据写入文本文件。

// 使用FileReader读取文件
FileReader fileReader = new FileReader("file.txt");
int data = fileReader.read(); // 读取一个字符
while (data != -1) {System.out.print((char)data);data = fileReader.read();
}
fileReader.close();// 使用FileWriter写入文件
FileWriter fileWriter = new FileWriter("file.txt");
fileWriter.write("Hello, world!");
fileWriter.close();

System.in、System.out 和 System.err

System.inSystem.outSystem.err是Java中的三个标准I/O流。

  • System.in:标准输入流,通常对应于键盘输入。你可以使用它来从控制台读取用户的输入。
  • System.out:标准输出流,通常对应于控制台输出。你可以使用它向控制台输出信息。
  • System.err:标准错误流,也通常对应于控制台输出。与System.out不同的是,它主要用于输出错误信息。

泛型

java 中泛型标记符:

  • E - Element (在集合中使用,因为集合中存放的是元素)
  • T - Type(Java 类)
  • K - Key(键)
  • V - Value(值)
  • N - Number(数值类型)
  • - 表示不确定的 java 类型

Collection <E>

Collection 是 Java 集合框架中所有集合类的根接口。它代表了一组对象,这些对象通常称为元素。Collection 接口的主要特点包括:

  • 存储一组对象:Collection 是一个容器,可以存储多个对象,这些对象可以是任何类型,包括基本类型的封装类、自定义对象等。
  • 无序性:Collection 不保证元素的顺序,即它们不一定按照插入的顺序进行存储和访问。
  • 允许重复元素:Collection 允许存储重复的元素,即相同的对象可以被添加多次。
  • 常见实现类:Java 中常见的 Collection 实现类包括 List、Set 和 Queue 接口的各种实现类,如 ArrayList、LinkedList、HashSet 等。

Map<K,V>

Map 接口代表了一种映射关系,它将键映射到值。Map 中的键是唯一的,而值则可以重复。Map 接口的主要特点包括:

  • 键值对存储:Map 存储的是键值对,每个键都映射到一个值。通过键可以快速查找对应的值。
  • 键的唯一性:Map 中的键是唯一的,每个键最多只能与一个值关联。
  • 值的重复性:Map 中的值可以重复,即不同的键可以映射到相同的值。
  • 常见实现类:Java 中常见的 Map 实现类包括 HashMap、TreeMap、LinkedHashMap 等。

相关文章:

java期末复习

java jdk jre jvm .java-------->.class----jvm---->机器语言 编写源文件 编译源文件生成字节码 加载运行字节码 java语句执行顺序 顺序 选择 循环 异常处理 基本语法 方法格式 权限修饰符 返回值声明 方法名称(参数列表){方法中封装的逻辑功能;return 返回值;}–权…...

让新手变中手的ChatGPT 使用方法

让新手变中手的ChatGPT 使用方法 已经要一年了,没想到这篇还是一样有用。看到许多依然是一句话就要问出结果的教学,就知道AI 进步很快,但人的学习速度还需要更多时间。 以下为去年原版内容加上新的两招更新,希望帮助你使用ChatGPT 更好用,当未来文字可直接生成影像时,你…...

桥接模式类图与代码

欲开发一个绘图软件&#xff0c;要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例&#xff0c;对应的绘图程序如表 7.7 所示。 根据绘图软件的扩展性要求&#xff0c;该绘图软件将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况&#xff0c;现采用桥接…...

Oracle count的优化-避免全表扫描

Oracle count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单&#xff0c;但很有玄机&#xff01;对这句话运行的理解&#xff0c;反映了你对数据库的理解深度&#xff01; 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table t1 purge…...

leetcode17. 电话号码的字母组合

题目描述&#xff1a; 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "…...

如何设计与管理一个前端项目

目录 前端项目设计 前端项目搭建 洞察项目瓶颈 方案调研与选型对比 前端项目管理 合理的分工排期 风险把控 及时反馈与复盘 结束语 如果说基础知识的掌握是起跑线&#xff0c;那么使大家之间拉开差距的更多是前端项目开发经验和技能。对于一个项目来说&#xff0c;从框…...

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-11 0…...

用云手机打造海外社媒矩阵

在全球经济一体化的大背景下&#xff0c;中国出海企业及B2B外贸公司正将海外社交媒体营销作为重要的市场拓展策略。为更好地触及不同受众群体&#xff0c;构建跨平台的社媒矩阵已成为企业营销的关键步骤。本文将探讨如何利用云手机技术&#xff0c;高效管理并运营多个海外社交媒…...

第 8 章 机器人平台设计之底盘实现(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.1 底盘实现_概述 1.ros_arduino_bridge 简介 该功能包包含Arduino库和用来控制Arduino的ROS驱动包&…...

✔ ★Java项目——设计一个消息队列(五)【虚拟主机设计】

虚拟主机设计 创建 VirtualHost实现构造⽅法和 getter创建交换机删除交换机创建队列删除队列创建绑定删除绑定发布消息 ★路由规则1) 实现 route ⽅法2) 实现 checkRoutingKeyValid3) 实现 checkBindingKeyValid4) 实现 routeTopic5) 匹配规则测试⽤例6) 测试 Router 订阅消息1…...

ntfs文件系统的优势 NTFS文件系统的特性有哪些 ntfs和fat32有什么区别 苹果电脑怎么管理硬盘

对于数码科技宅在新购得磁盘之后&#xff0c;出于某种原因会在新的磁盘安装操作系统。在安装操作系统时&#xff0c;首先要对磁盘进行分区和格式化&#xff0c;而在此过程中&#xff0c;操作者们需要选择文件系统。文件系统也决定了之后操作的流程程度&#xff0c;一般文件系统…...

Python Web框架Django项目开发实战:创建在线学习应用

注意&#xff1a;本文的下载教程&#xff0c;与以下文章的思路有相同点&#xff0c;也有不同点&#xff0c;最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程&#xff1a;Python项目开发Django实战-创建在线学习应用-编程案例解析实例详解课程教程.pdf 在当今数字化教…...

用得助全媒体呼叫中心,让AI落到实处帮品牌做营销

怎么让人工智能落到实处的帮助到我们&#xff1f;我们今天来讲讲中关村科金得助全媒体呼叫中心是怎么让AI帮品牌。 这次聊的案例是知名的护肤品牌&#xff0c;该品牌在中国功能性护肤品市场占有率达到20.5%&#xff0c;这么高的市场占有率客户的咨询量也是非常庞大的&#xff0…...

【吃透Java手写】2-Spring(下)-AOP-事务及传播原理

【吃透Java手写】Spring&#xff08;下&#xff09;AOP-事务及传播原理 6 AOP模拟实现6.1 AOP工作流程6.2 定义dao接口与实现类6.3 初始化后逻辑6.4 原生Spring的方法6.4.1 实现类6.4.2 定义通知类&#xff0c;定义切入点表达式、配置切面6.4.3 在配置类中进行Spring注解包扫描…...

Spring原理分析--获取Environment资源对象

1.使用getEnvironment()获取环境信息 ApplicationContext接口继承了EnvironmentCapable接口&#xff0c;可以通过getEnvironment()获取Environment配置信息&#xff0c;例如&#xff1a; SpringBootApplication public class A01 {public static void main(String[] args) th…...

Android GPU渲染SurfaceFlinger合成RenderThread的dequeueBuffer/queueBuffer与fence机制(2)

Android GPU渲染SurfaceFlinger合成RenderThread的dequeueBuffer/queueBuffer与fence机制&#xff08;2&#xff09; 计算fps帧率 用 adb shell dumpsys SurfaceFlinger --list 查询当前的SurfaceView&#xff0c;然后有好多行&#xff0c;再把要查询的行内容完整的传给 ad…...

人民币数字和中文汉字转换

在PHP中&#xff0c;将人民币的中文汉字金额转换为数字&#xff0c;或者将数字转换为人民币的中文汉字金额&#xff0c;通常需要自定义一些函数来实现这一转换过程。下面分别给出这两个转换的示例代码。 数字转人民币中文汉字 function numberToChinese($num) { $cnNums arr…...

07_Flutter使用NestedScrollView+TabBarView滚动位置共享问题修复

07_Flutter使用NestedScrollViewTabBarView滚动位置共享问题修复 一.案发现场 可以看到&#xff0c;上图中三个列表的滑动位置共享了&#xff0c;滑动其中一个列表&#xff0c;会影响到另外两个&#xff0c;这显然不符合要求&#xff0c;先来看下布局&#xff0c;再说明产生这个…...

Java解决垂直鉴权问题(对垂直权限进行校验)

Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09; 文章目录 Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09;前言一、垂直鉴权是什么&#xff1f;二、实现过程1.新建接口权限菜单映射表2.项目初始化时加载接口菜单映射关系3.自定义过滤器拦截…...

【MySQL工具】pt-heartbeat

功能 pt-heartbeat - 监控 MySQL 复制延迟。 用法 pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop pt-heartbeat 用于测量 MySQL 或 PostgreSQL 服务器上的复制延迟。您可以使用它来更新主服务器或监控从服务器。如果可能&#xff0c;MySQL 连接选项将从您…...

实现vant的年月日时分秒组件

方法&#xff1a;van-datetime-picker&#xff08;type&#xff1a;datetime&#xff09;和 van-picker结合实现。 <template><div class"datetimesec-picker"><van-datetime-pickerref"timePickerRef"type"datetime" //年月日时…...

typescript 命名空间、装饰器

1、命名空间 命名空间&#xff1a;在代码量较大的情况下&#xff0c;为了避免各种变量命名的冲突&#xff0c;可将相似功能的函数、类、接口等放置到命名空间内。同Java的包.Net的命名空间一样&#xff0c;typescript 的命名空间可以将代码包裹起来&#xff0c;只对外暴露需要在…...

GPT问答SAP BW

以下回答由GPT-3.5回答,仅供参考. 这个AI工具超好用&#xff0c;每天都有免费额度&#xff0c;写文章、总结长视频、画图等&#xff0c;都几秒搞定&#xff01;快去下载Sider Chrome或Edge插件&#xff0c;薅羊毛&#xff01; https://sider.ai/invited?c43b289bf2616575daecf…...

使用zdppy_amauth开发激活用户接口

服务端代码&#xff1a; 1、创建数据库连接对象2、初始化数据库3、声明一个上下文4、挂载用户相关的路由&#xff0c;这里主要由 用户登录接口用户注册注册获取用户列表接口激活指定用户接口 5、启动服务 import mcrud import api import amauth import env import contextli…...

c++ memset 指针示例

目录 C 传一个float指针&#xff0c;在函数内部修改指针的值 c memset 指针示例 C 传一个float指针&#xff0c;在函数内部修改指针的值 #include <iostream>// 定义一个函数&#xff0c;它接受一个指向float的指针 void modifyValue(float* ptr) {// 通过解引用指针来…...

24考研双非上岸武汉理工大学电子信息专硕,855考研经验

目录 一、考研择校经验 二、武理考研初试经验 三、武理考研复试经验 一、考研择校经验 我建议学弟学妹们确定院校时没必要一上来就说我一定要考某个院校。其实考哪个学校是要在考研备考的过程中慢慢探索&#xff0c;慢慢研究的&#xff0c;不过最晚9月初一定要确定院校了&a…...

使用KubeKey 快速交付k8s v1.28.8集群

文章目录 服务器配置使用kubekey部署k8s1. 操作系统基础配置2. 安装部署 K8s2.1 下载 KubeKey2.2 创建 K8s 集群部署配置文件 3. 验证 K8s 集群3.1 验证集群状态 4. 部署测试资源5.验证服务 服务器配置 主机名IPCPU内存系统盘数据盘用途vm-16-11-ubuntu192.168.9.131128256Gi5…...

nginx--压缩https证书favicon.iconginx隐藏版本号 去掉nginxopenSSL

压缩功能 简介 Nginx⽀持对指定类型的⽂件进行压缩然后再传输给客户端&#xff0c;而且压缩还可以设置压缩比例&#xff0c;压缩后的文件大小将比源文件显著变小&#xff0c;这样有助于降低出口带宽的利用率&#xff0c;降低企业的IT支出&#xff0c;不过会占用相应的CPU资源…...

通俗的理解网关的概念的用途(四):什么是网关设备?(网络层面)

任何一台Windows XP操作系统之后的个人电脑、Linux操作系统电脑都可以简单的设置&#xff0c;就可以成为一台具备“网关”性质的设备&#xff0c;因为它们都直接内置了其中的实现程序。MacOS有没有就不知道&#xff0c;因为没用过。 简单的理解&#xff0c;就是运行了具备第二…...

Spring JdbcTemplate实现自定义动态sql拼接功能

需求描述&#xff1a; sql 需要能满足支持动态拼接&#xff0c;包含 查询字段、查询表、关联表、查询条件、关联表的查询条件、排序、分组、去重等 实现步骤&#xff1a; 1&#xff0c;创建表及导入测试数据 CREATE TABLE YES_DEV.T11 (ID BINARY_BIGINT NOT NULL,NAME VARCH…...