07 2022 档案
摘要:常用的函数式接口_supplier接口: 常用的函偻式接口: java.util.function.Supplier<T>接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。 Supplier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法
阅读全文
摘要:函数式接口的概念&函数式接口的定义: 函数式接口在Java中是指:有且仅有一个抽象方法的接口。 函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可 以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才
阅读全文
摘要:模拟BS服务器分析: 模拟BS服务器代码实现: public class BSfuwu { public static void main(String[] args) throws IOException { //创建一个服务器ServerSocket,和系统要指定的端口号 ServerSocke
阅读全文
摘要:TCP通信的客户端代码实现: TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据 表示客户端的类: java.net.Socket:此类实现客户端套接字(也可以就叫叶“套接字”)。套接字是两台机器间通信的端点。 套接字:包含了IP地址和端口号的网络单位 构造方法: So
阅读全文
摘要:TCP通信的概述(上): TCP通信的概述(下): 搜索 复制
阅读全文
摘要:IP地址: IP地址:指互联网协议地址 ( Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设 备做唯一的编号。假如我们把"个人电脑"比作"一台电话"的话,那么"IP地址"就相当于"电话号码"。 IP地址分类: .IPv4∶是一个32位的二进制数,通常
阅读全文
摘要:网络通信协议: 网络通信协议∶通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时 需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和 通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信
阅读全文
摘要:打印流概述和使用: java.io.PrintStream:打印流 Printstream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。 PrintStream特点: 1.只负责数据的输出,不负责数据的读取 2.与其他输出流不同,Printstream永远不会抛出。IOExcep
阅读全文
摘要:transient关键字_瞬态关键字:static关键字:静态关键字 静态优先于非静态加戟到内存中(静态优先于对象进入到内存中) 被static修饰的成员变量不能被序列化的,序列化的都是对象 private static int age; stream. writeobject(new Person
阅读全文
摘要:对象的序列化流_ObjectOutputStream: 序列化和反序列化的时候,会抛出NotSerializableException没有序列化异常 类通过实现java.io.Serializable接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 Serializabl
阅读全文
摘要:InputStreamReader介绍&代码实现: java.io.InputstreamReader extends Reader InputStreamReader:是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。(解码:把看不懂的交成能看懂的) 继承自父类的共
阅读全文
摘要:转换流的原理: OutputStreamWriter介绍&代码实现: java.io.outputstreamlriter extends writer outputStreamwriter:是字符流通向字节流的桥梁:可使用指定的 charset将要写入流中的字符编码成字节。(编码:把能看懂的变成看
阅读全文
摘要:字符编码和字符集: 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。 按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。比如说, 按照A规则存储,同样按照A规则解析,
阅读全文
摘要:BufferedWriter字符缓冲流: java.io.Bufferedwriter extends lwriter Bufferedlwriter :字符缓冲输出流 继承自父类的共性成员方法: - void write(int c)写入单个字符。 - void write(char[] cbuf
阅读全文
摘要:BufferedInputStream字节缓冲输入流: java.io.BufferedInputstream extends Inputstream BufferedinputStream:字书缓冲输入流 继承自父类的成员方法: int read()从输入流中读取数据的下一个字节。 int rea
阅读全文
摘要:缓冲流的原理: BufferedOutputStream字节缓冲输出流: java.io.Bufferedoutputstream extends outputStream Bufferedoutputstream:字节缓冲输出流 继承自父类的共性成员方法: public void close():
阅读全文
摘要:Properties集合中的方法store: 可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储 void store(outputStream out,string comments) void store(lwriter writer, string
阅读全文
摘要:使用try_cath_finally处理流中的异常: 在jdk1.7之前使用try catch finally处理流中的异常 格式: try{ 可能会产出异常的代码 }catch(异常类变量 变量名){ 异常的处理逻辑 }finally{ 一定会指定的代码 资源释放 } public class a
阅读全文
摘要:字符输出流写数据的其他方法: - void write(char[ cbuf)写入字符数组。 - abstract void write(char[ ] cbuf, int off, int len)写入字符数组的某一部分, off数组的开始索引, er写的字符个数。 - void write(St
阅读全文
摘要:字符输出流的基本使用写出单个字符到文件: 字符输出流的使用步骤(重点): 1.创建FiLelvriter对象,构造方法中绑定要写入数据的目的地 2.使用FiLewriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程) 3.使用FiLelriter中的方法flush,把内存缓冲
阅读全文
摘要:字符输入流读取字符数据: 字符输入流的使用步骤: 1.创建FiLeReader对象,构造方法中绑定要读取的数据源 2.使用FiLeReader对象中的方法read读职文件 3.释放资源 public class zifu { public static void main(String[] args
阅读全文
摘要:使用字节流读取中文的问题: 使用字节流读取中文文件 1个中文 GEK:占用两个字节 UTF-8:占用3个字节 上代码案例: /** * 使用字节流读取中文文件 * 1个中文 * GBK:占用两个字节 * UTF-8:占用3个字节 */ public class bianma { public sta
阅读全文
摘要:字节输入流一次读取一个字节的原理: 字节输入流一次读取多个字节: 字节输入流一次读取多个字节的方法: int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 明确两件事情: 1.方法的参数byte[]的作用? 起到缓冲作用,存储每次读取到的多个字节 安数组的长
阅读全文
摘要:字节输入流InputStream类&FileOutputStream类介绍: java.io.Inputstream:字节输入流 此抽象类是表示字节输入流的所有类的超类。 定义了所有子类共性的方法: int read()从输入流中读取数据的下一个字节。 int read(byte[ ] b)从输入流
阅读全文
摘要:字节输出流写多个字节的方法: - public void write(byte[] b):将b.Length字节从指定的字节数组写入此输出流。 - public void write(byte[] b, int off, int len):从指定的字节数组写入len字节,从偏移量off开始输出到此输
阅读全文
摘要:字节输出流写入数据到文件: 字节输出流的使用步骤(重点)∶ 1.创建一个FiLeoutputstream对象,构造方法中传递写入数据的目的地 2.调用Fileoutputstream对象中的方法write,把数据写入到文件中 3.释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提供程序的效率
阅读全文
摘要:字节输出流_OutputStream类&FileOutputStream类介绍: java流的概述: java.io.OutputStream:字节输出流此抽象类是表示输出字节流的所有类的超类。定义了一些子类共性的成员方法:- public void close() :关闭此输出流并释放与此流相关联
阅读全文
摘要:IO概述(概念&分类): IO:输入/输出(Input/Output) 流:是一个种抽象的概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。 IO中的流就相当与我们日常生活中的管道,我们通过管道来把水引到用户,通过管道把石油输送到大罐.同样,我们利用流来从硬盘的文件中读
阅读全文
摘要:FileFilter过滤器的原理和使用: package Demo_Recurison; /* 在File类中有两个和ListFiLes重载的方法,方法的参数传递的就是过滤器File[j listFiles(FiLeFiLter filter) java.io.FiLeFiLter接口| File[
阅读全文
摘要:File类遍历(文件夹)目录功能: File类遍历(文件夹)目录功能String[] list();返回一个String数组,表示该File目录中的所有子文件或目录File[] listFiles();返回一个File数组,表示该File目录中的所有子文件或目录 注意: 1、list方法和listF
阅读全文
摘要:File类判断功能的方法: public boolean exists( ):此File表示的文件或目录是否实际存在。 public boolean isDirectory( ):此FiLe表示的是否为目录。 public booLean isFiLe():此FiLe表示的是否为文件。 public
阅读全文
摘要:File类构造方法: 第一个: File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例。 路径可以是以文件名结尾,也可以一是以文件夹结尾 路径可以是相对路径,也可以是绝对路径 路径可以存在也可以是不存在,创建File对象,只是把字符串路径封装为F
阅读全文
摘要:File类的静态成员变量: static string pathSeparator与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 static char pathseparatorchar与系统有关的路径分隔符。 static String separator与系统有关的凰认名称分隔符,为
阅读全文
摘要:Lambda省略格式&Lambda使用前提: Lambda使用前提: Lambda的语法非常简洁,完全没有面向对象复杂的束缚。但是使用时有几个问题需要特别注意: 1.使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。 无论是JDK内置的 Runnable 、comparator接口还是
阅读全文
摘要:编程思想转换&体验Lambda的更优写法: 编程思想: 做什么,而不是怎么做 我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而不得不创建一个对象。我们真正希望做 的事情是︰将run方法体内的代码传递给Thread类知晓。 传递一段代码—―这才是我们真正的目的。而创建对象只是受限于面
阅读全文
摘要:函数式编程思想概述: 在数学中,函数就是有输入量、输出量的一套计算方案,也就是"拿什么东西做什么事情"。相对而言, 面向对象过分强调"必须通过对象的形式来做事情”,而函数式思想则尽星忽略面向对象的复杂语法――强调做什么,而不是以什么形式做。 面向对象的思想: 做—件事情,找一个能解决这个事情的对象,
阅读全文
摘要:线程池的概念和原理: 概念: 线程池∶其实就是一个容纳多个线程的容器,其中的线程可以反复使用, 省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。 原理: 线程池的代码实现: 线程池:JDK1.5之后提供的 java.util.concurrent.Executors:线程池的工厂类,用
阅读全文
摘要:等待唤醒机制概述: 等待唤醒机制希求分析: 搜索 复制
阅读全文
摘要:Object类中wait带餐方法和notifyAll方法: 进入到Timewaiting (计时等待)有两种方式: 1.使用sLeep(Long m)方法,在毫秒值结束之后,线程睡醒进入到Runnable/BLocked状态 2.使用wait(Long m)方法, wait方法如果在瓷秒值结束之后,
阅读全文
摘要:等待唤醒案例分析: 等待唤醒案例代码实现: 等待唤醒案例:线程之间的通信 创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITIN状态(无限等待) 创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子
阅读全文
摘要:解决线程安全问题_Lock锁: 解决线程安全问题的三种方案:使用Lock锁 java.utiL.concurrent.Locks.Lock接口 lock_实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作。 Lock接口中的方法: void Lock()获取锁。 void
阅读全文
摘要:同步方法: 卖票案例出现了线程安全问题 卖出了不存在的票和重复的票 解决线程安全问题的二种方案:使用同步方法 使用步骤: 1.把访问了共享数据的代码抽取出来,放到一个方法中 2.在方法上添加synchronized修饰符 格式:定义方法的格式 修饰符 synchronized 返回值类型 方法名(参
阅读全文
摘要:匿名内部类方式实现线程的创建: 使用线程的内匿名内部类方式,可以方便的实现每个线程执行不同的线程任务操作。使用匿名内部类的方式实现Runnable接口,重新Runnable接口中的run方法∶ public static void main( String[] args) { // new Runn
阅读全文
摘要:解决线程安全问题_同步代码块: 同步代码块:synchronized关键字可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。 格式: synchronized(同步锁){ 需要同步操作的代码 } package Demo01.Sychronized; public class Runn
阅读全文
摘要:线程安全问题的概述: 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的, 而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是“葫芦娃大战奥特曼
阅读全文
摘要:创建多线程程序的第二种方式_实现Runnable接口: 采用 java.lang.Runnable也是非常常见的一种,我们只需要重写run方法即可。 步骤如下: 1.定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。 2.创建Runna
阅读全文
摘要:Thread类的常用方法_设置线程名称的方法: public string getname() :获取当前线程名称 public class Demo01setThreadName { public static void main(string[]args) { //开启多线程 My Thread
阅读全文
摘要:多线程原理_多线程内存图解: Thread类的常用方法_获取线程名称的方法: 获取线程的名称: 1.使用thread类中的方法getname() String getName() 返回该线程的名称. 2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称 static
阅读全文
摘要:创建多线程的第一种方式_创建Thread类的子类: java.lang .Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类 实现步骤: 1.创建一个Thread类的子类 2.在Thread类的子类中重写Thread类中的run方法,设嚣线程任务(开启线程要做什么?)
阅读全文
摘要:线程调度: 主线程: Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务, 实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。 Java中通过继承Thread类来创建并启动多线
阅读全文
摘要:进程概念: 进程∶是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程; 进程也是程序的一次执行过程,是系统运行程序的基本单位﹔系统运行一个程序即是一个进程从创建、运行到消亡的过程。 我们可以再电脑底部任务栏,右键 >打开任务管理器,可以查看当前任务的进程:
阅读全文
摘要:自定义异常类: 概述: 为什么需要自定义异常类: 我们说了Java中不同的异常类;分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的, 此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。 在上述代码中,发现这些异常都是IJDK内部定义好
阅读全文
摘要:异常注意事项_多异常的捕获处理: 多个异常使用捕获又该如何处理呢?1.多个异常分别处理。2.多个异常一次捕获,多次处理。 3.多个异常一次捕获一次处理。一般我们是使用一次捕获多次处理方式,格式如下: try{ 编写可能会出现异常的代码 }catch(异常类型A e){当try中出现A类型异常,就用该
阅读全文
摘要:Throwable类中3个异常处理的方法: Throwable类中定义了3个异常处理的方法string getMessage()返回此throwable 的简短描述。string tostring()返回此 throwable 的详细消息字符串。void printstackTrace()JV打印异
阅读全文
摘要:throws关键字_异常处理的第一种方式,交给别人处理: 声明异常∶将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理(稍后讲解该方式), 那么必须通过throws进行声明,让调用者去处理。 关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提
阅读全文
摘要:HashMap存储自定义类型键值: Map集合保证key是唯一的:作为key的元素,必须重写hashcode方法和equals方法,以保证key唯一 HashNap存储自定义类型键值第一种: key:String类型String类重写hashCode方法和equals方法,可以保证key唯一 val
阅读全文
摘要:Entry键值对对象: Map集合遍历键值对方式: Map集合遍历的第二种方式:使用Entry对象遍历 Map集合中的方法: Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的Set视图。 实现步骤: 1.使用Map集合中的方法entrySet(),把Map集合
阅读全文
摘要:throw关键字: 在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。 那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法, 就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。 在java中,提供了一个
阅读全文
摘要:异常的分类: java.Lang. Throwable :类是Java 语言中所有错误或异常的超类。 Exception:编译期异常,进行编译(写代码)java程序出现的问题 RuntimeException:运行期异常,java程序运行过程中出现的问题 异常就相当于程序得了一个小毛病(感冒,发烧)
阅读全文
摘要:Debug追踪: Debug追踪在java中又叫Debug调试程序 可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug 使用方式: 在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到哪里)右键,选择Debug执行程序 程序就会停留在添加的第一个断点处 执行程序:
阅读全文
摘要:Map接口中的常用方法: public v put(K key,v value)]:把指定的键与指定的值添加到Map集合中。 public v remove(object key);把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。 public v get(0bject key)
阅读全文
摘要:Map集合概述: Collection 中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。 Map 中的集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。Collection中的集合称为单列集合,Map中的集合称为双列集合。需要注意的是,Map 中的集
阅读全文
摘要:Collections集合工具类的方法_sort(List): Collections集合工具类:用来对集合进行操作,部分方法如下 public static <T> void sort(List<T> list):将集合中元素按照默认规则排序 ArrayList<String> list = ne
阅读全文
摘要:可变参数: 使用前提: 当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数。 传递的参数可以是零个,也可以是多个。 修饰符 返回值类型 方法名(参数类型...形象名) 可变参数的原理: 可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组来存储这些参数 传递的
阅读全文
摘要:HashSet存储自定义类型元素: set集合报错元素唯一 存储的元素(String,Integer,.......Student,Person....),必须重写hashCode方法和equals方法 要求: 同名同年龄的人,视为同一个人,只能存储一次 public class Persont {
阅读全文
摘要:HashSet集合存储数据的结构(哈希表): Set集合存储元素不重复的原理: //创建对象 HashSet<String> sety = new HashSet<>(); String s1 = new String("huk"); String s2 = new String("tya"); s
阅读全文
摘要:HashSet集合介绍: Set接口继承自Collection接口 Set接口的特点: 1.不允许存储重复的元素 2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历 HashSet集合:继承Set接口 HashSet特点: 1.不允许存储重复的元素 2.没有索引,没有带索引的方法,也不能
阅读全文
摘要:LinkedList集合: LinkedList集合:他是List接口的一个实现类 LinkedList集合特点: 1.底层是一个链表结构:查询慢,增删快 2.里边包含大量操作首尾元素的方法 注意:使用LinkedList集合特有的方法,不能使用多态 public void addFirst(E e
阅读全文
摘要:数据结构红黑树: 二叉树: binary tree,是每个结点不超过2的有序树( tree ) 。 简单的理解,就是一种类似于我们生活中树的结构,只不过每个结点上都最多只能有两个子结点。 二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作"左子树"和"右子树"。 List集合_介绍&
阅读全文
摘要:数据结构_数组: 数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。就像是一排出 租屋,有100个房间,从001到100每个房间都有固定编号,通过编号就可以快速找到租房子的人。 简单的说,采用该结构的集合,对元素的存取有如下的特点︰ 查找元素快:通过索引,可以
阅读全文
摘要:数据结构栈: 队列: queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。 简单的说,采用该结构的集合,对元素的存取有如下的特点∶先进先出(即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素)。例如,小火车过山洞,车头先进
阅读全文
摘要:泛型通配符: ?:代表任意的数据类型 使用方式: 不能创建对象使用 只能作为方法的参数使用 public class tongpei { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<
阅读全文
摘要:定义和使用含有泛型的方法: 定义含有泛型的方法:泛型定义在方法的修饰符和返回值类型之间 格式: 修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型)){ 方法体; } 含有泛型的方法,在调用方法的时候确定泛型的数据类型 传递什么类型的参数,泛型就是什么类型 public class fangf
阅读全文
摘要:使用泛型的好处: 创建集合对象,使用泛型好处: 1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型 2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错) 弊端:泛型是什么类型,只能存储什么类型的数据 public class fanxing { public
阅读全文
摘要:增强for循环: 增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写 是JDK1.5之后出现的新特性 collection<E>extends IterabLe<E>:所有的单列集合都可以使用增强for public interface Iterable<T>实现这个接口
阅读全文
摘要:迭代器的代码实现: public class diedai { public static void main(String[] args) { Collection<String> list = new ArrayList<>(); list.add("王印"); list.add("星际");
阅读全文
摘要:Collection集合常用功能: java.utiL.collection接口 所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法 任意的单列集合都可以使用collection接口中的方法 Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和
阅读全文
摘要:Collection集合概述: 1.集合:集合是java中提供的一种容器,可以用来存储多个数据,集合和数组既然都是容器,它们有啥区别呢? 2.数组的长度是固定的,集合的长度是可变的 3.数组中存储的同一类型的元素,可以存储基本数据类型值,集合存储的都是对象,而且对象的类型可以不一致,在开发中一般对象
阅读全文
摘要:System类&StringBuilder类: 1.currentTime()方法 作用:获取当前系统毫秒值时间 //获取一下当前系统毫秒值时间 long mils = System.currentTime();//获取系统当前毫秒时间 System.out.println(mils); 2.arr
阅读全文
摘要:StringBuilder的原理: String类: 字符串是常量:它们的值在创建之后不能更改 字符串的底层是一个被final修饰的数组,不能改变,是一个变量 进行字符串的相加,内存中就会有多个字符串,占用空间多,效率底下 private final byte[] value; StringBuil
阅读全文
摘要:Calendar类介绍_获取对象的方式: java.utiL.CaLendar类:日历类 calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR ) Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance
阅读全文
摘要:DateFormat类&SimpleDateFormat类介绍: DateFormat:是日期/时间格式化类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date悐与String对象之间进行来回转换 格式化:按照指定的格式,从Date对象转换为String对象 解析:按照执
阅读全文
摘要:毫秒值的概念和作用: 类Date:表示特定的时间,精确到毫秒 毫秒:千分之一秒 1000毫秒=1秒 特定的瞬间:一个时间点,一刹那时间 毫秒值得作用:可以对时间和日期进行计算 2099-01-03到2088-01-01 中间一共有多少天 可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为日期 把日
阅读全文
摘要:重写Object类的equals方法: Object类的equals方法默认比较的是两个对象的地址值,没有意义所以我们学要重写equals方法,比较两个对象的属性值(name,age) 对象的属性值一样好,返回true,否则返回false Objects类的equals方法: 在刚才IDEA自动重写
阅读全文
摘要:Object类的toString方法: Object 是类层次结构的根(最顶层)类.每个类都是用 Object 作为超(父)类. 所有对象(包括数组) 都实现这个类的方法 Person类默认继承了Object类,所以可以使用Object类中的toString方法 String toString()
阅读全文
摘要:接口作为方法的参数和返回值: 代码案例: 搜索 复制
阅读全文
摘要:类作为成员变量类型: 代码案例: 接口作为成员变量: 代码案例: 搜索 复制
阅读全文
摘要:匿名内部类: 如果接口的实现类(或者是父类的子类)只需要使用唯一的一次, 那么这种情况下就可以省略掉该类的定义,而改为使用【匿名内部类】。 匿名内部类的定义格式: 接口名称 对象名= new 接口名称() { //覆盖重写所有抽象方法 }; 匿名内部类的注意事项: 对格式“new接口名称()f...
阅读全文
摘要:局部内部类定义: 定义格式: 修饰符 class 外部类名称 { 修饰符 返回值类型 外部类方法名称(参数列表) { cLass 局部内部类 名称{ //.... } } } 小节一下类的权限修饰符: pubLic > protected > .(default) > private 定义一个类的时
阅读全文
摘要:成员内部类的使用: 如何使用成员内部类?有两种方式: 1.间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法。 2.直接方式,公式: 类名称对象名= new类名称(); 【外部类名称.内部类名称 对象名= new 外部类名称().new 内部类名称();】 内部类的同名变量访
阅读全文
摘要:内部类的概念与分类: 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类。 例如:身体和心·脏的关系。又如:汽车和发动机的关系。 分类: 1.成员内部类 2.局部内部类(包含匿名内部类) 成员内部类的定义:
阅读全文
摘要:final关键字用于修饰成员变量: final关键字代表最终、不可改变的。 常见四种用法: 1、可以用来修饰一个类 2.可以用来修饰一个方法 3.还可以用来修饰一个局部变量 4.还可以用来修饰一个成员变量 四种权限修饰符: Java中有四种权限修饰符: public >protected> ( de
阅读全文
摘要:final关键字用于修饰成员方法: 当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。 格式: 修饰符final返回值类型方法名称(参数列表){ //方法体 } 注意事项: 对子类、方法来说, abstract关键字和final关键字不能同时使用,因为矛盾。 fi
阅读全文
摘要:final关键字概念与四中说法: finaL关键字代表最终、不可改变的。 常见四种用法: 1.可以用来修饰一个类 2.可以用来修饰一个方法 3.还可以用来修饰—个局部变量 4.还可以用来修饰一个成员变量 final关键字用于修饰类: 当finaL关键字用来修饰一个类的时候,格式: public fi
阅读全文
摘要:对象的向下转型: 用instanceof关键字进行类型判断: 如何才能知道一个父类引用的对象,本来是什么子类? 格式:对象 instanceof 类名称 这将会得到一个boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。 代码案例: 搜索 复制
阅读全文
摘要:使用多态的好处: 对象的向上转型: 向上转型一定是安全的,没有问题的,正确的。但是也有一个弊端: 对象一旦向上转型为父类,那么就无法调用子类原本特有的内容。 解决方案:用对象的向下转型【还原】。 搜索 复制
阅读全文
摘要:多态中成员变量的使用特点: 访问成员变量的两种方式: 1.直接用过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找 2.间接用过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找 多态中成员方法的使用特点: 在多态的代码当中,成员方法的访问规则是: 看new 的是谁,就优先用谁
阅读全文
摘要:多态的概述: 引入: 多态是继封装、继承之后,面向对象的第三大特性。 生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也 是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。 定义: 多态: 是指同一行为
阅读全文
摘要:继承父类并实现多个接口: 使用接口的时候,需要注意: 1.接口是没有静态代码块或者构造方法的。 2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。 格式:public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {
阅读全文
摘要:接口的常量定义和使用: 接口当中也可以定义“成员变量”,但是必须使用public static final三个关键字进行修饰。 从效果上看,这其实就是接口的【常量】。 格式: pubLic static finaL数据类型常量名称=数据值; 备注: 一旦使用乎inal关键字进行修饰,说明不可改变。
阅读全文
摘要:接口的私有方法定义: 私有方法:使用 private 修饰,供接口中的默认方法或者静态方法调用。 私有方法:只有默认方法可以调用。 私有静态方法:默认方法和静态方法可以调用。 接口的私有方法使用: 如果一个接口中有多个默认方法,并且方法中有重复的内容,那么可以抽取出来,封装到私有方法中,供默认方法
阅读全文
摘要:接口的静态方法定义: 接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口名访问静态方法。 接口的静态方法使用: 静态与.class 文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用,代码如下: 定义接口: 定义实现类: 定义测试类: 搜索 复制
阅读全文
摘要:接口的默认方法定义: 默认方法: 接口中,有多个默认方法时,实现类都可继承使用。如果默认方法有重名的,必须重写一次。代码如下: 定义多个接口: 定义实现类: 接口的默认方法使用: 可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。 1. 继承默认方法,代码如下: 定义接口: 定义实现类:
阅读全文
摘要:接口的抽象方法定义: 抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体。该方法供子类实现使用。 代码如下: 接口的抽象方法使用: 定义接口: 定义实现类: 定义测试类: 搜索 复制
阅读全文
摘要:接口概述与生活举例: 概述: 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。 接口的定义基本格式: 接口的定义,它与定
阅读全文
摘要:抽象方法和抽象方法类的注意事项: 1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。 理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。 ⒉抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。 理解:子类的构造方法中,
阅读全文
摘要:抽象方法和抽象类格式: abstract:抽象方法: 使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。 定义格式: 代码举例: 抽象类: 如果一个类包含抽象方法,那么该类必须是抽象类。 代码举例: 抽象的使用: 继承抽象类的子类必须重写父类所有的
阅读全文
摘要:java继承的三个特点: java只支持单继承,不支持多继承 因为比如,一个子类继承了两个父类,到调用的时候 是会报错的,就好比如:老爸让你继承家庭的一些遗产,在这时你继承了两个, 在现实生活中,儿子继承父亲的遗产,后面这个如果你继承了两个类,就报错了 到底哪个才是真正的父亲,不可能另一个是你干爹吧
阅读全文
摘要:this关键字的三种用法: super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种: 1.在本类的成员方法中,访问本类的成员变量。 2.在本类的成员方法中,访问本类的另一个成员方法。 3.在本类的构造方法中,访问本类的另—个构造方法。 在第三种用法当中要注意: A. thi
阅读全文
摘要:继承中构造方法的访问特点: 1. 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。 2. 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构 造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使
阅读全文
摘要:继承中方法的覆盖重写注意事项: 注意事项: 1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。(仅代表我个人的意见) 2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。(仅代表我个人的意见) 继承中方法的覆盖重写应用场景: 搜索 复制
阅读全文
摘要:继承中成员方法的访问特点: 成员方法不重名: 如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对 应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。代码如下: 继承中方法的覆盖重写、概念与特点: 概念: 如果子类父类
阅读全文
摘要:继承中成员变量的访问特点: 成员变量不重名: 如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。代码如下: 成员变量重名: 如果子类父类中出现重名的成员变量,这时的访问是有影响的。代码如下: 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键
阅读全文
摘要:继承的概述: 继承是什么意思呢,首先继承继承,比如:父子关系吧,父类有 房子,金钱,汽车等遗产,那些遗产 之后谁来继承呢,没错当然是我们的子类啊,通俗点讲就是父勒有多少遗产我们子类就能继承多少遗产, 相当于把父类里的所有数据给了子类,再通俗一点就是在现实中儿子继承父亲的所有遗产,这就是继承 的概述
阅读全文