java期末复习

news2024/11/20 11:35:52

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 等。

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

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

相关文章

三级综合医院微信预约挂号系统源码,PC后台管理端+微信公众号+支付宝小程序全套源码

智慧医院预约挂号系统&#xff0c;微信医疗预约挂号小程序源码&#xff0c;实体医院预约挂号支付系统源码 本系统主要面向中大型的医疗机构&#xff0c;适用于各级公立和民营医院&#xff0c;可对接院内his、lis、pacs系统。 PC后台管理端微信公众号支付宝小程序 系统支持当日…

mac安装禅道

前提已安装&#xff1a;phpapacheMySQL mac安装 php7.1/apache-CSDN博客 安装MySQL 一、禅道下载 安装官方文档 源码包下载地址&#xff1a;禅道下载 - 禅道开源项目管理软件 。 1. 解压禅道源码包 2. 将解压后的文件复制到Apache访问目录下 &#xff08;默认路径为 /Libra…

0510_IO5

练习题&#xff1a; #include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <semaphore.h>#incl…

LED出海混战,雷曼光电“冲锋陷阵”的数智化暗线

2022年春天&#xff0c;在北京冬奥会开幕式上&#xff0c;晶莹剔透的“冰雪五环”从巨型冰块中徐徐升起&#xff0c;成为国人经典集体回忆。这个面积达134平方米、重约3吨的冰雪五环&#xff0c;是LED技术与光影艺术的完美融合。深圳LED上市公司雷曼光电参与“冰雪五环”异形屏…

车载电子电器架构 —— 应用软件开发(中)

车载电子电器架构 —— 应用软件开发(中) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

GPT+Python近红外光谱数据分析

原文链接&#xff1a;GPTPython近红外光谱数据分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247603913&idx1&sn6eb8fd6f1abcdd8160815997a13eb03d&chksmfa82172ecdf59e389a860547a238bb86c7f38ae3baa14e97c7490a52ef2a2c206f88d503a5eb&token…

推荐几款国内的AI写作工具,好用免费还能在线生成AI文案

AI写作简介&#xff1a; 在专业领域中&#xff0c;人工智能技术的进步正以前所未有的速度推动着写作行业的革新。当前&#xff0c;我们见证了生成式人工智能&#xff08;AI&#xff09;在文本产生领域的广泛应用&#xff0c;其对提升创作效率和拓展创意边界的贡献是显著的。以…

Vue3知识总结-1

前面学习一段时间的前端&#xff0c;但是没有进行过太多的练习&#xff0c;并且对于里面一些重要的知识点也没有去着重的记忆&#xff0c;所以打算在学习Vue3的时候&#xff0c;做一些笔记&#xff0c;方便后面翻看。这个笔记会对于学习一些做一些&#xff0c;而不是一个整体的…

java中的oop(一)、概念

一、三大主线 &#xff08;非官方&#xff09; 成员&#xff1a;属性、方法、构造器、&#xff08;代码块&#xff0c;内部类&#xff09;&#xff1b; 特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;——三大特征&#xff1b; 关键字&#xff1a; this、…

免费软件不一定不好用,分享5个实用小工具

​ 今天继续分享5个超实用的小工具&#xff0c;都是非常小巧精致的免费软件。 1.广告拦截与隐私保护——AdGuard ​ AdGuard是一款跨平台广告拦截和隐私保护软件&#xff0c;支持Windows、MacOS、Android和iOS系统。它能有效屏蔽不必要的广告、弹窗和跟踪&#xff0c;同时抵御…

(Mac)RocketMQ的本地安装测试(详细图示)

目录 部署服务 namesrv / broker下载解压缩运行 namesrvnohup ./bin/mqnamesrv & 启动命令详解运行 broker 测试收发消息运行自带的生产者测试类运行自带的消费者测试类 部署 Dashboard 可视化下载打包运行访问 部署服务 namesrv / broker 下载解压缩 官网下载 https://r…

会话劫持攻击就在我们身边,我们要如何防范

会话劫持攻击&#xff08;Session Hijacking&#xff09;是一种网络攻击方式&#xff0c;攻击者通过某种手段获取到用户的会话标识&#xff08;Session ID&#xff09;&#xff0c;然后使用这个会话标识冒充合法用户进行恶意操作。这种攻击方式允许攻击者以合法用户的身份访问受…

【go项目01_学习记录10】

操作数据库 1 插入数据2 显示文章2.1 修改 articlesShowHandler() 函数2.2 代码解析 3 编辑文章3.1 添加路由3.2 编辑articlesEditHandler()3.3 新建 edit 模板3.4 代码重构3.5 完善articlesUpdateHandler()3.6 测试更新3.7 封装表单验证 1 插入数据 . . . func articlesStore…

测径仪供风设备的操作和维护

关键字:测径仪供风系统,测径仪供风设备,测径仪冷却设备维护,测径仪冷却设备故障, 测径仪的供风设备包括高压鼓风机和空气过滤装置两部分。 鼓风机要求有独立的供电系统和电源开关&#xff0c;安装时应调整好风机叶轮的旋向&#xff0c;保证接通电源后鼓风机正常工作。另外&am…

Nginx rewrite项目练习

Nginx rewrite练习 1、访问ip/xcz&#xff0c;返回400状态码&#xff0c;要求用rewrite匹配/xcz a、访问/xcz返回400 b、访问/hello时正常访问xcz.html页面server {listen 192.168.99.137:80;server_name 192.168.99.137;charset utf-8;root /var/www/html;location / {root …

深度学习论文: LightGlue: Local Feature Matching at Light Speed

深度学习论文: LightGlue: Local Feature Matching at Light Speed LightGlue: Local Feature Matching at Light Speed PDF: https://arxiv.org/pdf/2306.13643 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/…

202466读书笔记|《一天一首古诗词》——借问梅花何处落,风吹一夜满关山

202466读书笔记|《一天一首古诗词》——借问梅花何处落&#xff0c;风吹一夜满关山 上册下册 《一天一首古诗词》作者李锡琴&#xff0c;蛮早前加入书架的已购买书籍&#xff0c;这次刚好有点时间&#xff0c;利用起来读完。 赏析没有细看&#xff0c;只读了诗词部分&#xff0…

YOLOv5改进 | 注意力机制 | 理解全局和局部信息的SE注意力机制

在深度学习目标检测领域&#xff0c;YOLOv5成为了备受关注的模型之一。本文给大家带来的是能够理解全局和局部信息的SE注意力机制。文章在介绍主要的原理后&#xff0c;将手把手教学如何进行模块的代码添加和修改&#xff0c;并将修改后的完整代码放在文章的最后&#xff0c;方…

多模态模型Mini-Gemini:代码模型数据均开源,MiniCPM小钢炮2.0全家桶四连发,可以在Android 手机端上运行的大模型,效果还不错

多模态模型Mini-Gemini&#xff1a;代码模型数据均开源&#xff0c;MiniCPM小钢炮2.0全家桶四连发&#xff0c;可以在Android 手机端上运行的大模型&#xff0c;效果还不错。 多模态模型Mini-Gemini&#xff1a;代码模型数据均开源 香港中文大学终身教授贾佳亚团队提出多模态模…

印象笔记使用技巧

印象笔记使用技巧 印象笔记&#xff08;Evernote&#xff09;是一款非常流行的笔记软件&#xff0c;它为用户提供了一个方便的平台来记录、整理和管理各种信息。无论是个人生活还是工作场景&#xff0c;印象笔记都可以帮助用户提高效率、整理思绪、轻松查找信息。下面是一些印象…