03 2023 档案
摘要:线程池 线程状态介绍 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程 状态被定义在了java.lang.Thread.State枚举类中,State枚举类的源码如下: publi
阅读全文
摘要:多线程 简单了解多线程 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 并发和并行 并行:在同一时刻,有多个指令在多个CPU上同时执行。 并发:在同一时刻,有多个指令在单个CPU上交替执行。 进程和线程 进程:是正在运行的
阅读全文
摘要:转换流 字符编码和字符集 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样
阅读全文
摘要:缓冲流 作为IO流的入门,我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。 概述 缓冲流,也叫高效流,是对4个基本的File
阅读全文
摘要:IO概述 什么是IO 生活中,当编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当电脑上插入一个U盘,可以把一个视频,拷贝到电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。 我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入
阅读全文
摘要:File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 public File(String p
阅读全文
摘要:异常 异常概念 异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是
阅读全文
摘要:方法引用 体验方法引用 方法引用的出现原因 在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿参数做操作 那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑呢?答案肯定是没有必要 那我们又是如何使用已经存在的方案的
阅读全文
摘要:Stream流 体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得到的集合 原始方式示例代码 public class MyStre
阅读全文
摘要:Map集合 Map集合概述和特点 Map集合概述 interface Map<K,V> K:键的类型;V:值的类型 Map集合的特点 双列集合,一个键对应一个值 键不可以重复,值可以重复 Map集合的基本使用 public class MapDemo01 { public static void m
阅读全文
摘要:package com.zhao.collectionunti; import java.util.ArrayList; import java.util.Collections; public class CollectionsDemo1 { public static void main(Str
阅读全文
摘要:案例需求 存储学生对象并遍历,创建TreeSet集合使用无参构造方法 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序 实现步骤 使用空参构造创建TreeSet集合 用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的 自定义的Student类实现Compa
阅读全文
摘要:泛型 泛型概述 泛型的介绍 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: <E> <T> <类型1,类型2…>: 指定多种
阅读全文
摘要:List集合的实现类 List集合子类的特点 ArrayList集合 底层是数组结构实现,查询快、增删慢 LinkedList集合 底层是链表结构实现,查询慢、增删快 LinkedList集合的特有功能 特有方法 方法名 说明 public void addFirst(E e) 在该列表开头插入指定
阅读全文
摘要:数据结构 数据结构之栈和队列 栈结构 先进后出 队列结构 先进先出 数据结构之数组和链表 数组结构 查询快、增删慢 队列结构 查询慢、增删快 二叉 二叉树的特点 二叉树中,任意一个节点的度要小于等于2 节点: 在树结构中,每一个元素称之为节点 度: 每一个节点的子节点数量称之为度 二叉树结构图 二叉
阅读全文
摘要:Collection集合 数组和集合的区别【理解】 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 public class CollectionDemo1
阅读全文
摘要:package com.zhao.lambdademo; public class LambdaDemo1 { public static void main(String[] args) { //正常的匿名内部类写法 /*Swimming swim=new Swimming() { @Overri
阅读全文
摘要:package com.zhao.arraydemo; import java.util.Arrays; public class ArrayDemo1 { public static void main(String[] args) { int[] arr={10,2,55,23,24,100};
阅读全文
摘要:正则表达式 正则表达式的概念及演示 在Java中,我们经常需要验证一些字符串,例如:年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,我们可以验证用户输入的字符串是否匹配这个规则。 先看一个不使用正则表达式验证的例
阅读全文
摘要:包装类 概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下: 基本类型 对应的包装类(位于java.lang包中) byte Byte shor
阅读全文
摘要:Date类 Date概述 java.util.Date`类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,我们重点看以下两个构造函数 public Date():从运行程序的此时此刻到时间原点经历的毫秒值,转换成Date对象,分配Date对象
阅读全文
摘要:引入 首先我们来分析一下如下程序的执行结果: public class BigDecimalDemo01 { public static void main(String[] args) { System.out.println(0.09 + 0.01); } } 这段代码比较简单,就是计算
阅读全文
摘要:Object类 概述 tips:重点讲解内容 查看API文档,我们可以看到API文档中关于Object类的定义如下: Object类所在包是java.lang包。Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类;换句话说,该类所具备的方法,其他
阅读全文
摘要:Math类 概述 tips:了解内容 查看API文档,我们可以看到API文档中关于Math类的定义如下: Math类所在包为java.lang包,因此在使用的时候不需要进行导包。并且Math类被final修饰了,因此该类是不能被继承的。 Math类包含执行基本数字运算的方法,我们可以使用Math类完
阅读全文
摘要:System类 概述 查看API文档,我们可以看到API文档中关于System类的定义如下: System类所在包为java.lang包,因此在使用的时候不需要进行导包。并且System类被final修饰了,因此该类是不能被继承的。 System包含了系统操作的一些常用的方法。比如获取当前时间所对应
阅读全文
摘要:概述 匿名内部类 :是内部类的简化写法。他是一个隐含了名字的内部类。开发中,最常用到的内部类就是匿名内部类了。 格式 new 类名或者接口名() { 重写方法; }; 包含了: 继承或者实现关系 方法重写 创建对象 所以从语法上来讲,这个整体其实是匿名内部类对象 什么时候用到匿名内部类 实际上,如果
阅读全文
摘要:概述 什么是内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。可以把内部类理解成寄生,外部类理解成宿主。 什么时候使用内部类 一个事物内部还有一个独立的事物,内部的事物脱离外部的事物无法独立使用 人里面有一颗心脏。 汽车内部有一个发动机。 为了实现更好的封装性。 内
阅读全文
摘要:概述 我们已经学完了抽象类,抽象类中可以用抽象方法,也可以有普通方法,构造方法,成员变量等。那么什么是接口呢?接口是更加彻底的抽象,JDK7之前,包括JDK7,接口中全部是抽象方法。接口同样是不能创建对象的。 定义格式 //接口的定义格式: interface 接口名称{ // 抽象方法 } /
阅读全文
摘要:父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话说,父类可能知道子类应该有哪个功能,但是功能具体怎么实现父类是不清楚的(由子类自己决定),父类只需要提供一个没有方法体的定
阅读全文
摘要:饿汉设计模式是在一开始就用static final修饰并且随着类加载就已经创建出的对象,是天生线程安全,但是存在对象未被使用的情况造成内存浪费。 懒汉设计模式是线程不安全的,需要通过synchronized关键字来进行线程安全处理。 package com.zhao.singleinstance;
阅读全文
摘要:概述 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。 如果有一个方法我不想别人去改写里面内容,该怎么办呢? Java提供了final 关键字,表示修饰的内容不可变。 final: 不可改变,最终的含义。可以用于修饰类、方法和变量。 类:被修饰的类,不能被继承。 方法:被
阅读全文
摘要:权限修饰符 在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限,我们之前已经学习过了public 和 private,接下来我们研究一下protected和默认修饰符的作用。 public:公共的,所有地方都可以访问。 protected:本类 ,本包,其
阅读全文
摘要:为什么要转型 多态的写法就无法访问子类独有功能了。 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥有,而父类没有的方法。编译都错误,更别说运行了。这也是多态给我们带来的一点"小麻烦"。所以,想要调用子类特有的方法,必须做向下转型。 回顾基本数据类
阅读全文
摘要:多态的形式 多态是继封装、继承之后,面向对象的第三大特性。 多态是出现在继承或者实现关系中的。 多态体现的格式: 父类类型 变量名 = new 子类/实现类构造器; 变量名.方法名(); 多态的前提:有继承关系,子类对象是可以赋值给父类类型的变量。例如Animal是一个动物类型,而Cat是一个猫类型
阅读全文
摘要:编写父类 package com.zhao.test; //父类 public class Employee { private String empId; private String name; private double salary; public String getEmpId() {
阅读全文
摘要:假如多个类中存在相同属性和行为时,我们可以将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。 其中,多个类可以称为子类,单独被继承的那一个类称为父类、超类(superclass)或者基类。 继承的含义 继承描述的是事物之间的所属关系,这种关系是:is-a 的关系
阅读全文
摘要:package com.zhao.a02StaticDemo; public class Student { private String name; private int age; private String gender; public String getName() { return n
阅读全文
摘要:被static修饰的变量与方法被称为静态变量与静态方法: 1.静态变量被该类的所有对象共享使用 2.被static修饰的属性优先于对象的存在 3.static与this关键字不能共存。在静态方法中不能直接调用非静态方法 4.被static修饰的属性可以通过类名直接访问 5..静态方法随着类的加载而被
阅读全文
摘要:学生管理系统实现步骤 案例需求 针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改 查看学生
阅读全文
摘要:
package com.zhao.test2; public class Phone { private String logo; private Integer price; public Phone() { } public Phone(String logo, Integer price) {
阅读全文

摘要:集合和数组的优势对比: 长度可变 添加数据的时候不需要考虑索引,默认将数据添加到末尾 1.1 ArrayList类概述 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ArrayList集合的特点 长度可以变化,只能存储引用数据类型。 泛型的使用 用于约束集合中存储元素的数据
阅读全文
摘要:
第一种:用查表法 package com.zhao.stringtest; import java.util.Scanner; public class Test8Case1 { public static void main(String[] args) { Scanner sc=new Scan
阅读全文

摘要:StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。 JDK8出现的 package com.zhao.stringdemo; import java.util.St
阅读全文
摘要:StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。 package com.zhao.stringdemo; public class StringDemo2 { public static void main(String[] args) { //构造方法的方式得到对象
阅读全文
摘要:package com.zhao.stringtest; public class Test5 { //.replace()方法替换词汇 public static void main(String[] args) { String talk="你TMD玩的也太SB了,真是个GDX!"; //定义一
阅读全文
摘要:package com.zhao.stringtest;public class Test4 { //手机号屏蔽中间四位 //subString(int beginIndex,int endIndex)方法返回中间值,左包右不包 //subString(int beginIndex)方法返回索引开始
阅读全文
摘要:package com.zhao.stringtest; import java.util.Scanner; public class Test3 { //金额转换 //查表法 public static void main(String[] args) { Scanner sc=new Scann
阅读全文
摘要:package com.zhao.stringtest; import java.util.Scanner; public class test2 { //键盘录入一个字符串,统计该字符串中大写字母,小写字母,数字字母出现的次数 public static void main(String[] ar
阅读全文
摘要:==号的作用 比较基本数据类型:比较的是具体的值 比较引用数据类型:比较的是对象地址值 package com.zhao.stringdemo; public class StringDemo2 { public static void main(String[] args) { //构造方法的方式
阅读全文
摘要:String类概述 String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包 String类的特点 字符串不可
阅读全文
摘要:定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。 学生的属性:学号,姓名,年龄。 要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。 要求2:添加完毕之后,遍历所有学生信息。 package com.zhao.test4; public c
阅读全文