![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 74
JAVA学习笔记
北航_Curry
记录、分享学习java后端的一些总结笔记和心得
展开
-
java——反射
一、反射概述二、理解Class类1.类加载的过程首先程序通过javac命令,编译成字节码文件.class 然后使用java命令运行.class文件,相当于把字节码文件加载进内存。这个过程就是类加载的过程。 加载到内存中的类,我们叫做运行时类,运行时类是Class类的对象。(体现了万物皆对象,类也是对象) 换句话说,Class类的对象就是运行时类三、获取Class类的实例的四种方式——Class类的实例其实就是运行时类public class ...原创 2021-01-01 16:39:12 · 449 阅读 · 0 评论 -
Properties配置文件的加载方式
一、配置文件的创建 在当前module下新建一个file文件,后缀加上 .properties,表明是配置文件在配置文件中记着把这个√勾上,保证中文不会出现乱码二、读取配置文件的两种方式import java.io.FileInputStream;import java.io.InputStream;import java.util.Properties;//读取配置文件的两种方式public class HTproperties { ...原创 2020-12-30 15:28:30 · 427 阅读 · 0 评论 -
java——对象流
一、对象流概述对象流是处理流的一种,涉及到两个类:ObjectInputStream 和 ObjectOutputStream ObjectInputStream:将来源于硬盘或者其他网络的二进制的对象或基本数据类型的数据读入到内存(程序中),注意这的内存指的是电脑8GB的那个内存 ObjectInputStream也就是将二进制的数据读取为内存中的对象,也称为反序列化的过程 ObjectOutputStream:将程序(内存)中的对象或基本数据类型以二进制的形式写到硬盘或其他网络中..原创 2020-12-26 15:01:44 · 2113 阅读 · 0 评论 -
java——缓冲流实现文本的复制
import com.sun.org.apache.bcel.internal.generic.NEW;import java.io.*;public class HTIO { public static void main(String[] args) throws IOException{ File srcFile = new File("C:\\Users\\Administrator\\Desktop\\ht.txt"); File desFile.原创 2020-12-26 10:35:47 · 233 阅读 · 0 评论 -
java——处理流之缓冲流的使用
一、大纲1、流的分类根据操作数据单位:字节流、字符流 根据数据流向:输入流、输出流 根据流的角色:节点流和处理流2. 流的体系结构(只说重要的流)抽象基类 节点流(文件流) 缓冲流(处理流的一种) InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedoutputStream Reader FileReader B原创 2020-12-25 22:59:01 · 268 阅读 · 0 评论 -
java——常见IO流的使用——FileInputStream类、FileOutputStream类
一、大纲1、流的分类根据操作数据单位:字节流、字符流 根据数据流向:输入流、输出流 根据流的角色:节点流和处理流2. 流的体系结构(只说重要的流)抽象基类 节点流(文件流) 缓冲流(处理流的一种) InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedoutputStream Reader FileReader B原创 2020-12-25 21:37:07 · 320 阅读 · 0 评论 -
java——常见IO流的使用——FileWriter类
一、大纲1、流的分类根据操作数据单位:字节流、字符流 根据数据流向:输入流、输出流 根据流的角色:节点流和处理流2. 流的体系结构(只说重要的流)抽象基类 节点流(文件流) 缓冲流(处理流的一种) InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedoutputStream Reader FileReader B原创 2020-12-25 20:15:18 · 283 阅读 · 0 评论 -
java——常见IO流的使用——FileReader类
一、大纲1、流的分类根据操作数据单位:字节流、字符流 根据数据流向:输入流、输出流 根据流的角色:节点流和处理流2. 流的体系结构(只说重要的流)抽象基类 节点流(文件流) 缓冲流(处理流的一种) InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedoutputStream Reader FileReader B原创 2020-12-25 19:54:09 · 3160 阅读 · 0 评论 -
java——IO流的原理和流的分类
也就是说,输入输出是我们站在程序(内存)的层面来说的像图像这种数据通常用字节流来传输,文本数据用字符流传输效率更高第一行是抽象类,即每一列的第一行都是父类,该列剩下的都是第一行的子类。 第二行是节点流,下面的是处理流 深色的框是最重要的流...原创 2020-12-25 15:46:53 · 112 阅读 · 0 评论 -
Java——File类
1. file类的实例化——构造器的使用在程序中,\ 要写成 \\ ,避免误认为转义字符import java.io.File;public class HTIO { public static void main(String[] args){ //构造器1:public File(String pathname) File file1 = new File("hello.text");//相对路径:在此module下创建一个tex...原创 2020-12-25 13:41:06 · 112 阅读 · 1 评论 -
java——泛型
1. 为什么要用泛型2. 集合中泛型的使用package com.atguigu.java;import org.junit.Test;import java.util.*;/** * * 泛型的使用 * 1.jdk 5.0新增的特性 * * 2.在集合中使用泛型: * 总结: * ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构。 * ② 在实例化集合类时,可以指明具体的泛型类型 * ③ 指明完以后,在集合类或接口中凡是定义类..原创 2020-12-22 21:52:15 · 143 阅读 · 0 评论 -
Map接口
1. Map接口继承树Hashtable、HashMap分别是Properties和LinkedHashMap的父类,都实现了Map接口 SortedMap是Map的子接口,TreeMap是其实现类2. Map接口概述map有映射的意思,所以储存的key-value数据,与函数y=f(x)的xy映射关系是一样的 ...原创 2020-12-21 18:46:35 · 159 阅读 · 0 评论 -
Collection子接口之二: Set接口
一、概述/** * 1. Set接口的框架: * * |----Collection接口:单列集合,用来存储一个一个的对象 * |----Set接口:存储无序的、不可重复的数据 -->高中讲的“集合” * |----HashSet:作为Set接口的主要实现类;线程不安全的;可以存储null值 * |----LinkedHashSet:作为HashSet的子类;遍历其内部数据时,可以按照添加的顺序遍历原创 2020-12-20 13:55:59 · 85 阅读 · 1 评论 -
Collection子接口之一——List接口
|----Collection接口:单列集合,用来存储一个一个的对象 |----List子接口:存储有序的、可重复的数据。 -->“动态”数组,长度是可变的 |--实现类--ArrayList、LinkedList、Vector |----Set子接口:存储无序的、不可重复的数据 -->类似于高中讲的“集合” |--实现类--HashSet、LinkedHashSet、TreeSet|----Map接原创 2020-12-19 16:23:06 · 179 阅读 · 2 评论 -
使用foreach遍历集合或者数组元素
一、foreach遍历集合public class foreachTest { public static void main(String[] args){ Collection coll = new ArrayList(); coll.add("123"); coll.add(456); coll.add(789); coll.add("SSSS"); for(Object obj : c..原创 2020-12-19 15:51:48 · 820 阅读 · 1 评论 -
java—关于接口的多态性的一点理解
import java.util.ArrayList;import java.util.Collection;public class foreachTest { public static void main(String[] args){ Collection coll = new ArrayList(); ArrayList arr = new ArrayList(); arr.trimToSize(); coll.tri.原创 2020-12-19 14:50:50 · 164 阅读 · 1 评论 -
Iterator迭代器接口
Iterator是一个接口——java.lang.Iterator。Collection接口继承了java.lang.Iterator接口 一个类实现“子接口”:该实现类,需要既实现“子接口”中的方法,又要实现“父接口”中的方法。所以Collection接口的实现类必须需要重写Collection接口和Iterator接口的所有方法 Iterator接口中有一个方法——iterator(),所以所有Collection实现类也都会重写该方法iterator() iterator()方法:用以返回一原创 2020-12-18 15:31:52 · 191 阅读 · 0 评论 -
JAVA集合(一)
一、java集合概述二、集合框架JAVA集合具体可分为两种体系:1.Collection接口(集合) 2. Map接口 ( 映射 ) |----Collection接口:单列集合,用来存储一个一个的对象* |----List子接口:存储有序的、可重复的数据。 -->“动态”数组,长度是可变的* |--实现类--ArrayList、LinkedList、Vector** |----Se...原创 2020-12-18 13:19:06 · 562 阅读 · 0 评论 -
java—注解(Annotation)
1. Annotation概述 2.生成文档相关的注解3.JDK内置的三个基本注解4. 如何自定义注解(了解,开发中通常用现成的注解)5. jdk提供的四种元注解定义:JDK 的元 Annotation 用于修饰其他 Annotation 定义,即对现有的注解进行解释说明的注解称为元注解一般出现在自定义注解源码的上面。JDK5.0提供了4个标准的meta-annotation(元注解)类型,分别是: ...原创 2020-12-16 23:05:03 · 67 阅读 · 0 评论 -
java—枚举类
1. 枚举类的定义:——当一个类的对象个数是确定的、有限的时候,就把这个类称为枚举类。当需要定义一组常量时,强烈建议使用枚举类。(用final修饰的基本数据类型、引用数据类型和对象都是常量。一旦赋值不可改变)2.如何自定义枚举类————了解这种方式就行,目前开发中用的很少。都是采用使用关键字enum定义枚举类。public class SeasonTest { public static void main(String[] args) { Season.原创 2020-12-16 20:13:22 · 121 阅读 · 0 评论 -
java比较器—定制排序—Comparator接口
对于对象数组的定制排序——使用 java.util.Comparator 接口1. 既然有了Comparable接口来对对象数组进行自然排序,为什么还要有Comparator?当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码 实现了java.lang.Comparable接口的排序规则不适合当前的操作 那么可以考虑使用 Comparator 的对象来排序,强行对多个对象进行整体排序的比较。 2. 重写compare方法重写compare(Ob.原创 2020-12-16 13:51:08 · 102 阅读 · 0 评论 -
java比较器—自然排序—Comparable接口
1. 引入对于上面每一个框就是一个对象,我们可以按照价格、销量、评论等对对象们进行排序。对于数值型的变量,我们可以去比较它们的大小从而进行排序。对于字符串类型的我们也可以对它们进行排序。但是对于不同对象之间,我们怎么排序?说明:Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的 * 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。2. String类和包装类的排序问题对象数组如何实现排序?——该类要实.原创 2020-12-16 11:35:37 · 268 阅读 · 0 评论 -
JDK8中出现的新的日期API---java.time.format.DateTimeFormatter 类
java.time.format.DateTimeFormatter 类的作用是 格式化 和 解析 日期或时间,用于替代前面介绍的jdk8之前的类—java.text.SimpleDateFormat日期自定义格式转换类三种实例化方式:常用第三种方式常用方法:前两种实例化方法:(知道就行,用得少) // 方式一:预定义的标准格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIM...原创 2020-12-15 21:06:26 · 641 阅读 · 0 评论 -
JDK8中出现的新的日期API---Instant
Instant类其实类似于之前学过的java.lang.System类,都是跟时间戳有关的。// System.currentTimeMillis()返回一个long型的时间戳,单位ms。为什么要用到时间戳: //now():静态、实例化方法,创建一个Instant对象 // 获取本初子午线(UTC时区)对应的标准时间 Instant instant = Instant.now(); System.out.print..原创 2020-12-15 20:43:44 · 514 阅读 · 0 评论 -
JDK8中出现的新的日期API---LocalDate LocalTime LocalDateTime
前面几个博客介绍的都是JDK8以前出现的API,例如java.util.Date、java.util.Calendar、java.text.SimpleDateFormat新日期时间API出现的背景 如果我们可以跟别人说:“我们在1502643933071见面,别晚了!”那么就再简单不过了。但是我们希望时间与昼夜和四季有关,于是事情就变复杂了。JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被弃用 了。而C...原创 2020-12-15 20:21:43 · 209 阅读 · 0 评论 -
java.util.Calendar类
java.util.Calendar类是一个obstract抽象类,意味着不能直接创建对象 有两种方式实例化(创建对象): 1.创建其子类(GregorianCalendar)的对象 2.调用其静态方法getInstance(),返回一个其子类(GregorianCalendar)的对象(通常用第二种方法) ...原创 2020-12-15 16:29:49 · 186 阅读 · 0 评论 -
java.text.SimpleDateFormat日期自定义格式转换类
前面介绍了一个日期类 java.util.Date,其返回值不易懂,并且返回日期的格式单一。 例如:java.util.Date d = new java.util.Date(); d.toString()返回的当前时间日期的格式为:Sat Feb 16 16:35:31 GMT+08:00 2019 格式单一且是英文不易懂SimpleDateFormat日期的自定义格式转换类首先需要了解一些日期的代表符号:yyyy 四位年yy两位年MM 月...原创 2020-12-15 16:03:13 · 763 阅读 · 0 评论 -
java—时间日期api汇总(全)
1. JDK8之前的时间日期API1.1System.currentTimeMillis()System.currentTimeMillis() 返回值是long,用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 //称为时间戳System.out.println(time)...原创 2020-12-13 22:45:31 · 479 阅读 · 0 评论 -
java—StringBuffer和StringBuilder
1. String、StringBuffer、StringBuilder三者的异同?String:不可变的字符序列;底层使用char[]存储 StringBuffer:可变的字符序列;线程安全的,效率低 (因为使用了synchronized) ;底层使用char[]存储 StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储2. StringBuffer类:其可变的字符序列体现在:例如下面示例,对于String,因为储存在final的原创 2020-12-13 21:45:02 · 64 阅读 · 0 评论 -
java—String类型和其他数据类型的转换
1. String类和基本数据类型、包装类之间的转换 Java String和基本数据类型之间的转换(包装类)parse是解析的意思,所以Integer.parseInt(str)就是把str解析成int类型。同理:Double.parseDouble(str)等2.String类和字符数组char[]之间的转换String转化成char[]:str.toCharArray(); 返回一个char[]。 String s1 = "123456"; ...原创 2020-12-13 17:31:12 · 543 阅读 · 0 评论 -
java—String类型的常用方法
1.int length():返回字符串的长度: return value.lengthchar charAt(int index): 返回某索引处的字符return value[index]boolean isEmpty():判断是否是空字符串:return value.length == 0String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写S原创 2020-12-13 13:14:21 · 139 阅读 · 1 评论 -
java—字符串常用类
1. 字符串常用类1.1 String类 String类:代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。String s = "abc"; 但是不同于一般类的创建对象方式 String是一个final类,代表不可以被继承。 String对象的字符内容是存储在一个字符数组value[]中的。value[]用final修饰,代表不可变的字符序列。 value[]用final修饰的不可变的字符序列理解: 字符串St.原创 2020-12-12 22:42:00 · 346 阅读 · 0 评论 -
java—JDK5.0新增创建多线程的两种方式---实现callable接口 和 使用线程池
到现在为止,一共介绍了四种创建多线程的方法:继承Thread类 实现Runnable接口 实现Callable接口 使用线程池3. 实现Callable接口的方式创建线程:package com.atguigu.java2;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;..原创 2020-12-12 13:34:18 · 151 阅读 · 0 评论 -
多线程+线程安全+线程通信例题
package com.atguigu.java2;/** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员 * 会叫生产者停一下,如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品 * 了,店员会告诉消费者等一下,如果店中有产品了再通知消费者来取走产品。 * * 分析: * .原创 2020-12-12 12:13:56 · 67 阅读 · 0 评论 -
java—线程通信--wait() notify() notifyAll() 的使用
wait() notify() notifyAll() 的使用package thread;class printer implements Runnable { private int i = 1; @Override public void run() { while(true){ synchronized (this){ notify(); Syste..原创 2020-12-12 10:59:07 · 186 阅读 · 0 评论 -
java—多线程
多线程——干货原创 2020-12-11 22:23:46 · 80 阅读 · 0 评论 -
JAVA—解决线程安全的方式三—同步锁LOCK
package thread;import java.util.concurrent.locks.ReentrantLock;class window5 implements Runnable{ private int ticket = 100; private ReentrantLock lock = new ReentrantLock(); @Override public void run() { while (true){ ...原创 2020-12-11 22:22:16 · 115 阅读 · 0 评论 -
java—线程的死锁问题
public class ThreadTest { public static void main(String[] args) { //s1 s2作为同步监视器(锁) StringBuffer s1 = new StringBuffer(); StringBuffer s2 = new StringBuffer(); new Thread(){ @Override public .原创 2020-12-10 16:24:37 · 72 阅读 · 0 评论 -
线程安全的解决方法——同步方法
如果操作共享数据的代码完整的声明在一个方法中,我们不妨将此方法声明为同步的。1.利用 实现Runnable接口 的方式来创建三个线程来卖票 并利用同步方法来解决线程不安全问题package thread;//利用 实现Runnable接口 的方式来创建三个线程来卖票//利用同步方法来解决线程不安全问题class window4 implements Runnable{ private int ticket = 100; @Override public voi.原创 2020-12-10 15:19:30 · 154 阅读 · 0 评论 -
线程安全的解决方法(一)--同步代码块Synchronized
线程安全问题的解决方法--线程同步解决办法: 对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中,其他线程不可以参与执行解决方法一:同步代码块 Synchronized同步代码块: synchronized (对象){ // 需要被同步的代码; }说明:1.操作共享数据的代码,即为需要被同步的代码。 -->不能包含代码多了,也不能包含代码少了。* 2.共享数据:多个线程共同操作的变量。比如:ticket就是共享数据。* ..原创 2020-12-09 22:39:45 · 168 阅读 · 0 评论