07 2022 档案
发表于 2022-07-21 09:03阅读:104评论:0推荐:0
摘要:常用的函数式接口-Predicate接口-默认方法and 逻辑表达式:可以连接多个判断条件 &&:与运算符,有false则false ||:或运算符,有true则true !:非(取反)运算符:非真则假,非假则真 常用的函数式接口-Predicate接口-默认方法or&negate方法 or def
阅读全文 »
发表于 2022-07-21 08:59阅读:38评论:0推荐:0
摘要:常用的函数式接口-Consumer接口练习-字符串拼接输出 练习: 字符串数组当中存有多条信息,请按照格式“姓名:Xx。性别: Xx。”的格式将信息打印出来。 要求将打印姓名的动作作为第一个consumer接口的Lambda实例, 将打印性别的动作作为第二个consumer接口的Lambda实例,
阅读全文 »
发表于 2022-07-21 08:56阅读:121评论:0推荐:0
摘要:常用的函数式接口-Consumer接口 java.util.function.Consumer<T>接口则正好与Supplier接口相反 它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。 Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据 Co
阅读全文 »
发表于 2022-07-21 08:54阅读:32评论:0推荐:0
摘要:常用的函数式接口-Supplier接口 常用的函数式接口 java.util.function.Supplier<T>接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。 Supplier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会
阅读全文 »
发表于 2022-07-21 08:50阅读:19评论:0推荐:0
摘要:函数式接口作为方法的参数案例 函数式接口作为方法的返回值类型案 如果一个方法的返回值类型是一个函数式接口,那么就可以直接返回一个Lambda表达式。 当需要通过一个方法来获取一个java.util.Comparator接口类型的对象作为排序器时,就可以调该方法获取。 搜索 复制
阅读全文 »
发表于 2022-07-21 08:48阅读:43评论:0推荐:0
摘要:性能浪费的日志案例 注意: 日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。 一种典型的场景就是对参数进行有条件使用,例如对日志消息进行拼接后,在满足条件的情况下进行打印输出 日志案例 发现以下代码存在的一些性能浪费的问题 调用showLog方法,传递的第二个参数是一
阅读全文 »
发表于 2022-07-21 08:45阅读:196评论:0推荐:0
摘要:函数式接口的概念&函数式接口的定义 函数式接口在java中是指:有且仅有一个抽象方法的接口 函数式接口,即适用于函数式编程场景的接口,而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口,只有确保接口中有且仅有一个抽象方法,java中的Lambda才能顺利
阅读全文 »
发表于 2022-07-18 08:54阅读:45评论:0推荐:0
摘要:文件上传案例阻塞问题 在客户端加上shutdownOutput即可 解决:上传完文件,给服务器写一个结束标记 void shutdownOutput()禁用此套接字的输出流。 对于TC套接字,任何以前写入的数据都将被发送,并且后跟TCP的正常连接终止序列。 socket.shutdownOutput
阅读全文 »
发表于 2022-07-18 08:49阅读:24评论:0推荐:0
摘要:综合案例文件上传案例的客户端 文件上传案例的客户端:读取本地文件,上传到服务器,读取服务器回写的数据 明确: 数据源:c:ll1.jpg 目的地: 服务器 实现步骤: 1.创建一个本地字节输入流FileInputStream对象,构造方法中绑定要读取的数据源 2.创建一个客户端Socket对象,构造
阅读全文 »
发表于 2022-07-13 14:22阅读:42评论:0推荐:0
摘要:TCP通信的服务器代码实现 TCP通信的服务器端:接收客户端的请求,读取客户端发送的数据,给客户端回写数据表示服务器的类: java.net.ServerSocket:此类实现服务器套接字 构造方法: ServerSocket(int port)创建绑定到特定端口的服务器套接字 服务器端必须明确一件
阅读全文 »
发表于 2022-07-13 10:38阅读:121评论:0推荐:0
摘要:TCP通信的概述(下) TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输 TCP通信能实现两台计算机之间的数据交互,通信的两端
阅读全文 »
发表于 2022-07-13 10:34阅读:362评论:0推荐:0
摘要:端口号 端口号作用一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等 这些服务完全可以通过1个IP地址来实现。 那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。 实际上是通过“IP地址+端口号”来区 分不同的服
阅读全文 »
发表于 2022-07-13 08:49阅读:194评论:0推荐:0
摘要:网络通信协议分类 通信的协议还是比较复杂的,java.net 包中包含的类和接口,它们提供低层次的通信细节。我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。 java.net 包中提供了两种常见的网络协议的支持: UDP:用户数据报协议(User Datagram Prot
阅读全文 »
发表于 2022-07-13 08:43阅读:102评论:0推荐:0
摘要:软件结构 C/S结构全称为Client/Server结构。是指客户端和服务器结构,常见程序有QQ,迅雷等软件。 B/S结构 全称为Browser/Server结构,是指浏览器和服务器结构,常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持网络编程,就是在一定的协议下,
阅读全文 »
发表于 2022-07-12 13:33阅读:37评论:0推荐:0
摘要:练习序列化集合 1、将存有多个自定义对象的集合序列化操作,保存到list.txt文件中。2、反序列化list.txt ,并遍历集合,打印对象信息。 案例分析1、定义一个存储Person对象的ArrayList集合2、往ArrayList集合中存储Person对象3、创建一个序列化流ObjectOut
阅读全文 »
发表于 2022-07-12 13:25阅读:65评论:0推荐:0
摘要:transient关键字瞬态关键字 static关键字:静态关键字静态优先于非静态加载到内存中(静态优先于对象进入到内存中) 被static 修饰的成员变量不能被序列化,序列化的都是对象 private static int age;oos.writeObject(new Person(“小美女”,
阅读全文 »
发表于 2022-07-12 13:17阅读:47评论:0推荐:0
摘要:对象的序列化流--ObjectOutPutStream java.io.ObjectOutputStream extends OutputStream ObjectOutputStream:对象的序列化流 作用:把对象以流的方式写入到文件中保存 构造方法: ObjectOutputStream(Ou
阅读全文 »
发表于 2022-07-12 13:14阅读:17评论:0推荐:0
摘要:练习--转换文案件编码 1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBK2.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-83.使用InputStreamReader对象中的方法read读取文件4.使用
阅读全文 »
发表于 2022-07-12 13:12阅读:92评论:0推荐:0
摘要:OutPutStreamWriter介绍&代码实现 java.io.OutputStreamWriter extends Writer OutputStreamWriter: 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。(编码:把能看懂的变成看不懂) 继续自
阅读全文 »
发表于 2022-07-12 13:09阅读:105评论:0推荐:0
摘要:编码引出的问题_FileReader读取GBK格式的文件 FileReader可以读取IDE默认编码格式(UTF-8)的文件FileReader读取系统默认编码(中文GBK)会产生乱码��� 转换流的原理 搜索 复制
阅读全文 »
发表于 2022-07-12 13:07阅读:34评论:0推荐:0
摘要:练习对文本的内容进行排序 练习: 对文本的内容进行排序 按照(1,2,3....)顺序排序 分析: 1.创建一个HashMap集合对象,可以:存储每行文本的序号(1,2,3,..);value:存储每行的文本 2.创建字符缓冲输入流对象,构造方法中绑定字符输入流 3.创建字符缓冲输出流对象,构造方法
阅读全文 »
发表于 2022-07-09 14:03阅读:67评论:0推荐:0
摘要:BufferedWriter--字符缓冲输出流 java.io.BufferedWriter extends writerBufferedWriter:字符缓冲输出流继承自父类的共性成员方法: 1、void write(int c):写单个字符 2、void write(char[] cbuf):写
阅读全文 »
发表于 2022-07-09 13:58阅读:26评论:0推荐:0
摘要:BufferedInputStream--字节缓冲输入流 缓冲流的效率测试--复制文件 文件复制练习:一读一写 明确: 数据源: c:\\1.jpg 数据的目的地: d:\\1.jpg 文件复制的步骤: 1.创建字节缓冲输入流对象,构造方法中传递字节输入流 2.创建字节缓冲输出流对象,构造方法中传递
阅读全文 »
发表于 2022-07-09 13:53阅读:76评论:0推荐:0
摘要:缓冲流的原理 缓冲流,也叫高效流,是对4个基本的 Filexxx流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流: BufferedInputStream , Bufferedoutputstream 字符缓冲流: BufferedReader, Bufferedwriter缓冲流的基本原理
阅读全文 »
发表于 2022-07-09 13:45阅读:79评论:0推荐:0
摘要:Properties集合中的方法store void store(OutputStream out,String comments)void store(Writer writer,String comments)参数: OutputStream out:字节输出流,不能写入中文 Writer wr
阅读全文 »
发表于 2022-07-09 13:24阅读:14评论:0推荐:0
摘要:JDK7和JDK9流中异常的处理 JDK7 JDK7的新特性 在try的后边可以增加一个(),在括号中可以定义流对象 那么这个流对象的作用域就在try中有效 try中的代码执行完毕,会自动把流对象释放,不用写finally 格式: try(定义流对象;定义流对象....){ 可能会产出异常的代码 }
阅读全文 »
发表于 2022-07-09 13:18阅读:31评论:0推荐:0
摘要:字符输出流的续写和换行 使用try--catch--finally处理流中的异常 Java通过面向对象的方法来处理异常。 在一个方法的运行过程中,如果发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应代码来处理这一异常。 我们把生产例外对象并把它提交给运行时系统
阅读全文 »
发表于 2022-07-09 13:15阅读:51评论:0推荐:0
摘要:flush方法和close方法的区别 flush会输出缓冲区内容,流可以正常使用。close会输出缓冲区内容并且关闭流。(但是close中是否直接调用flush,甚至是否输出缓冲区内容都需要看具体实现) 字符输出流写数据的其他方法 void write(char[] cbuf)写入字符数组 abst
阅读全文 »
发表于 2022-07-09 13:10阅读:207评论:0推荐:0
摘要:字符输出流Write类&FileWrite类介绍 java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性的成员方法: - void write(int c) 写入单个字符。 - void write(char[] cbuf)写入字符数组。 - abstract
阅读全文 »
发表于 2022-07-09 13:07阅读:73评论:0推荐:0
摘要:字符输入流--Reader类&FileReader类介绍 java.io.Reader:字符输入流,是字符输入流的最顶层的父类,定义了一些共性的成员方法,是一个抽象类 共性的成员方法: int read() 读取单个字符并返回。 int read(char[] cbuf)一次读取多个字符,将字符读入
阅读全文 »
发表于 2022-07-09 10:06阅读:16评论:0推荐:0
摘要:练习--文件复制 使用字节流读取中文的问题 搜索 复制
阅读全文 »
发表于 2022-07-09 10:04阅读:24评论:0推荐:0
摘要:字节输入流一次读取一个字节的原理 字节输入流一次读取多个字节 String类的构造 String(byte[] bytes) :把字节数组转换为字符串 String(byte[] bytes,int offset,int length) 把字节数组的一部分转换为字符串 offset:数组的开始索引
阅读全文 »
发表于 2022-07-09 09:43阅读:57评论:0推荐:0
摘要:字节输入流_InputStream类&FilelnputStream类介绍 java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类。 定义了所有子类共性的方法: int read()从输入流中读取数据的下一个字节。 int read(byte[] b) 从输入流中
阅读全文 »
发表于 2022-07-09 09:39阅读:28评论:0推荐:0
摘要:字节输出流写多个字节的方法 字节输出流的续写和换行 FileOutputStream(String name,boolean append)创建一个向具有指定name 的文件中写入数据的输出文件流 FileOutputStream(File file,boolean append)创建一个向指定Fi
阅读全文 »
发表于 2022-07-09 09:36阅读:169评论:0推荐:0
摘要:字节输入流写入数据到文件 写入数据的原理(内存-->硬盘) java程序-->JVM(java虚拟机)-->OS(操作系统)-->OS调用写数据的方法-->把数据写入到文件中 字节输出流的使用步骤(重点): 1.创建一个FileOutputStream对象,构造方法中传递写入数据的目的地 2.调用F
阅读全文 »
发表于 2022-07-08 19:37阅读:31评论:0推荐:0
摘要:一切皆为字节 一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。 在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。 字节输出流_OutputStream类&FileOut
阅读全文 »
发表于 2022-07-08 19:36阅读:58评论:0推荐:0
摘要:FileNameFilter过滤器的使用 我们可以使用过滤器来实现 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器 File[] listFiles(FileFilter filter) java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器
阅读全文 »
发表于 2022-07-08 19:32阅读:12评论:0推荐:0
摘要:综合案例文件搜索 FileFilter过滤器的原理和使用 搜索 复制
阅读全文 »
发表于 2022-07-08 19:26阅读:28评论:0推荐:0
摘要:练习使用递归计算阶乘 练习递归带引多级目录 搜索 复制
阅读全文 »
发表于 2022-07-08 19:18阅读:70评论:0推荐:0
摘要:递归概念&分类&注意事项 递归:方法自己调用自己- 递归的分类:- 递归分为两种,直接递归和间接递归。- 直接递归称为方法自身调用自己。- 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。- 注意事项:- 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。- 在递归
阅读全文 »
发表于 2022-07-08 14:40阅读:30评论:0推荐:0
摘要:File类创建删除功能的方法 public boolean createNewFile() :当且仅当具有该名称的文件尚未存在时,创建一个新的空文件。public boolean delete() :删除此抽象路径名表示的文件或目录。public boolean mkdir() :创建此抽象路径名指
阅读全文 »
发表于 2022-07-08 14:30阅读:30评论:0推荐:0
摘要:File类获取功能的方法 File类判断功能的方法 File判断功能的方法:boolean exists(); 此file表示的文件或目录是否实际存在boolean isDirector();此file表示的是否为目录boolean isFile();此file表示的是否为文件 搜索 复制
阅读全文 »
发表于 2022-07-08 13:45阅读:98评论:0推荐:0
摘要:绝对路径和相对路径 路径: 绝对路径:是一个完整的路径 以盘符开始的路径 (D:\\demo.txt) 相对路径:是一个简化的路径 相对指的事相对于当前项目的根目录 如果使用当前项目的根目录,路径可以简化书写 注意: 路径是不区分大小写 路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字
阅读全文 »
发表于 2022-07-08 13:41阅读:24评论:0推荐:0
摘要:File的概述 java.io.FiLe类 文件和目录路径名的抽象表示形式。 java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用FiLe类对文件和文件夹进行操作 我们可以使用File类的方法 创建一个文件/文件夹 删除文件/文件夹 获取文件/文件夹 判断文件/文件夹是否存在
阅读全文 »
发表于 2022-07-08 13:39阅读:23评论:0推荐:0
摘要:Lambda表达式有参数有返回值的练习(自定义接口) Lambda省略模式&使用前提 Lambda表达式:是可推导,可以省略 凡是根据上下文推导出来的内容,都可以省略书写可以省略的内容: 1.(参数列表):括号中参数列表的数据类型,可以省略不写 2.(参数列表):括号中的参数如果只有一个,那么类型和
阅读全文 »
发表于 2022-07-08 13:19阅读:18评论:0推荐:0
摘要:Lambda表达式的无参数无返回值练习 Lambda表达式的有参数有返回值练习 搜索 复制
阅读全文 »
发表于 2022-07-08 13:15阅读:15评论:0推荐:0
摘要:编程思想转换&体验Lambda的更优写法 我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而不得不创建一个对象。我们真正希望做的事情是︰ 将run方法体内的l弋码传递给Thread类知晓。 传递一段代码——这才是我们真正的目的。而创建对象只是受限于面向对象语法而不得不采取的一种手段方
阅读全文 »
发表于 2022-07-08 13:12阅读:25评论:0推荐:0
摘要:函数式编程思想概述 在数学中,函数就是有输入量、输出量的一套计算方案,也就是"拿什么东西做什么事情"”。相对而言,面向对象过分强调"必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法――强调做什么,而不是以什么形式做。 面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调
阅读全文 »
发表于 2022-07-08 13:08阅读:21评论:0推荐:0
摘要:线程池的概念和原理 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时闻。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 线程池∶其实就是一个容纳多个线程的
阅读全文 »
发表于 2022-07-08 11:09阅读:12评论:0推荐:0
摘要:等待唤醒机制代码实现-包子类&包子铺类 资源类: 包子类设置包子的属性 皮 陷包子的状态:有true,没有false 包子类 包子铺 吃货类&测试类 吃货类 测试类 搜索 复制
阅读全文 »
发表于 2022-07-08 11:06阅读:33评论:0推荐:0
摘要:等待唤醒机制概述 什么是等待唤醒机制: 这是多个线程间的一种协作机制。谈到线程我们经常想到的是线程间的竞争(race),比如去争夺锁,但这并不是 故事的全部,线程间也会有协作机制。就好比在公司里你和你的同事们,你们可能存在在晋升时的竞争, 但更多时 候你们更多是一起合作以完成某些任务。 就是在一个线
阅读全文 »
发表于 2022-07-08 11:05阅读:20评论:0推荐:0
摘要:Object类中wait带参方法和notifyAll方法 进入到Timewaiting(计时等待)有两种方式 1.使用sLeep(long m)方法,在毫秒值结束之后,线程睡醒进入到Runnable/Blocked状态 2.使用wait(long m)方法, wait方法如果在毫秒值结束之后,还没有
阅读全文 »
发表于 2022-07-08 11:03阅读:27评论:0推荐:0
摘要:等待唤醒案例分析 等待唤醒案例实现 等待唤醒案例:线程之间的通信 创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到wAITING状态(无限等待) 创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子 注意:
阅读全文 »
发表于 2022-07-08 11:01阅读:120评论:0推荐:0
摘要:解决线程安全问题Lock锁 java.util.concurrent.locks.Lock`机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作, 同步代码块/同步方法具有的功能Lock都有,除此之外更强大,更体现面向对象。 Lock锁也称同步锁,加锁与释放锁方法
阅读全文 »
发表于 2022-07-08 10:41阅读:121评论:0推荐:0
摘要:解决线程安全问题同步方法 解决线程安全问题的一种方案:使用同步代码块格式: synchronized(锁对象){ 可能会出现线程安全问题的代码(访问了共享数据的代码) } 注意: 1.通过代码块中的锁对象,可以使用任意的对象 2.但是必须保证多个线程使用的锁对象是同一个 3.锁对象作用: 把同步代码
阅读全文 »
发表于 2022-07-07 19:15阅读:15评论:0推荐:0
摘要:解决线程安全问题同步代码块 当我们使用多个线程访问同一资源的时候,且多个线程中对资源有写的操作,就容易出现线程安全问题。 要解决上述多线程并发访问一个资源的安全性问题:也就是解决重复票与不存在票问题,Java中提供了同步机制(synchronized)来解决。 同步技术的原理 搜索 复制
阅读全文 »
发表于 2022-07-07 19:13阅读:18评论:0推荐:0
摘要:线程安全问题的代码实现 线程安全问题产生的原理 搜索 复制
阅读全文 »
发表于 2022-07-07 19:06阅读:22评论:0推荐:0
摘要:匿名内部类方式实现线程的创建 匿名内部类: 把子类继承父类,重写父类的方法,创建子类对象合一步完成 把实现实现接口,重写接口中的方法,创建实现类对象合成一步完成 匿名内部类的最终产物:子类/实现类对象,而这个类没有名字 格式: new 父类/接口(){重写父类或者接口中的方法} 线程安全问题的概述
阅读全文 »
发表于 2022-07-07 16:14阅读:16评论:0推荐:0
摘要:创建多线程程序的第二种方式实现Runnable接口 实现步骤: 1.创建一个Runnable 接口的实现类。 2.在实现类中重写runnable接口的run方法,设置线程任务。 3.创建一个runnable接口的实现对象 4.创建Thread类对象,构造方法中传递Runnable接口的实现类对象。
阅读全文 »
发表于 2022-07-07 16:10阅读:216评论:0推荐:0
摘要:Thread类的常用方法设置线程名称的方法 getname获取名称。 设置线程的名称: 1.使用Thread类中的方法setname(名字) void setname(String name)改变线程名称,使之与参数的name相同 2.创建一个带参数的构造方法,参数传递线程的名称,调用父类的带参构造
阅读全文 »
发表于 2022-07-07 15:43阅读:39评论:0推荐:0
摘要:多线程原理多线程内存图解 Thread类的常用方法获取线程名称的方法 获取线程的名称: 1.使用thread类中的方法getname() String getname()返回该线程的名称。 2.可以获取到当前正在执行的线程,使用线程中的getname()获取线程的名称 static thread c
阅读全文 »
发表于 2022-07-07 15:37阅读:19评论:0推荐:0
摘要:创建多线程程序的第一种方式创建Thread类的子类 java.Lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类 实现步骤: 1.创建一个Thread类的子类 2.在Thread类的子类中重写Thread类中的run方法,设器线程任务(开启线程要做什么?) 3
阅读全文 »
发表于 2022-07-07 15:31阅读:18评论:0推荐:0
摘要:线程调度 分时调度 所有线程轮流使用CPU 的使用权,平均分配每个线程占用CPU 的时间。 抢占式调度 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。 主线程 Java使用java.lang.Thread类代表线程,所有的线程对象
阅读全文 »
发表于 2022-07-07 15:26阅读:36评论:0推荐:0
摘要:进程概念 进程︰是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。 线程∶线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一
阅读全文 »
发表于 2022-07-07 15:23阅读:13评论:0推荐:0
摘要:自定义异常类的练习 模拟用户注册异常,如果用户名已经存在,则抛出异常,并提示。分析:1.使用数组保存注册过的用户名(数据库)2.使用scanner获取用户输入的用户名(前端页面)3.定义一个方法,对用户输入的用户名进行判断遍历储存的用户名,获取每一个用户名进行比较ture:用户名存在:抛出regis
阅读全文 »
发表于 2022-07-07 15:11阅读:40评论:0推荐:0
摘要:异常注意事项子父类异常 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。-父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出注意:父类异常时什么样,子类异常就什么样 自定义异常类 为什么需要自定
阅读全文 »
发表于 2022-07-07 15:08阅读:13评论:0推荐:0
摘要:异常注意事项多异常的捕获处理 多个异常使用捕获又该如何处理呢? 1、多个异常分别处理 2、多个异常一次处理 3、多个异常一次捕获一次处理 异常注意事项finally有return语句 如果finally有return语句,永远返回finally中的结果,避免该情况. 搜索 复制
阅读全文 »
发表于 2022-07-07 15:03阅读:31评论:0推荐:0
摘要:Throwable类中3个异常处理的方法 Throwable类中定义了3个异常处理的方法:String getMessage() 返回此throwable的简短描述String toString() 返回此throwable的详细消息字符串void printStackTrace() JVM打印异常
阅读全文 »
发表于 2022-07-07 10:18阅读:44评论:0推荐:0
摘要:Throws关键字--异常处理的第一种方式交给别人处理 声明异常∶将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理(稍后讲解该方式),那么必须通过throws进行声明,让调用者去处理。 关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该
阅读全文 »
发表于 2022-07-07 10:11阅读:29评论:0推荐:0
摘要:throw关键字 hrow是直接编写在语句之中的,表示人为进行异常的抛出。 例如,在之前使用过了一个10/0这样的语句,而这样的语句执行之后所产生的数学异常是由JVM负责进行异常类的对象实例化了,而现在如果不希望异常类对象由系统产生,希望由用户控制异常类实例化对象的产生,就可以使用throw来完成。
阅读全文 »
发表于 2022-07-07 10:04阅读:32评论:0推荐:0
摘要:异常分类 我们平常说的异常就是指Exception,因为这类异常一旦出现,我们就要对代码进行更正,修复程序。异常(Exception)的分类:根据在编译时期还是运行时期去检查异常? 编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)。 运行时期
阅读全文 »
发表于 2022-07-07 09:50阅读:24评论:0推荐:0
摘要:斗地主案例实现 异常概念&异常体系 异常指的是程序在执行过程中,出现的非正常的情况,最终会导致jvm的非正常停止 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象,Java处理异常的方式是中断处理 异常指的并不是语法错误,语法错了,编译不通过,不会产生
阅读全文 »
发表于 2022-07-07 09:41阅读:28评论:0推荐:0
摘要:Debug追踪 Debug调试程序:可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug。使用方式:在行号的右边,鼠标左键单击,添加断点(初学可以添加到每个方法的第一行,熟练之后哪里有bug添加到哪里)右键,选择Debug执行程序,程序就会停留在添加的第一个断点处执行程序:F8:逐行执行程
阅读全文 »
发表于 2022-07-07 09:37阅读:18评论:0推荐:0
摘要:练习计算一个字符串中每个字符出现次数 需求∶ 计算一个字符串中每个字符出现次数。 分析: 1.获取一个字符串对象 2.创建一个Map集合,键代表字符,值代表次数。 3.遍历字符串得到每个字符。 4.判断Map中是否有该键。 5.如果没有,第一次出现,存储次数为1;如果有,则说明已经出现过,获取到对应
阅读全文 »
发表于 2022-07-07 09:33阅读:25评论:0推荐:0
摘要:LinkedHashMap集合 我们知道HashMap保证成对元素唯一,并且查询速度很快,可是成对元素存放进去是没有顺序的,那么我们要保证有序,还要速度快怎么办呢? 在HashMap下面有一个子类LinkedHashMap,它是链表和哈希表组合的一个数据存储结构。 java.util.LinkedH
阅读全文 »
发表于 2022-07-06 19:35阅读:34评论:0推荐:0
摘要:Map集合遍历键值对方式 Set<Map.Entry<K, V>> entrySet() 返回此映射中包含的映射关系的Set视图 1、使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中 2、遍历Set集合,获取每一个Entry对象 3、使用En
阅读全文 »
发表于 2022-07-06 19:28阅读:41评论:0推荐:0
摘要:Map集合遍历键找值方式 Entry键值对对象 Map中的key和value是一一对应关系,Entry 将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历 Map 集合时,就可以从每一个键值对( Entry )对象中获取对应的键与对应的值。 public K getKey() :获取Ent
阅读全文 »
发表于 2022-07-06 19:23阅读:24评论:0推荐:0
摘要:Map常用子类 HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。LinkedHashMap:存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证
阅读全文 »
发表于 2022-07-06 19:17阅读:130评论:0推荐:0
摘要:Collection集合工具类的方法sort(list,Comparator) Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,**类的compareTo方法被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的
阅读全文 »
发表于 2022-07-06 19:13阅读:62评论:0推荐:0
摘要:Collection集合工具类的方法addAll与shuffle java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下: public static boolean addAll(Collection c,T…elements):往集合中添加一些元素。 publ
阅读全文 »
发表于 2022-07-06 13:59阅读:18评论:0推荐:0
摘要:LinkedHashSet集合 Java.util.LinkedHashSet集合 extends HashSet集合 LinkedHashSet集合特点: 底层是一个哈希表(数组+链表/红黑树)+链表;多了一条链表(记录元素的存储顺序),保证元素有序 可变参数 JDK1.5出的新特新 使用前提:当
阅读全文 »
发表于 2022-07-06 13:56阅读:53评论:0推荐:0
摘要:Set集合存储元素不重复的原理 java.util.Set接口 extends Collection Set接口特点 不允许存储重复的元素 没有索引,没有带索引的方法,也不能是使用普通的for循环遍历 HashSet存储自定义类型元素 Java.util.HashSet集合 implements S
阅读全文 »
发表于 2022-07-06 13:50阅读:33评论:0推荐:0
摘要:哈希值 哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来得到地址,不是数据实际存储的物理地址)3 在object类有一个方法,可以获取对象的哈希值 int hashcode()返回该对象的哈希码值。 hashcode方法的源码: public native i
阅读全文 »
发表于 2022-07-06 13:45阅读:33评论:0推荐:0
摘要:Vector集合 java.uti.vector 存数据的结构是数组结构 所有单列集合的老祖宗,1.0版本就出现了 单线程(慢) 在1.2班实现list接口,1.2才出现iterator迭代器 1.0版本没有add方法和get方法 那么1.0版本的vector是怎么添加元素和遍历元素的? 通过两个方
阅读全文 »
发表于 2022-07-06 13:37阅读:20评论:0推荐:0
摘要:ArrayList集合 java.util.ArrayList-集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。 J
阅读全文 »
发表于 2022-07-06 13:27阅读:93评论:0推荐:0
摘要:数据结构红黑树 概念: 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。 性质: 1、根节点是黑色的 2、每个节点不是红色的就是黑色
阅读全文 »
发表于 2022-07-06 13:21阅读:48评论:0推荐:0
摘要:数据结构数组 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组
阅读全文 »
发表于 2022-07-06 13:17阅读:28评论:0推荐:0
摘要:数据结构栈 栈是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶,相应的,表头端称为栈底。栈的特点是后进先出,即最后被压入栈的元素会第一个被弹出。 栈顶(Top):线性表允许进行插入删除的那一端。栈底(Bottom):固定的,不允许进行插入和删除的另一端。空栈:不
阅读全文 »
发表于 2022-07-06 13:08阅读:41评论:0推荐:0
摘要:斗地主案例的需求分析 1.案例介绍按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。 2.案例分析准备牌:牌可以设计为一-个ArrayList ,每个字符串为一张牌。每张牌由花色数字两部分组成,我们可以使用花色集合与
阅读全文 »
发表于 2022-07-06 13:02阅读:83评论:0推荐:0
摘要:泛型通配符 为什么要用通配符呢? 在java中,数组是可以协变的,比如dog extends Animal,那么Animal[] 与dog[]是兼容的。而集合是不能协变的,也就是说List<Animal>不是List<dog>的父类,这时候就可以用到通配符了。 一、基本概念: 在学习Java泛型的过
阅读全文 »
发表于 2022-07-06 09:39阅读:32评论:0推荐:0
摘要:定义和使用含有泛型的方法 泛型定义在方法的修饰符和返回值类型之间 格式: 修饰符<> 返回值类型 方法名(参数列表(使用泛型)){ 方法体; } 含有泛型的方法,在调用方法的时候确定泛型的数据类型 传递什么类型的参数,泛型就是什么类型 定义泛型方法: 测试泛型方法: 定义和使用含有泛型的接口 第一种
阅读全文 »
发表于 2022-07-06 09:32阅读:40评论:0推荐:0
摘要:使用泛型的好处 创建集合对象,使用泛型好处:1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错)弊端:泛型是什么类型,只能存储什么类型的数据 创建集合对象,不使用泛型好处:集合不使用泛型,黑t认的类型就是ob
阅读全文 »
发表于 2022-07-06 09:24阅读:78评论:0推荐:0
摘要:增强for循环 一、增强for循环增强for循环的作用: 简化迭代器的书写格式。(注意:增强for循环的底层还是使用了迭代器遍历。)增强for循环的适用范围: 如果是实现了Iterable接口的对象或者是数组对象都可以使用增强for循环。增强for循环的缺点:增强for循环和Iteration遍历的
阅读全文 »
发表于 2022-07-06 09:16阅读:45评论:0推荐:0
摘要:迭代器代码实现 Iterator: ConcreteIterator: Aggregate: ConcreteAggregate: Client: 迭代器的实现原理 1.迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合
阅读全文 »
发表于 2022-07-06 09:05阅读:36评论:0推荐:0
摘要:collection集合常用功能 public boolean add(E e):把给定的对象添加到当前集合中public void clear():清空集合中所有的元素public boolean remove(E e):把给定的对象在当前集合中删除public boolean contains(
阅读全文 »
发表于 2022-07-05 20:21阅读:106评论:0推荐:0
摘要:集合框架介绍avi 集合按照其存储结构可以分为两大类,分别单列集合Collection和双列集合Map。 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,他有两个重要的子接口,分别是List和Set。 其中,List的特点是元素有序,元素可重复,Set的特点是元素无序,而
阅读全文 »
发表于 2022-07-05 20:14阅读:20评论:0推荐:0
摘要:包装类总结 1.基本数据类型对应的包装类byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean⒉数字转为字符串 Collection集合概述 在前面基础班我们已经学习过
阅读全文 »
发表于 2022-07-05 20:11阅读:38评论:0推荐:0
摘要:包装类的自动装箱和自动拆箱 概念:基本类型的数据和包装类之间可以自动的相互转换(JDK1.5之后出现的新特性) 自动装箱: 直接把int类型的整数赋值包装类Integer in = 1; 就相当于 Integer in = new Integer(1); 自动拆箱:in是包装类,无法直接参与运算,可
阅读全文 »
发表于 2022-07-05 20:08阅读:75评论:0推荐:0
摘要:包装类的概念 基本数据类型使用方便,但是没有对应的方法来使用这些数据,因此我们可以使用一个类,把基本数据类型包装起来,这个类就叫做“包装类”。 在包装类中可以定义一些基本的方法,来操作基本类型的数据。 包装类的装箱与拆箱 装箱:从基本类型转换为包装类对象拆箱:从包装类对象转换为对应的基本类型 以In
阅读全文 »
发表于 2022-07-05 20:05阅读:13评论:0推荐:0
摘要:System类&StringBuilder类 System类currentTimeMillisO方法 作用:获取当前系统毫秒值时间 arraycopy0方法 作用:复制数组 StringBuilder类构造方法 StringBuilder():创建一个空的字符串缓冲区对象 StringBuilder
阅读全文 »
发表于 2022-07-05 19:59阅读:28评论:0推荐:0
摘要:StringBuilder的原理 java.lang类String String类代表字符串。Java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现。 字符串是常量﹔它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String 对象是不可变的,所以可以共享 字符串缓冲区,
阅读全文 »
发表于 2022-07-05 19:56阅读:17评论:0推荐:0
摘要:时间日期相关类总结 Date类 A.构造方法 Date();根据当前系统时间创建日期对象 Date(long time);根据传入的毫秒值时间创建日期对象 B.成员方法 long getTime(); 获取当前日期对象的毫秒值时间 String toLocaleString(); 根据本地格式转换日
阅读全文 »
发表于 2022-07-05 19:49阅读:42评论:0推荐:0
摘要:Calendar类介绍获取对象的方式 Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法类对象,如下∶Calendar静态方法public static calendar getInstance():使用默认时区和语言环境获得一个日历 Calend
阅读全文 »
发表于 2022-07-05 19:45阅读:18评论:0推荐:0
摘要:DateFormat类的format方法和parse方法 练习请使用日期时间相关的API,计算出一个人已经出生了多少天 请使用日期时间相关的API,计算出一个人已经出生了多少天。 思路:1.获取当前时间对应的毫秒值2.获取自己出生日期对应的毫秒值3.两个时间相减(当前时间-出生日期) 搜索 复制
阅读全文 »
发表于 2022-07-05 19:36阅读:107评论:0推荐:0
摘要:Date类的构造方法和成员方法 java.util.Data:日期类特定的瞬间,精确到毫秒构造方法:public Data():空参构造,创建日期类对象成员方法:public long getTime():将Date >long 类型时间毫秒值 DateFormat类&SimpleDateForma
阅读全文 »
发表于 2022-07-05 19:30阅读:79评论:0推荐:0
摘要:Object类的&Objects类总结 1.Object类介绍object类是所有类的父类,所有类都会直接或间接继承自该类 2.toString()方法作用:打印对象的信息重写前打印:包名类名@地址值重写后打印:对象中的属性值3.equals()方法作用:比较两个对象重写前:比较两个对象的地址重写后
阅读全文 »
发表于 2022-07-05 19:27阅读:36评论:0推荐:0
摘要:重写Object类的equals方法 重写equals方法的要求: 1、自反性:对于任何非空引用x,x.equals(x)应该返回true。 2、对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true。 3、传递性:对于任何引用x、y和z,如
阅读全文 »
发表于 2022-07-05 19:11阅读:46评论:0推荐:0
摘要:Object类的toString方法 Object toString() 方法用于返回对象的字符串表示形式。 语法:Object.toString 返回值 返回对象的字符串表示形式。 默认返回格式:对象的 class 名称 + @ + hashCode 的十六进制字符串。 Array 类调用 toS
阅读全文 »
发表于 2022-07-05 14:02阅读:320评论:0推荐:0
摘要:1. 定义 RedPacket 类,继承 RedPacketFrame。 2. 定义测试类,创建 RedPacket 对象。 3. RedPacket 对象,设置群主名称。 setOwnerName(String ownerName),是字符串作为参数。我们只需要传递一个字符串即可。 4. RedP
阅读全文 »
发表于 2022-07-05 13:55阅读:61评论:0推荐:0
摘要:接口作为方法的参数或返回值 interface作为方法参数和返回值类型 当接口作为方法的参数时,需要传递什么呢?当接口作为方法的返回值类型时,需要返回什么呢?对,其实都是它的 子类对象。 ArrayList 类我们并不陌生,查看API我们发现,实际上,它是 java.util.List 接口的实现类
阅读全文 »
发表于 2022-07-05 13:48阅读:111评论:0推荐:0
摘要:类作为成员变量类型 class作为成员变量 在定义一个类Role(游戏角色)时: 使用 int 类型表示 角色id和生命值,使用 String 类型表示姓名。此时, String 本身就是引用类型,由于使用的方式类似常量, 所以往往忽略了它是引用类型的存在。如果我们继续丰富这个类的定义,给 Role
阅读全文 »
发表于 2022-07-05 13:26阅读:75评论:0推荐:0
摘要:匿名内部类 匿名内部类 :是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。 开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作, 1. 定义子类 2. 重写接口中的方法 3. 创建子类对象 4. 调用重写后的方法 我们
阅读全文 »
发表于 2022-07-05 13:20阅读:30评论:0推荐:0
摘要:局部内部类定义 局部内部类是指在一个方法中定义的内部类。 1、局部内部类与局部变量一样,不能使用访问控制修饰符(public、private 和 protected)和 static 修饰符修饰。 2、局部内部类只在当前方法中有效。 3、局部内部类中不能定义 static 成员。 局部内部类的fin
阅读全文 »
发表于 2022-07-05 13:14阅读:33评论:0推荐:0
摘要:成员内部类的使用 定义格式: 在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。 比如,汽车类 Car 中包含发动机类 Engine ,这时, Engine 就可以使用内部类来描述,定义在成员位置。 内部类的同名变量访问 内部类可以直接访问外部类的成员,包括私有成员。 外部类要访
阅读全文 »
发表于 2022-07-05 13:08阅读:49评论:0推荐:0
摘要:内部类的概念与分类 什么是内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 成员内部类的定义 成员内部类:定义在类中方法外的类。 搜索 复制 什么是内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。
阅读全文 »
发表于 2022-07-04 19:25阅读:30评论:0推荐:0
摘要:final关键字用于修饰成员变量 成员变量涉及到初始化的问题,初始化方式有两种,只能二选一: 显示初始化; 构造方法初始化: 被fifinal修饰的常量名称,一般都有书写规范,所有字母都大写。 四种权限修饰符 概述 在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同
阅读全文 »
发表于 2022-07-04 19:23阅读:37评论:0推荐:0
摘要:final关键字用于修饰成员方法 重写被 final 修饰的方法,编译时就会报错。 final关键字用于修饰局部变量 局部变量——基本类型 基本类型的局部变量,被fifinal修饰后,只能赋值一次,不能再更改。 局部变量——引用类型 引用类型的局部变量,被fifinal修饰后,只能指向一个对象,地址
阅读全文 »
发表于 2022-07-04 19:21阅读:97评论:0推荐:0
摘要:final关键字概念与四种用法 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承 API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了 final 关键字, 用于修饰不可改变内容。 fifinal: 不可改变
阅读全文 »
发表于 2022-07-04 19:19阅读:281评论:0推荐:0
摘要:笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口, 但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。 定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守 US
阅读全文 »
发表于 2022-07-04 19:16阅读:57评论:0推荐:0
摘要:对象的向下转型 向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。 一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。 使用格式: 用instanceof关键字进行类型判断 为什么要转型 当使用多态方式调用方法时,首先检查父类中是否有该方法,如
阅读全文 »
发表于 2022-07-04 19:13阅读:26评论:0推荐:0
摘要:使用多态的好处 实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展 性与便利。 定义父类: 定义子类: 定义测试类: 由于多态特性的支持,showAnimalEat方法的Animal类型,是Cat和Dog的父类类型,父类类型接收子类对象,当 然可以把
阅读全文 »
发表于 2022-07-04 19:11阅读:20评论:0推荐:0
摘要:接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static fifinal修饰。 接口中,没有构造方法,不能创建对象。 接口中,没有静态代码块。 当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近选择执 行父类的成员方法
阅读全文 »
发表于 2022-07-04 15:47阅读:53评论:0推荐:0
摘要:多态的概述 引入 多态是继封装、继承之后,面向对象的第三大特性。 生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也 是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。 定义 多态: 是指同一行为,具有
阅读全文 »
发表于 2022-07-04 15:39阅读:146评论:0推荐:0
摘要:继承父类并实现多个接口 之前学过,在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接 口的多实现。并且,一个类能继承一个父类,同时实现多个接口。 实现格式: 接口之间的多继承 一个接口能继承另一个或者多个接口,这和类之间的继承比较相似。接口的继承使用 exte
阅读全文 »
发表于 2022-07-04 15:37阅读:49评论:0推荐:0
摘要:接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static fifinal修饰。 接口中,没有构造方法,不能创建对象。 接口中,没有静态代码块。 搜索 复制
阅读全文 »
发表于 2022-07-04 15:32阅读:43评论:0推荐:0
摘要:静态与.class 文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用 定义接口: 定义实现类: 定义测试类: 搜索 复制
阅读全文 »
发表于 2022-07-04 15:32阅读:28评论:0推荐:0
摘要:私有方法:只有默认方法可以调用。 私有静态方法:默认方法和静态方法可以调用。 如果一个接口中有多个默认方法,并且方法中有重复的内容,那么可以抽取出来,封装到私有方法中,供默认方法 去调用。从设计的角度讲,私有的方法是对默认方法和静态方法的辅助。同学们在已学技术的基础上,可以自行测 试。 定义接口:
阅读全文 »
发表于 2022-07-04 15:30阅读:27评论:0推荐:0
摘要:可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。 继承默认方法 定义接口: 定义实现类: 定义测试类: 重写默认方法: 定义接口: 定义实现类: 定义测试类: 搜索 复制
阅读全文 »
发表于 2022-07-04 15:22阅读:21评论:0推荐:0
摘要:含有抽象方法 抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体。该方法供子类实现使用。 必须全部实现 定义接口: 定义实现类: 定义测试类: 搜索 复制
阅读全文 »
发表于 2022-07-04 15:19阅读:95评论:0推荐:0
摘要:接口概念与生活举例 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法( JDK 7及以前),默认方法和静态方法( JDK 8),私有方法 (JDK 9)。 接口的定义,它与定义类方式相似,但是使用 i
阅读全文 »
发表于 2022-07-04 15:13阅读:61评论:0推荐:0
摘要:发红包案例分析 群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则: 1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。 2. 成员领取红包后,保存到成员余额中。 请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。 根据描述分析,得出
阅读全文 »
发表于 2022-07-03 20:57阅读:149评论:0推荐:0
摘要:抽象方法和抽象类的使用 抽象的使用 继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父 类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义。 输出结果: 此时的方法重写,是子类对父类抽象方法的完成实现,我们将这种方法重写的操作,也叫
阅读全文 »
发表于 2022-07-03 20:55阅读:301评论:0推荐:0
摘要:抽象的概念 由来 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。 定义 抽象方法 : 没有方法体的方法。 抽象类:包含抽象
阅读全文 »
发表于 2022-07-03 20:52阅读:26评论:0推荐:0
摘要:super和this关键字图解 父类空间优先于子类对象产生 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空 间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构 造方法调用时,一定先调用父类
阅读全文 »
发表于 2022-07-03 20:51阅读:188评论:0推荐:0
摘要:super和this的用法 super和this的含义 super :代表父类的存储空间标识(可以理解为父亲的引用)。 this :代表当前对象的引用(谁调用就代表谁)。 1. 访问成员 输出结果: 2. 访问构造方法 子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构
阅读全文 »
发表于 2022-07-03 20:49阅读:22评论:0推荐:0
摘要:继承中方法的覆盖重写应用场景 1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。 2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。 继承中构造方法的访问特点 当类之间产生了关系,其中各类中的构造方法,又产生了哪些影响呢? 首先我们要回忆两个事情,构造方法的定义格式和作
阅读全文 »
发表于 2022-07-03 20:47阅读:52评论:0推荐:0
摘要:继承中方法的覆盖重写概念与特点 成员方法重名——重写(Override) 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。 方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效 果,也称为重写或者复写。声明不
阅读全文 »
发表于 2022-07-03 20:46阅读:54评论:0推荐:0
摘要:区分子类方法中的重名的三种变量 成员变量重名 如果子类父类中出现重名的成员变量,这时的访问是有影响的。 演示结果: 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 父类成员变量,类似于之前学过的 this 。 使用格式: 子类方法需要修改
阅读全文 »
发表于 2022-07-03 20:41阅读:32评论:0推荐:0
摘要:继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类 继承中成员变量的访问特点 当类之间产生了关系后,其中各类中的成员变量,又产生了哪些影响呢? 成员变量不重名 如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。 演示结果: 搜索 复制
阅读全文 »
发表于 2022-07-03 20:37阅读:23评论:0推荐:0
摘要:Math练习小学数学真题 计算在 -10.8 到 5.9 之间,绝对值大于 6 或者小于 2.1 的整数有多少个? 继承的概述 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要 继承那一个类即可。 其中,多个类可以称为子类,单独那一个类称为父
阅读全文 »