07 2022 档案
摘要:自定义涵数模型拼接 请使用Function进行函数模型的拼接,按照顺序需要执行的多个函数操作为︰String str ="赵丽颖,20";1.将字符串截取数字年龄部分,得到字符串﹔ 2.将上一步的字符串转换成为int类型的数字﹔ 3.将上一步的int数字累加100,得到结果int数字。 packag
阅读全文
摘要:Function接口 java.util.function.Function<T,R〉接口用来根据一个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件。 抽象方法:apply Function接口中最主要的抽象方法为:R apply(T t),根据类型T的参数获取类型R的结果。使用
阅读全文
摘要:默认方法:negate “与"、“或"已经了解了,剩下的“非"(取反)也会简单。默认方法negate的JDK源代码为︰ 集合信息筛选 数组当中有多条"姓名+性别"的信息如下,请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,需要同时满足两个条件:1.必须为女生;2.
阅读全文
摘要:默认方法:and 既然是条件判断,就会存在与、或、非三种常见的逻辑关系。其中将两个Predicate条件使用“与"逻辑连接起来实现“并且"的效果时,可以使用default方法and。其JDK源码为︰ 如果要判断一个字符串既要包含大写“H”,又要包含大写“W”",那么∶ 默认方法:or and的“与"
阅读全文
摘要:字符串拼接输出 下面的字符串数组当中存有多条信息,请按照格式"”\姓名∶XX。性别:xx。"的格式将信息打印出来。要求将打印姓名的动作作为第一个Consumer 接口的Lambda实例,将打印性别的动作作为第二个Consumer.接口的Lambda实例,将两个 consumer接口按照顺序“拼接”"
阅读全文
摘要:Consumer接口 java.util.function.Consumer<T〉接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。 抽象方法:accept Consumer 接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数
阅读全文
摘要:常用的函数式接口_supplier接口 常用的函数式接口java.util.function.SuppLier<T>接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。SuppLier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产
阅读全文
摘要:模拟BS服务器分析 模拟网站服务器,使用浏览器访问自己编写的服务端程序,查看网页效果. 服务器要给客户端回写一个信息,回写一个html页面(文件)我们需要读取index.html文件,就必须的知道这个文件的地址?而这个地址就是请求信息的第一行GET /11_Net/web/index.html HT
阅读全文
摘要:函数式接口作为方法的参数案例 如果抛开实现原理不说,Java中的Lambda表达式可以被当作是匿名内部类的替代品。如果方法的参数是一个函数式接口类型,那么就可以使用Lambda表达式进行替代。使用Lambda表达式作为方法参数,其实就是使用函数式接口作为方法参数。 例如java.lang.Runna
阅读全文
摘要:性能浪费的日志案例 注:日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。一种典型的场景就是对参数进行有条件使用,例如对日志消息进行拼接后,在满足条件的情况下进行打印输出∶ package A_Lian_one.Demo22; public class Demo01Lo
阅读全文
摘要:函数式接口的概念 概念 函数式接口在Java中是指:有且仅有一个抽象方法的接口I。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导
阅读全文
摘要:文件上传案例优化分析 客户端: package A_Lian_one.Demo21.demo03; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.
阅读全文
摘要:文件上传案例服务器端 文件上传案例服务器端:读取客户端上传的文件,保存到服务器的硬盘,给客户端回写"上传成功明确:数据源:客户端上传的文件目的地:服务器的硬盘d : i lupLoad \l1.jpg 实现步骤:1.创建一个服务器serverSocket对象,和系统要指定的端口号2.使用Server
阅读全文
摘要:文件上传的原理 原理:客户端读取本地的文件,把文件上传到服务器在把上传的文件保存到服务器的硬盘上 1.客户端使用 本地的字节输入流,读取要上传的文件 2.客户端使用 网络字节输出流 ,把读取到的文件上传到服务器 3.服务器使用 网络字节输入流,读取客户端上传的文件 4.服务器使用 本地字节输出流,把
阅读全文
摘要:TCP通信的客户端代码实现 两端通信时步骤:1.服务端程序,需要事先启动,等待客户端的连接。⒉.客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。在Java中,提供了两个类用于实现TCP通信程序:1.客户端︰`java.net.Socket类表示。创建 Socket对象,向服务端
阅读全文
摘要:TCP通信的概述(上) TCP通信的概述(下)
阅读全文
摘要:端口号 网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢?如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。·端口号︰用两个字节表示的整数,它的取值范围是0~65535。其中,0~1023之间的端
阅读全文
摘要:网络通讯协议分类 通信的协议还是比较复杂的,java.net包中包含的类和接口,它们提供低层次的通信细节。我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。 java.net包中提供了两种常见的网络协议的支持︰ UDP∶用户数据报协议(User Datagram Protoc
阅读全文
摘要:软件结构 .CIS结构︰全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 B/S结构︰全称为BrowserlSprver结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协
阅读全文
摘要:练习-序列化集合 练习:序列化集合当我们想在文件中保存多个对象的时候可以把多个对象存储到一个集合中对集合进序列化和反序列化分析: 1.定义一个存储Person对象的ArrayList集合 2.往ArrayList集合中存储Person对象 3.创建一个序列化流objectoutputstream对象
阅读全文
摘要:Translent关键字 static关键字:静态关键字静态优先于非静态加载到内存中(静态优先于对象进入到内存中)被static修饰的成员变量不能被序列化的,序列化的都是对象private static int ade;oos.writeobject ( new Person("小美女”,18) )
阅读全文
摘要:对象的反序列化流_ObjectInputStream类 ObjectInputStream反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象。 构造方法 public objectInputStream(InputStream in):创建一个指定InputStre
阅读全文
摘要:系列化和反序列化的概述 Java提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、对象的
阅读全文
摘要:转换文件编码 将GBK编码的文本文件,转换为UTF-8编码的文本文件。 分析: 1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBK ⒉.创建outputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-8 3.使用Input
阅读全文
摘要:OuputStreamWriter介绍 java.io.Outputstreamlwriter extends writeroutputStreamwriter:是字符流通向字节流的桥梁:可使用指定的 charset将要写入流中的字符编码成字节。(编码:把能看懂的变成看不懂)继续自父类的共性成员方法
阅读全文
摘要:编码引出的问题 在IDEA中,使用FileReader|读取项目中的文本文件。由于IDEA的设置,都是默认的UTF-8编码,所以没有任何问题。但是,当读取Windows系统中创建的文本文件时,由于Windows系统的默认是GBK编码,就会出现乱码。 转换流的原理 转换流java.io.InputSt
阅读全文
摘要:字符编码和字符集 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。比如说,按照A规则存储,同样按照A规则解
阅读全文
摘要:字符缓冲输出流 构造方法:Bufferedwriter(Writer out)创建一个使用黑t认大小输出缓冲区的缓冲字符输出流。Bufferedwriter(writer out, int sz)创建一个使用给定大小输出缓冲区的新缓冲字符输出流。参数:writer out:字符输出流我们可以传递Fi
阅读全文
摘要:字节缓冲输出流 继承自父类的共性成员方法:- public void close() :关闭此输出流并释放与此流相关联的任何系统资源。- public void flush():刷新此输出流并强制任何缓冲的输出字节被写出。- public void write(byte[] b):将 b.lengt
阅读全文
摘要:Properties集合中的方法load 参数:InputStream instream:字节输入流,不能读取含有中文的键值对Reader reader:字符输入流,能读取含有中文的键值对使用步骤:1.创建Properties集合对象2.使用Properties集合对象中的方法Load读取保存键值对
阅读全文
摘要:使用ProPerties集合存储数据 java.util.Properties`继承于Hashtable,来表示一个持久的属性集。它使用键值结构存储数据每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时,System.getProperties方法就是返回一个 Prope
阅读全文
摘要:处理流中的异常 JDK7和JDK9流中异常的处理 jdK7的新特性在try的后边可以增加一个(),在括号中可以定义流对象那么这个流对象的作用域就在try中有效try中的代码执行完毕,会自动把流对象释放,不用写finally格式:try(定义流对象;定义流对象....)i可能会产出异常的代码}catc
阅读全文
摘要:字符输出流写出数据的其他方法 字符输出流的续写和换行 续写和换行续写,追加写:使用两个参数的构造方法 Filelwriter( string fileName, boolean append) Filewriter(File file. boolean append) 参数: String fiLe
阅读全文
摘要:写出单个字符到文件 flush方法和close方法的区别 因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要flush方法了。flush:刷新缓冲区,流对象可以继续使用。. close :先刷新缓冲区,然
阅读全文
摘要:字符输入流读取字符数据 读取字符:read方法,每次可以读取一个字符的数据,提升为int类型,读取到文件末尾,返回-1,循环读取,代码使用演示∶ writer类 java.io.Filelwriter extends outputStreamWriter extends writerFiLelrit
阅读全文
摘要:使用字节流丢读取中文的问题 当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。 Reader类 java.io.Reader抽象类是表示用于读
阅读全文
摘要:字节一次读取多个字节 练习_文件复制 package demo02.CopyFile; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* 文件复制练习:一读一
阅读全文
摘要:字节输入流读取字节数据 package demo02.InputStream; import java.io.FileInputStream; import java.io.IOException; /** * java.io.Inputstream:字节输入流 * 此抽象类是表示字节输入流的所有类
阅读全文
摘要:字节输出流的续写和换行 package demo02.OutputStream; import java.io.FileOutputStream; import java.io.IOException; /** * * 追加写/续写:使用两个参数的构造方法 * FiLeOutputStream(St
阅读全文
摘要:文件存储的原理和记事本打开文 字节输出流写多个字节的方法
阅读全文
摘要:字节输出流OutputStream类 java.io.OutputStream抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。public void close()︰关闭此输出流并释放与此流相关联的任何系统资源。public void flu
阅读全文
摘要:io流概述 什么是io 生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的
阅读全文
摘要:file过滤器的原理和使用 java.io.FileFilter是一个接口,是File的过滤器。该接口的对象可以传递给File类的listFiles(FileFilter)作为参数,接口中只有一个方法。 boolean accept(File pathname):测试pathname是否应该包含在当
阅读全文
摘要:递归打印多级文件 package Demo01.Recursion; import java.io.File; public class Demo04Recurison { public static void main(String[] args) { File file = new File("
阅读全文
摘要:练习_使用递归计算1-n之间的和 定义一个方法,使用递归计算1-n之间的和 1+2+3+. . .+n n+(n-1)+(n-2)+...+1 已知: 最大值:n 最小值:1 使用递归必须明确: 1.递归的结束条件获取到1的时候结束 2.递归的目的 获取下一个被加的数字(n-1) package D
阅读全文
摘要:递归概念&分类&注意事项 概念 递归:指在当前方法内调用自己的这种现象。 递归的分类:。递归分为两种,直接递归和间接递归。。直接递归称为方法自身调用自己。。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。 注意事项: 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
阅读全文
摘要:file类创建删除功能的方法 public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。public boolean delete(︰删除由此File表示的文件或目录。public boolean mkdir()︰创建由此File表示的目录
阅读全文
摘要:File类获取功能的方法 获取功能的方法 public string getAbsolutePath()∶返回此File的绝对路径名字符串。 public string getPath() ︰将此File转换为路径名字符串。 public string getName()︰返回由此File表示的文件
阅读全文
摘要:绝对路径和相对路径 路径:绝对路径:是一个完整的路径以盘符(c:,D:)开始的路径c:lla.txtC; llUserslitcastllIdeaProjects 1lshungyuan {\123.txtD: lldemol1b.txt相对路径:是一个简化的路径相对指的是相对于当前项目的根目录(C
阅读全文
摘要:File的概述 java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 构造方法 public File(String pathname)︰通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 public File(String paren
阅读全文
摘要:自定义接口 lambda使用前提 可推导即可省略 Lambda强调的是“做什么"而不是"怎么做”,所以凡是可以根据上下文推导得知的信息,都可以省略。例如上例还可以使用Lambda的省略写法∶ 省略规则 在Lambda标准格式的基础上,使用省略写法的规则为∶ 1.小括号内参数的类型可以省略;2.如果小
阅读全文
摘要:Lamdba表达式的无参数无返回值的练习 题目给定一个厨子Cook接口,内含唯一的抽象方法makeFood,且无参数、无返回值。如下∶public interface cook {void makeFood(); } 在下面的代码中,请使用Lambda的标准格式调用invokeCopk方法,打印输出
阅读全文
摘要:编程思想转换 做什么,而不是怎么做 我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而不得不创建一个对象。我们真正希望做的事情是︰将run方法体内的代码传递给 Thread类知晓。 传递一段代码——这才是我们真正的目的。而创建对象只是受限于面向对象语法而不得不采取的一种手段方式。那,
阅读全文
摘要:函数式编程思想概述 在数学中,函数就是有输入量、输出星的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调"必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法―—强调做什么,而不是以什么形式做。 冗余的Runnable代码 传统写法 当需要启动一个线程去完成
阅读全文
摘要:线程池的概念和原理 思想概述 我们使雨线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执
阅读全文
摘要:包子类&包子铺类 资源类:包子类设置包子的属性皮陷包子的状态:有true,没有false package Demo01.WaitAndNotify; /** * 资源类:包子类设置包子的属性 * 皮 * 陷 * 包子的状态:有true,没有false */ public class BaoZi {
阅读全文
摘要:等待唤醒机制概述 什么是等待唤醒机制 这是多个线程间的一种协作机制。谈到线程我们经常想到的是线程间的竞争( race ),比如去争夺锁,但这并不是故事的全部,线程间也会有协作机制。就好比在公司里你和你的同事们,你们可能存在在晋升时的竞争,但更多时候你们更多是一起合作以完成某些任务。 就是在一个线程进
阅读全文
摘要:Object类中wait带参方法和notifyAll方法 void wait (在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前线程等待。void wait (long timebut) 在其他线程调用此对象的notify()方法或notifyA11()方法,或者超
阅读全文
摘要:等待唤醒案例分析 Timed Waiting在API中的描述为︰一个正在限时等待另一个线程执行一个(唤醒)动作的线程处于这一状态。单独的去理解这句话,真是玄之又玄,其实我们在之前的操作中已经接触过这个状态了,在哪里呢? 在我们写卖票的案例中,为了减少线程执行太快,现象不明显等问题,我们在run方法中
阅读全文
摘要:Lock锁 java.util.concurrent.locks.Lock机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作,同步代码块/同步方法具有的功能Lock都有,除此之外更强大,更体现面向对象。 Lock锁也称同步锁,加锁与释放锁方法化了,如下: pub
阅读全文
摘要:同步方法 同步方法:使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法外等着。 格式: public class Test { public synchronized void method(){ // 可能回产生线程安全问题的代码 } } pac
阅读全文
摘要:同步代码块 ·同步代码块:synchronized关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。 格式: package Demo01.Sychronized; public class RunnableImpl implements Runnable{ //定义一个多线程共
阅读全文
摘要:线程安全问题的概述 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是“葫芦娃大战奥特曼”,
阅读全文
摘要:Thread和Runnable的区别 如果一个类继承Thread ,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。 总结: 实现Runnable接口比继承Thread类所具有的优势: 1.适合多个相同的程序代码的线程去共享同一个资源。 2.可以避免java中的单继承
阅读全文
摘要:Thread的常用方法_sleep public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行 实现Runable接口 采用 java.lang.Runnable也是非常常见的一种,我们只需要重写run方法即可。 步骤如下: 1
阅读全文
摘要:获取线程名称的方法 获取线程的名称: 1.使用thread类中的方法getname() String getName() 返回该线程的名称. 2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称 static Thead current Thread() 返回当前正在
阅读全文
摘要:随机性打印结果 JVM执行main方法,找OS开辟一条main方法通向cpu的路径 这个路径叫main线程,主线程 cpu通过这个线程,这个路径可以执行main方法 对于cpu而言,就有了两条执行的路径,cpu就有了选择的权力 cpu喜欢谁,就会执行那条路径,我们控制不了cpu 所以就有了程序的随机
阅读全文
摘要:主线程 Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Java中通过继承Thread类来创建并启动多线程的步骤如下∶ 1
阅读全文
摘要:线程概念 线程∶线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 线程条度
阅读全文
摘要:并发与并行 并发︰指两个或多个事件在同一个时间段内发生。 并行︰指两个或多个事件在同一时刻发生(同时发生)。 进程概念 进程∶是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位﹔系统运行一个程序即是一个
阅读全文
摘要:自定义类异常 概述 为什么需要自定义异常类: 我们说了Java中不同的异常类;分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。 在上述代码中,发现这些异常都是IJDK内部定义好的,但
阅读全文
摘要:异常注意事项 如果finally有return语句,永远返回finally中的结果,避免该情况.如果父类抛出了多个异常,子类覆盖父类方法时,只能抛出相同的异常或者是他的子集。父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出在try/catch后
阅读全文
摘要:finally代码块 finally :有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。 什么时候的代码必须最终执行? 当我们在try语句块中打开了一些物理资源
阅读全文
摘要:异常处理的第二种方式 如果异常出现的话,会立刻终止程序,所以我们得处理异常: 1.该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。 2.在方法中使用try-catch的语句块来处理异常。 try-catch的方式就是捕获异常。 ·捕获异常: Java中对异常有针对性的语句进行捕获
阅读全文
摘要:Objects非空判断 还记得我们学习过一个类Objects吗,曾经提到过它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant (容忍空指针的),那么在它的源码中,对对象为null的值进行了抛出异常操作 public static <T> T requ
阅读全文
摘要:异常的产生过程解析 先运行下面的程序,程序会产生一个数组索引越界异常ArrayIndexOfBoundException.我们通过图解来解析下异常产生的过程. 工具类 throw关键字 在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的
阅读全文
摘要:异常概念&异常体系 异常,就是不正常的意思.在生活中:医生说,你的身体某个部分有异常,该部位和正常相比有点不同,该部位的功能将受影响,在程序中的意思就是: 异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生一场就
阅读全文
摘要:斗地主案例分析 看牌;可以使用查表方法遍历一个集合,获取到另外一个集合的key通过key查找到value遍历玩家和底牌的List集合,获取到Map集合的key,通过key找到value值 斗地主案例实现 package A_Lian_one.demo16; import java.util.Arra
阅读全文
摘要:JDK9对集合添加的优化 通常,我们在代码中创建一个集合(例如,List或Set ),并直接用一些元素填充它。实例化集合,几add方法调用,使得代码重复。 package A_Lian_one.demo16; import java.util.ArrayList; public class Demo
阅读全文
摘要:Hash table集合 java.util.Hashtable<K,V>集合implements Map<K,V>接口Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢HashMap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快HashMap集合
阅读全文
摘要:HashMap存储自定义类型键值 练习∶每位学生(姓名,年龄)都有自己的家庭住址。那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中。学生作为键,家庭住址作为值。注意,学生姓名相同并且年龄相同视为同一名学生。 编写学生类︰ package A_Lian_one.demo15Collect
阅读全文
摘要:Entry键值对对象 我们已经知道,Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在[Map中是-对应关系,这一对对象又称做Map 中的一个 Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map 集合时,就可以从每一个键值对
阅读全文
摘要:Map接口中的常用方法 Map接口中定义了很多方法,常用的如下: public v put(K key,v value):把指定的键与指定的值添加到Map集合中。 public v remove(0bject key):把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。 publi
阅读全文
摘要:Map集合概述 现实生活中,我们常会看到这样的一种集合︰IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种——对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map 接口。我们通过查看Map接口描述,发现 wap接口下的集合与col
阅读全文
摘要:Add All&shuffle Collections常用功能 java.utils.collections是集合工具类,用来对集合进行操作。部分方法如下︰ public static <T> boolean addAll(Collection<T〉c,T... elements) :往集合中添加一
阅读全文
摘要:可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格式∶ 其实这个书写完全等价与 只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。 JDK1.5以后。出现了简化操作。...用在参数上,称之为可变参数。 同样是代表数组,
阅读全文
摘要:存储自定义类型元素 HashSet存储自定义类型元素 set集合报错元素唯一: 存储的元素(String,Integer,...,Student,Person...),必须重写hashCode方法和equals方法 要求: 同名同年龄的人,视为同一个人,只能存储一次 LinkedHashSet集合
阅读全文
摘要:HashSet集合存储数据的结构(哈希表) 在JDK1.8之前,哈希表底层采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,哈希表存储采用数组+链表+红黑树实现
阅读全文
摘要:HashSet集合介绍 java.util.HashSet是set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。java.util.HashSet底层的实现其实是个java.util.HashMap支持,由于我们暂时还未学习,先做了解。HashSet是根据对
阅读全文
摘要:LinkedList集合 java.util.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。LinkedList是一个双向链表,那么双向链表是什么样子的呢,我们用个图了解下 实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大星首尾操作
阅读全文
摘要:List_集合_介绍&常用方法 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢?接下来,我们一起学习Collection中的常用几个子类(java.util.List集合、java.util.set集合 list接口介绍 java.util
阅读全文
摘要:红黑树 生活中的树 二叉树:分支不能超过两个 计算机中的树(倒着)
阅读全文
摘要:数据结构_数组 数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。就像是一排出租屋,有100个房间,从001到100每个房间都有固定编号,通过编号就可以快速找到租房子的人。简单的说,采用该结构的集合,对元素的存取有如下的特点︰·查找元素快:通过索引,可以快速访
阅读全文
摘要:数据结构_栈 当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类的。好用吗?好用,这就是数据结构的用处,只不过你在不知不觉中使用了。现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数
阅读全文
摘要:泛型的使用总结 1泛型类和泛型方法 类名<泛型> 方法名(泛型) 2.泛型接口和泛型方法 接口名<泛型> 方法名(泛型) 3.泛型通配符
阅读全文
摘要:定义和使用含有泛型的接口 含有泛型的接口,第一种使用方式:定义接口的实现类,实现接口,指定接口的泛型 public interface Iterator<E>{ E next(); } Scanner类实现了Iterator接口,并指定接口的泛型String,所以重写的next方法泛型默认就是Str
阅读全文
摘要:定义和使用含有泛型的类 定义格式: 例如:API中的Array list集合: 创建Generic Class对象,泛型使用Integer类型 创建Generic Class对象,泛型使用String类型 定义和使用含有泛型的方法(1) 含有泛型的方法 定义格式: 例如: 使用格式:调用方法时,确定
阅读全文
摘要:使用泛型的好处 创建集合对象,使用泛型好处:1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错)弊端:泛型是什么类型,只能存储什么类型的数据 创建集合对象,不使用泛型好处:集合不使用泛型,黑t认的类型就是ob
阅读全文
摘要:增加for循环 增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个lterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。 格式: 泛型的概念 在前面学习集合时,我们都知道集合中是可以存放任意对象的
阅读全文
摘要:迭代器的代码实现 java.util.Iterator接口:选代器(对集谷进行遍历)有两个常用的方法boolean hasNext()如果仍有元素可以迭代,则返回true。判断集合中还有没有下一个元素,有就返回true,没有就返回falseE next()返回迭代的下一个元素。取出集合中的下一个元素
阅读全文
摘要:Collection集合常用功能 Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下︰public boolean add(E e)︰把给定的对象添加到当前集合中。public void
阅读全文
摘要:集合框架 JAVASE提供了满足各种需求的APl,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活应用。集合按照其存储结构可以分为两大类,分别是单列集合java.util.collection 和双列集合java.util.Nap,今天我们
阅读全文
摘要:包装类总结 1.基本数据类型对应的包装类byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean⒉数字转为字符串 Collection集合概述 集合概述 在前面基础班我们
阅读全文
摘要:自动装箱与自动拆箱 由于我们经常要做基本类型与包装类之间的转换,从Java 5 ( JDK 1.5)开始,基本类型与包装类的装箱.拆箱动作可以自动完成。例如∶ 基本类型与字符串类 基本类型与字符串之间的转换基本类型-->字符串1.基本类型数据的值+”最简单的方式(工作中常用) 2.使用包装类中的静态
阅读全文
摘要:包装类的概念 概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下: 装箱与拆箱 基本类型与对应的包装类对象之间,来回转换的过程称为"装箱"与"拆
阅读全文
摘要:StringBuilder类 构造方法 StringBuilder();创建一个空的字符串缓冲区对象StringBuilder(String s);根据传入的内容创建一个字符串缓冲区对象 成员方法 StringBuilder append(Object obj); 添加内容 StringBuilde
阅读全文
摘要:StringBuilder的原理 append方法 根据StringBuilder的API文档,常用构造方法有2个:public stringBuilder():构造一个空的StringBuilder容器。public Stringbuilde](String stn)`:构造一个StringBui
阅读全文
摘要:时间日期相关总结 Date类 A.构造方法 Date();根据当前系统时间创建日期对象 Date(long time);根据传入的毫秒值时间创建日期对象 B.成员方法 long getTime(); 获取当前日期对象的毫秒值时间 String toLocaleString(); 根据本地格式转换日期
阅读全文
摘要:获取对象的方式 java.utiL.calendar类:日历类caLendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR )CaLendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了caLend
阅读全文
摘要:练习_请使用日期时间相关的API 练习:请使用日期时间相关的APi,计算出一个人已经出生了多少天。分析:1.使用scanner类中的方法next,获取出生日期2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式3.把Date格式的出生日期专换为毫秒值4.获取当前的日
阅读全文
摘要:DateFormat类&SimpleDateFrormat类介绍 java.text.DateFormat是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。·格式化︰按照指定的格式,从Date对象转换为Str
阅读全文
摘要:毫秒值的概念和作用 java.utiL.Date:表示日期和时间的类类Date表示特定的瞬间,精确到毫秒。毫秒:千分之一秒1000毫秒=1秒特定的瞬间:一个时间点,一刹那时间2088-08-68 69:55∶33:333瞬间2688-68-68 69:55:33:334瞬间2088-08-68 69
阅读全文
摘要:重写Object类的equals方法 Object类的equals方法默认比较的是两个对象的地址值,没有意义所以我们学要重写equals方法,比较两个对象的属性值(name,age) 对象的属性值一样好,返回true,否则返回false Objects类的equals方法 在刚才IDEA自动重写eq
阅读全文
摘要:Object类的toString方法 Object 是类层次结构的根(最顶层)类.每个类都是用 Object 作为超(父)类. 所有对象(包括数组) 都实现这个类的方法 Person类默认继承了Object类,所以可以使用Object类中的toString方法 String toString() 返
阅读全文
摘要:发红包案例 红包文化源远流长。从古时的红色纸包,到手机App中的手气红包,红包作为一种独特的中华文化传承至今。之前 的课程中,我们也编写过程序,模拟发普通红包。那么今天,我们将整合基础班课程中所有的技术和知识,编写一 个带界面版的 发红包 案例。 目前,我们尚未学习过任何与界面相关的类。所以,界面相
阅读全文
摘要:接口作为方法的参数和或返回值 当接口作为方法的参数时,需要传递什么呢?当接口作为方法的返回值类型时,需要返回什么呢?对,其实都是它的 子类对象。 ArrayList 类我们并不陌生,查看API我们发现,实际上,它是 java.util.List 接口的实现类。所 以,当我们看见 List 接口作为参
阅读全文
摘要:类作为成员变量类型 在定义一个类Role(游戏角色)时,代码如下: class Role { int id; // 角色id int blood; // 生命值 String name; // 角色名称 } 使用 int 类型表示 角色id和生命值,使用 String 类型表示姓名。此时, Stri
阅读全文
摘要:匿名内部类 如果接口的实现类(或者父类的子类)只需要使用唯一的一次,那么这种情况下就可以省略掉该类的定义,而改为使用[匿名内部类]. 匿名内部类的定义格式: 接口名称 对象名 = new 接口名称 () { //覆盖重写所有的抽象方法 } 匿名内部类的注意事项 对格式"new 接口名称() {...
阅读全文
摘要:局部内部类定义 定义格式: 修饰符 class 外部类名称 { 修饰符 返回值类型 外部类方法名(参数列表){ class 局部内部类名称{// ... } } } 小杰一下类的权限修饰符: public > protected > (default) >private 定义一个类的时候,权限修饰符
阅读全文
摘要:内部类的同名变量访问 内部类的同名变量访问_解决方法: 格式:外部类名称.this.外部类成员变量名 如何创建内部类对象 格式:外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称(); 实例如下: 定义一个包含内部类的外部类: package NeiBuLei; //如果
阅读全文
摘要:成员内部类的定义 成员内部类 :定义在类中方法外的类。 定义格式: class 外部类 { class 内部类{ } } 在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类 Car 中包含发动机 类 Engine ,这时, Engine 就可以使用内部类来描述,定义在
阅读全文
摘要:四种权限修饰符 在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限, public:公共的。 protected:受保护的 default:默认的 private:私有的 不同权限的访问能力 可见,public具有最大权限。private则是最小权限。 编
阅读全文
摘要:final关键字用于修饰局部变量 局部变量--引用类型 引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部的成员变量值的 修改,代码如下: public class FinalDemo2 { public static void main(String[]
阅读全文
摘要:final关键字用于修饰成员方法 修饰方法 格式如下: 修饰符 final 返回值类型 方法名(参数列表){ //方法体 } 重写被 final 修饰的方法,编译时就会报错。 final关键字用于修饰局部变量 修饰变量 1. 局部变量——基本类型 基本类型的局部变量,被final修饰后,只能赋值一次
阅读全文
摘要:final关键字与四种用法 概念 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容容,比如,方法重写。那么我们能不能随意的继承 API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了 final 关键字, 用于修饰不可改变内容。 final关键字用于修
阅读全文
摘要:笔记本USB接口案例_分析 笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口, 但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。 定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那
阅读全文
摘要:对象的向上转型 向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。 当父类引用指向一个子类对象时,便是向上转型。 使用格式: 父类类型 变量名 = new 子类类型(); 如:Animal a = new Cat(); 对象的向下转型 向下转型:父类类型向子类类型向下转换的过程
阅读全文
摘要:使用多态的好处 实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展 性与便利。 代码如下: 定义父类: public abstract class Animal { public abstract void eat(); } 定义子类: class
阅读全文
摘要:多态中成员变量的使用特点 访问成员变量的两种方式: 直接通古狗对象名称访问成员变量:看等号左边是谁,没有则向上找 间接通过成员访问 多态体现的格式: 父类类型 变量名 = new 子类对象; 变量名.方法名(); 父类类型:指子类对象继承的父类类型,或者实现的父接口类型。 代码如下: Fu f =
阅读全文
摘要:多态的概述 引入 多态是继封装,继承之后,面向对象的三大特征. 生活中,比如跑的动作,小猫,小狗和大象象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也 是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。 多态的格式与使用 定义 多态:
阅读全文
摘要:接口之间的多继承 一个接口能继承另一个或者多个接口,这和类之间的继承比较相似。接口的继承使用 extends 关键字,子接口继 承父接口的方法。如果父接口中的默认方法有重名的,那么子接口需要重写一次。代码如下: 定义父接口: interface A { public default void met
阅读全文
摘要:接口的常量定义和使用 接口当中可以定义"成员变量",但是必须使用public static final三个关键字进行修饰. 从效果上看,这其实就是接口的[常量] 格式: public static final 数据类型 常量名称 = 数据值; 注意: 一旦使用final关键字进行修饰,说明不可改变
阅读全文
摘要:接口的私有方法定义 定义: 私有方法:使用 private 修饰,供接口中的默认方法或者静态方法调用。 代码如下: public interface InterFaceName { private void method() { // 执行语句 } } 接口的私有方法使用 私有方法的使用 私有方法:
阅读全文