
Java
文章平均质量分 54
小飞鱼蜜尔
带学生
展开
-
SpringBoot入门
SpringBoot入门搭建创建Maven项目(默认项目,无需添加web支持)导入SpringBoot起步依赖(版本别太高)<!--父工程--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <ve原创 2022-01-23 21:50:41 · 354 阅读 · 0 评论 -
浅谈JVM
浅谈JVMJVM的位置装在操作系统上,相当于一个软件(用C写的),来跑Java程序JVM的体系结构先将编写的.java文件通过javac命令编译为Class File,然后进入ClassLoader类加载器用于加载Class文件,初始化得到Class对象,该对象即可用于new实例化对象。分为:启动类(根)加载器(rt):获取不到,可能含有其他语言代码(上面还有虚拟机再带的加载器)扩展类加载器(Ext)应用程序加载器(App)双亲委派机制即上面三个加载器原创 2021-08-02 19:08:53 · 96 阅读 · 0 评论 -
注解和反射
注解和反射注解annotation概述:对程序做出解释并可被编译器读取,以@注释名的形式存在,还可添加参数值。可附加在包、类、方法、属性上面,为其增加辅助信息。内置注解@Override:表示打算重写超类中的方法@Deprecated:该元素不推荐使用,表示已过时(元素上会划横线)@SuppressWarnings:抑制编译时的警告信息元注解:负责注解其他注解,分别有@Target,描述注解的使用范围@Retention,描述注解生命周期即有效范围(source源码<c原创 2021-08-01 19:00:49 · 133 阅读 · 0 评论 -
Java操作数据库
JDBC概述:Java数据库连接,即使用Java语言操作数据库。本质为一套操作所有关系型数据库的接口,各个厂商去实现这套接口,提供数据库驱动jar包。我们可以使用其编程,真正执行的代码时驱动jar包中的实现类。实现://1.导入驱动jar包//复制jar包到项目的libs目录下,点开右键后选择Add As Library//2.注册驱动Class.forName("com.mysql.jdbc.Driver");//3.获取数据库连接对象Connection conn = Drive原创 2021-07-30 12:08:18 · 132 阅读 · 0 评论 -
MySQL快速入门3
事务概述:若一个包含多个步骤的业务操作被事务管理,那么这些操作要么同时成功,要么同时失败。操作流程:开启事务:start transaction;回滚:rollback;提交:commit;事务提交方式自动提交:一条DML增删改语句会自动提交一次事务,MySQL属于自动提交手动提交:即上面的操作流程,Oracle默认手动修改默认提交方式:查看:select @@commit;#0代表手动提交,1代表自动设置:set @@commit = 0/1;事务的四大特性原创 2021-07-29 10:24:39 · 98 阅读 · 0 评论 -
MySQL快速入门2
MySQL多表操作多表之间的关系分类:一对一、一对多、多对多一对多实现:在多的一方建立外键,指向一的一方的主键多对多:借助第三张中间表,至少包含两个字段分别指向两张表的主键,并采用联合主键primary key(id1,id2),一对一:直接放在一张表里就行,少见多表查询笛卡尔积:两个集合的所有组成情况,多表查询即将两张表放到一起看,组合后会产生无用的数据,我们将对其进行消除。内连接查询查询逻辑:从哪些表中查询数据条件是什么(一般看外键)查询哪些字段语法格式:s原创 2021-07-28 23:26:55 · 82 阅读 · 0 评论 -
MySQL快速入门1
MySQL指令启动:net start mysql(管理员方式进命令行)登录:-uroot -p123456(或者p后回车输密码别人看不到)退出:exit 关闭服务:net stop mysqlSQL通用语法结构化查询语言单行或多行书写,分号结尾可用空格和缩进,不区分大小写(建议关键字大写)三种注释--(空格–)# mysql特有/* */ 多行SQL分类目录结构:数据库–>表–>数据记录DDL:定义操作数据库、表DML:增删改表中的原创 2021-07-28 23:23:28 · 85 阅读 · 0 评论 -
缓冲流,转换流,序列化流
缓冲流概述:高效流,对四个基本流的增强,以Buffered开头。在创建流对象时,会创建一个内置的缓冲区数组来进行一次读写,以减少IO次数。构造方法BufferedInputStream(InputStream in)创建一个缓冲输入流并保存其参数,即输入流 in。可使用父类成员方法如read。BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。使用步骤:创建输出流对原创 2021-04-19 22:37:12 · 111 阅读 · 0 评论 -
Properties属性集合
Properties属性集合概述:java.util.Properties集合extends Hashtable<K,V> implements Map<K,V>,Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。双列集合,属性列表中每个键及其对应值都是一个字符串。是唯一与IO流结合的集合。常用IO方法void store(Writer writer, String comments)将此 Properties 表中的属性列表原创 2021-04-19 22:35:12 · 113 阅读 · 0 评论 -
Java之IO字符流
IO字符流概述:以字符为单位读写数据,专门处理文本文件。字符输入流Readerint read()读取单个字符,可用char()将对应字节强转为字符,用法与字节输入流类似。int read(char[] cbuf)将字符读入数组,用String(char[] value)将字符数组转为字符串。FileReader文件字符输入流extends InputStreamReader extends Reader构造方法:FileReader(File file/String fileN原创 2021-04-16 22:33:27 · 87 阅读 · 0 评论 -
Java之IO字节流
IO字节流概念:流:数据(字节或字符),1个字符=2个字节,1个字节=8个二进制位。输入:把硬盘中的数据读取到内存中使用输出:把内存中的数据写入到硬盘中保存字节输出流概述:java.io.OutputStream,此抽象类是表示输出字节流的所有类的超类。主要包含write(写入),flush(刷新),close(关闭)三种方法,其子类FileOutputStream为文件字节输出流,主要构造方法有:FileOutputStream(File file)创建一个向指定 File 对象表原创 2021-04-15 21:21:01 · 97 阅读 · 0 评论 -
Java中的File类
File类概述:java.io.File,是文件和目录路径的抽象表示,主要用于文件和目录的创建以及查找、删除操作。路径:绝对路径:是一个完整的路径,以盘符开始。相对路径:是一个简化的路径,不用书写当前项目根目录。注意:路径不区分大小写,反斜杠是转义字符,两个代表一个。静态成员变量static String pathSeparator与系统有关的路径分隔符,Windows:分号,linux:冒号static String separator与系统有关的默认名称分隔符,W原创 2021-04-07 22:02:25 · 169 阅读 · 1 评论 -
线程池与Lambda表达式
等待唤醒机制计时等待(Timed Waiting)调用静态的sleep(long millis)方法,可用于单线程。与锁无关,线性睡眠到期自动苏醒,返回到Runnable(可运行)或阻塞状态。锁阻塞状态(Blocked)为某个线程争夺CPU执行权的过程,,成功后可运行。无限等待(Waiting)拥有对象监视器的线程在调用waiting()方法后进入无限等待状态,直到其他在该锁对象上的线程调用notify()方法将其唤醒。两者均为Object类方法。wait(long m)同slee原创 2021-04-07 21:58:48 · 161 阅读 · 1 评论 -
线程实现方式
线程相关概念并发:两个或多个事件在同一时间段发生,任务交替执行并行:两个或多个事件在同一时刻发生,任务同时执行进程:指内存中运行的应用程序,进程是程序的一次执行过程线程:进程中的一个执行单元,负责进程中程序的执行,一个进程中至少有一个线程,也可为多线程创建多线程程序方式一:创建Thread类的子类Thread类概述:java.lang.thread,线程类,虚拟机允许并发运行多个线程。步骤:创建一个Thread类的子类子类中重写类中run方法,设置线程任务在主线程中创建子类对象原创 2021-04-03 12:35:58 · 88 阅读 · 0 评论 -
Java中的异常
异常概述:程序在执行中遇到非正常情况(非语法错误)导致JVM停止运行。异常本身是一个类,产生异常就是创建异常对象并抛出,Java中处理异常的方式是中断。异常体系异常机制本质是帮助我们找出程序中的问题,根类是java.lang.Throwable,其下两个子类是Error和Exception,前者必须修改代码程序才能继续执行,后者是由于使用不当导致,可以避免。Exception一般指编译期异常,指代码编译时出现的问题,而它的特殊子类RuntimeException指运行期异常。异常处理常用关键字:t原创 2021-04-01 17:53:30 · 101 阅读 · 0 评论 -
Collections集合工具类
Collections集合工具类常用方法public static <T> boolean addAll(Collection<T> c,T...elements)向集合中批量添加元素public static void shuffle(List<?> list)打乱集合顺序public static <T> void sort(List<T> list)将集合中元素按照默认规则排序,默认为升序。注意:被排序集合中原创 2021-03-28 00:34:49 · 130 阅读 · 0 评论 -
Java集合之Set
Set集合概述:java.util.Set接口是Collection的子接口,与其方法基本一致,相对较为严格。特点:不允许储存重复的元素没有索引,不能使用普通for循环不重复原理:Set集合在调用add方法存储元素时,会先调用其hasCode方法获取元素的哈希值,若无重复现象则存入集合,若有与其哈希值重复的元素再调用equals方法比较两者是否相同,返回false则存入。实现类HasSet集合概述:储存元素不可重复且无序,底层的实现是HasMap集合的支持。根据对象的哈希值确定原创 2021-03-27 23:46:59 · 87 阅读 · 0 评论 -
Java集合之List
List集合概述:java.util.List接口继承自Collection接口的子接口,是单列集合的重要分支。特点:元素存取有序带索引,可通过带索引的方法精确操作元素集合中可以有重复元素常用方法void add(int index, E element)在列表的指定位置插入指定元素(可选操作),原位置上的元素后移。E get(int index)返回列表中指定位置的元素。E remove(int index)移除列表中指定位置的元素(可选操作)。E set(i原创 2021-03-27 17:21:40 · 116 阅读 · 0 评论 -
Java中的泛型
泛型概述:泛型是一种未知的数据类型,在创建对象时确定类型。例如E e:Element 元素和T t:Type类型,也可以看作一个数据变量,用来接收数据类型。创建集合对象时使用泛型通过对元素类型的约束可以规避掉后面类型转换的麻烦,若没有泛型约束,则默认为Object对象,可以存放任意类型的数据,由于多态的弊端无法调用该元素类型特有的方法,需向下转型且可能会引发异常。定义含有泛型的类只需在类名后跟上<E>,将类型不确定的成员变量类型也改为<E>,则其默认类型就为Object。在原创 2021-03-26 21:32:35 · 98 阅读 · 0 评论 -
Java集合之Map
Map集合概述:java.util.Map<K,V>接口,双列集合,一个元素包含两个值(key,value)。特点:key和value的类型可以相同也可以不同。key不允许重复,value可以。key和value是一一对应的。一个映射不能包含重复的键,每个键最多只能映射到一个值。HashMap实现类概述:java.util.HashMap<K,V>,存储数据采用哈希表结构,查询速度快,但不能保证元素的存取顺序。LinkedHashMap类是HashMap类的子类原创 2021-03-20 00:03:43 · 124 阅读 · 1 评论 -
Collection集合
Collection集合概述:位于java.util包中,是层次结构中的根接口。与数组的区别:数组的长度使固定的,集合的长度是可变的。数组中储存的是同一类型的元素,可以是基本类型;而集合中存储的都是对象,且对象类型可以不一致。集合框架Collection接口常用方法注意:顶层方法,所有子类(实现类)均可使用。boolean add(E e)把对象添加到当前集合中void clear()移除此 collection 中的所有元素boolean contains(Obj原创 2021-03-17 19:21:43 · 92 阅读 · 0 评论 -
Java常用API之StringBuilder类和包装类
StringBuilder类概述:java.lang.StringBuilder类,长度可变的字符缓冲区,可提高字符串操作效率。构造方法StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。成员方法StringBuilder append(···)添加任意类型数据的字符串形式,并返回当前对象本身(即调用该方法的对象,在其原地址进行操作)原创 2021-03-16 20:45:29 · 159 阅读 · 0 评论 -
Java常用API之Calendar类和System类
Calendar类概述:java.util.Calendar日历类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,还提供了操作日历字段的方法。一般通过静态类方法 getInstance(而非子类)来获得此类型的一个子类对象。static Calendar getInstance()使用默认时区和语言环境获得一个日历。 例:Calender c = Calender.getInstance(),此对象中包含各种日历字原创 2021-03-16 19:25:34 · 179 阅读 · 0 评论 -
Java常用API之Object类和Date类
Object类概述:java.lang.Object类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。成员方法String toString()作用:返回对象的字符串表示,默认打印对象的地址值,在自己定义的类中可根据需要重写该方法(jdk自带返回属性值)。p.toString();boolean equals(Object obj)作用:返回布尔值判断调用此方法的对象是否与传入的参数对象的地址值相等。p.equals(o原创 2021-03-16 19:23:30 · 149 阅读 · 0 评论 -
Java之内部类
内部类含义:一个类内部包含另外一个类。分类:成员内部类和局部内部类(匿名内部类)成员内部类注意:内用外,随意访问;外用内,需内部类对象。.class文件命名:外部$内部.class调用方式:间接:在外部类的方法中通过内部类对象调用内部类方法,在main方法中只调用外部方法。直接:在main方法中直接new内部对象,外部类.内部类 对象名 = new 外部类().new 内部类();重名问题:在内部类方法中访问重名的外部类成员变量,外部类.this.变量名。局部内部原创 2021-03-14 17:52:15 · 90 阅读 · 0 评论 -
Java关键字及权限修饰符
static关键字作用凡是用了static关键字的内容不再属于对象自己,而是属于整个类,类中所有对象共用一份。因此直接对类.成员赋值即可。如果没有static关键字,那么必须首先创建对象,然后通过对象调用它;如果有static关键字修饰,那么不需要创建对象,可以直接通过类名.的方式调用成员。注意静态不能直接访问非静态。静态方法中不能用this。静态代码块形式public class 类名(){ static{ //内容 }}原创 2021-03-13 22:02:54 · 130 阅读 · 0 评论 -
Java中的多态
多态含义:一个对象具有多个类型的形态。多态性体现:父类引用(左侧)指向子类对象(右侧)。格式:父类名称 对象名 = new 子类名称();//继承实现接口名称 对象名 = new 实现类名();//接口实现多态对象访问成员变量:直接通过对象名称访问,看等号左边的引用类型是谁,优先用谁,没有则向上找。间接通过成员方法访问,看该方法属于谁优先用谁,子类覆盖重写的父类方法优先,否则向上找。访问成员方法:new的是谁就优先用谁,没有则向上找。编译看左(方法不属于左边会报错),运行原创 2021-03-13 21:17:20 · 133 阅读 · 0 评论 -
Java之接口
接口含义:接口是一种引用数据类型,是多个类的公共规范,最重要的是其中的抽象方法。格式:换了关键字后,生成的字节码文件仍然是.java--->.class。public interface 接口名{ //接口内容}接口中可以包含的内容有:常量 //java7抽象方法默认方法 //java8静态方法私有方法 //java9接口使用步骤接口不能直接new,必须有一个实现类来实现该接口。public class 实现类名称 implem原创 2021-03-11 17:16:39 · 111 阅读 · 0 评论 -
继承回顾
继承回顾(共性抽取)作用子类可以拥有父类的内容,也可以有自己专有的内容。从而达到代码复用的效果。子类定义的格式:public class 子类名 extends 父类名{}。重名情况分析在父子类的继承关系中,如果成员变量重名,则有两种访问方式:直接通过子类对象访问:创建对象时等号左边是谁,就优先用谁的变量,没有则向上找。(从子到父)间接通过成员方法访问成员变量:该方法属于谁,就优先用谁的变量,没有则向上找。成员方法重名:创建的对象是谁,即new 的右边,就优先用谁原创 2021-03-11 17:14:54 · 86 阅读 · 0 评论 -
String类与Random类
String类字符串的内容是常量。程序中直接写上的双引号字符串储存在字符串常量池中。对于基本类型,==是进行数值的比较;对于引用类型,==是进行地址值的比较。常用方法字符串内容的比较public boolean equals(Object obj){}//参数为要进行比较多的字符串对象public boolean equalsIgnoreCase(String str){}//忽略字母大小写注意:equals方法具有对称性,但若有常量字符串推荐把它写在点前面,放置空指针异常。与获取相关原创 2021-03-10 15:14:28 · 254 阅读 · 0 评论 -
Arrays和Math工具类
Arrays工具类内含关于数组的常见静态方法。public static String toString(数组){}:把参数数组变成字符串,[元素1, 元素2, 元素3]public static void sort(数组):按照默认升序对数组元素进行排序,直接对原数组做变换。注意:数组元素类型可以是数值或字母,若为自定义类型,则需要有comparable或comparator接口的支持。快捷键:chars.forr 倒序遍历,r是reverse的缩写。Math工具类提供了大量与原创 2021-03-10 15:13:20 · 78 阅读 · 0 评论 -
ArrayList集合与包装类
对象数组创建:类名[] 数组名 = new 类名[数组长度];赋值:数组名[n] = 对象名;ArrayList集合特点:与数组不同,集合长度可以随意改变。形式:ArrayList<E>右边尖括号里的E为泛型,代表集合中所有元素的引用类型。ArrayList<E> 集合名称 = new ArrayList<>();//创建集合,直接打印得到中括号而非地址集合名.add(E类型的数据);//向集合中添加数据集合常用方法添加元素,参数类原创 2021-03-09 09:38:41 · 249 阅读 · 0 评论 -
封装回顾(类的介绍和使用)
封装回顾(类的介绍和使用)this关键字当方法的局部变量和类的成员变量重名时,会根据就近原则优先使用局部变量(参数),使用this.成员变量可以区分本类中成员变量。在方法中使用。get与set使用有参构造方法可对成员变量进行初始化,只需在new对象是往类后面的括号中填上初始化值。但如需改变对象的成员变量内容,还需调用setXxx方法。对于基本类型的boolean值,Getter方法要写成isXxx的形式。一个标准的类 Java Bean(Alt+Insert)所有成员变量都要使用原创 2021-03-09 09:35:23 · 81 阅读 · 0 评论 -
instanceof,static,抽象类,接口及父类引用指向子类对象详解
instanceof作用:判断一个对象是否为一个类或其子类的实例,或是其接口的实现类实例,若为真返回布尔值true,否则为false。多用于强制转换前的关系判断。形式:boolean result = 对象 instanceof 类名;注意:若对象不能转换成右边的类,则编译器报错。对象不能是基本类型。对象为null时为false。static类中的静态变量可直接用类名去访问,当前类中的静态方法也可以直接用类名在主启动类中调用。类中的普通方法或静态方法可以直接调用静态方法,因为原创 2021-02-25 23:05:56 · 551 阅读 · 0 评论 -
Java三大特性,封装、继承及多态
Java三大特性封装程序设计要追求:“高内聚”,类的内部数据操作细节自己完成,不允许外部干涉。“低耦合”,仅暴露少量的方法给外部使用。封装多为属性封装。属性私有,用private关键字修饰的变量即为私有属性,不能通过对象.属性去访问。此时,我们要通过外部的get/set方法去操作属性,来获取对象的属性值或者为其属性赋值。形式://get:获得这个数据public 类型 get属性名(){ //属性名首字母大写,驼峰 return this.属性名;}对象名.get属性名()原创 2021-02-25 16:14:11 · 106 阅读 · 0 评论 -
Java构造器详解
无参构造器作用:一个空的类也会存在一个无参构造器,构造器本质上是一个用来初始化的方法,使用new关键字实质上就是在调用构造器。形式:和类名相同,无返回值且不为void。public 类名(){ }有参构造器作用:当需要人为地初始赋值时,就要进行有参构造,此时默认构造被取代,需要显式定义,否则new对象时会报错。有参构造后就可以在new时根据参数列表调用相应的构造方法,即重载。形式:有形参变量String name;public 类名(String str){原创 2021-02-25 16:11:18 · 201 阅读 · 0 评论 -
Java面向对象之类与对象的创建
面向对象面向过程:线性思维,按步骤来。面向对象:分类思维,适合多人开发协作。OOP本质:以类的形式组织代码,用对象封装数据。类是对象的模板。抽象:把共同点抽取出来形成一类。三大特性:封装,继承,多态。宏观面向对象,构造框架,微观上面向过程,处理细节。类与对象的创建类是一种抽象的数据类型,是对一类事物的整体描述。类由属性(静态)和方法(动态)构成。抽象的类实例化后会返回一个自己的对象。new 类名();对象是抽象概念的具体实例,一些具体的属性和行为也是通过对象来添加和进行。类原创 2021-02-25 16:07:44 · 236 阅读 · 1 评论 -
Java多维数组,稀疏数组,Arrays类及排序
数组1.形式数组类型:类型 int[]声明:类型+变量名,int[] nums创建:分配数组长度,nums = int[10],数组对象是在堆中的。总结:int[] nums = new int[10]; 或 int nums[] = new int[10];,多用前者。2.操作获取数组长度:nums.length,多用与循环判断条件。通过索引赋值,多用for循环。下标的合法区间是(0,length-1),否则会有数组下标越界异常,提示ArrayIndexOutOfBo原创 2021-02-12 15:23:31 · 131 阅读 · 0 评论 -
Java方法详解
方法命名:首字母小写,驼峰规则。语法结构:修饰符:public static,公共的、类变量。返回值类型:若无返回值,类型则为void。修饰符 返回值类型 方法名(参数类型 形参名){ 方法体 (return 返回值;) /*一般写到最下面}原子性:只实现一个功能。尽量使main方法保持简洁,其位于最底层被虚拟机调用。一些公共模块都提取到外面,在main方法中进行调用。Java是值传递而非引用传递。参数类型形参:在方法被调用时用于接受外部数据。实参:调用方原创 2021-02-11 23:38:04 · 148 阅读 · 2 评论 -
获取用户输入的Scanner类及Java流程控制之乘法表
流程控制学习Scanner类作用:可获取用户的输入实现人和程序的交互。基本语法:Scanner scanner = new Scanner(System.in);用于接收用户的输入并封装为scanner对象。String str = scanner.next;接受并等待用户输入完毕。获取输入字符串方法:next:以空格为分隔符,只保留空格前的内容。nextLine:以回车为结束符,可获得空白。判断是否还有输入数据:hasNext hasNextlLine//判原创 2021-02-10 10:52:19 · 170 阅读 · 2 评论