![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
dyt998
小白一个,每天写博客记录自己学习的东西,就当笔记了。有什么错误的地方希望大家指正。希望可以向大佬们学习东西。
821548017@qq.com
展开
-
9 maven
src/main/java —— 存放项目的.java 文件 src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件 src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类 src/test/resources —— 测试资源文件 target —— 项目输出位置,编译后的 class 文件会输出到此目录 pom.xml——maven 项目核心配置文件Maven的生命...原创 2021-04-10 11:11:57 · 106 阅读 · 0 评论 -
【18】IO OutputStream 一次写入多个字节 续写和换行 InputStream 自已读取多个字节 字符流 close和flush区别 换行和续写
IO的概述OutputStream/* * java.io.OutputStream:字节输出流 * 此抽象类是表示输出字节流的所有类的超类 * * 定义了一些子类共性的成员方法: * public void close():关闭此输出流并释放与此相关联的任何系统资源 * public void flush():刷新此输出流并强制任何缓冲的输出字节被写出 * public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。原创 2021-02-06 17:47:28 · 931 阅读 · 0 评论 -
【17】File类 File类的静态方法 相对路径和绝对路径 File类的构造方法 获取功能 判断功能 创建和删除 遍历目录 过滤器
File类/** java.io.File类* 文件和目录路径名的抽象表达形式* java把电脑中的文件和文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作* 我们可以使用File类的方法* 创建一个文件/文件夹* 删除文件/文件夹* 获取文件/文件夹* 判断文件/文件夹是否存在* 获取文件的大小* File类是一个与系统无关的类,任何的操作系统都可以使用这个类的中的方法** 重点:记...原创 2021-02-03 11:34:28 · 604 阅读 · 0 评论 -
【16】Lambda表达式
Lambda表达式简化了代码/* * Lambda表达式的标准格式: * 由三部分组成: * 1.一些参数 * 2.一个箭头 * 3.一段代码 * 格式: * (参数列表)->{一些重写方法的代码}; * 解释说明格式: * ():接口中抽象方法的参数列表,没有参数,就空着,有参数就写出参数,多个参数使用逗号隔开 * ->:传递的意思,把参数传递给方法体{} * {}:重写接口的抽象方法的方法体 * */public class Test.原创 2021-01-31 17:53:27 · 63 阅读 · 0 评论 -
【15】线程池概念 线程池的具体操作
线程池概念其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。 合理利用线程池能够带来三个好处: 降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内 存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,原创 2021-01-31 17:26:06 · 111 阅读 · 0 评论 -
【14】等待唤醒机制 一个吃货和包子铺之间的案例
等待和唤醒 wait和notify小案例(消费之和生产者包子关系)/* * 等待唤醒案例:线程之间的通信 * 创建一个顾客线程(消费者):告知老板要的包子种类和数量,调用wait方法,放弃CPU执行,进入到WAITING状态(无限等待) * 创建一个老板线程(生产者):花了5秒做包子,做好了之后,调用notify方法,唤醒顾客吃包子 * * 注意: * 1.顾客和老板线程必须使用同步代码块包裹起来,保证等待和唤醒只有一个在执行 * 2.同步使用的锁对象那原创 2021-01-31 10:50:36 · 113 阅读 · 0 评论 -
【13】线程 并发与并行 线程和进程 创建多线程的方式二种 获取线程的名称2种方式 解决线程安全的三种方式
线程并发与并行并发:CUP一会执行这个,一会执行那个并行:CUP同时执行程序进程和线程进程:在内存中运行的程序线程:线程是进程的一部分线程的调度一个是分时调度 :所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。 抢占式调度:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调用主线程主线程:执行主(main)方法的线程单线程程序:...原创 2021-01-30 17:05:50 · 153 阅读 · 0 评论 -
【12】异常 分类 异常产生的解析 throw requireNonNull throws try..catch finally 子父类异常 自定义异常类 finally代码块
异常java.lang.Throwable类是java语言中所有错误或异常的超类 Exception:编译期异常,进行编译(写代码)java程序出现的问题 RuntimeException:运行期异常,java程序运行过程中出现的问题 异常就相当于程序得了一个小毛病(感冒,发烧),把异常处理掉,程序可以继续执行(吃点药,继续革命工作) Error:错误 错误就相当于程序的了一个无法治愈的毛病,必须修...原创 2021-01-27 12:20:32 · 134 阅读 · 0 评论 -
[11]JDK9新特性
List接口,set接口,Map接口,里面增加了一个静态方法of,可以结合集合一次性添加多个元素使用前提: 当集合中存储的元素的个数已经确定了,不在改变时使用注意:of方法只适用于list接口,set接口,Map接口,不适用于接口的实现类 of方法的返回值是一个不能改变的集合,结合不能在使用add,put方法添加元素,会抛出异常 set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常...原创 2021-01-22 18:02:17 · 70 阅读 · 0 评论 -
【10】Map集合 HashMap集合 LinkedHashMap集合 Map接口的方法 Map集合遍历的2种方式 Map存储自定义类型 Hashtable
Map集合java.util.Map<k,v>集合Map集合特点:Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) Map集合中的元素,key和value的数据类型可以相同,也可以不同 Map集合中的元素,key是不允许重复的,value是可以重复的 Map集合中的元素,key和value是一一对应HashMap集合java.util.HashMap<k,v>集合 implements Map<k,v>接口H.原创 2021-01-22 17:19:46 · 119 阅读 · 0 评论 -
【9】Collections集合工具类 方法 addAll shuffle sort sort(list,comparato)
Collections集合工具类java.util.Colletions是集合工具类,用来对集合进行操作,部分方法如下:addAll 往集合中添加多个元素 shuffle 打乱集合中的元素public class Test19 { public static void main(String[] args) { /* * public static <T> boolean addAll(Collection<T> c, T... elements)..原创 2021-01-21 17:44:43 · 224 阅读 · 0 评论 -
【8】Set集合 HashSet集合 不能重复的原理 HashSet自定义类型 LinkedHashSet集合 可变参数
set接口java.util.Set接口 extends CollectionSet接口特点不允许存储重复的元素 没有索引,没有带索引的方法,也不能是使用普通的for循环遍历HashSet集合Java.util.HashSet集合 implements Set接口不允许存储重复的元素 没有索引,没有带索引的方法,也不能是使用普通的for循环遍历 是一个无序的集合,存储元素和取出元素的顺序有可能不一致 底层是一个哈希表(查询的速度非常快) HashSet<S原创 2021-01-19 18:30:36 · 360 阅读 · 0 评论 -
【7】List集合 list集合特点 list接口中方法 ArrayList LinkedList接口的方法 Vector集合
List集合Java.util.List特点:有序的集合,存储元素和取出元素的顺序是一致的 有索引,包含了一些带索引的方法 允许存储重复的元素List接口中带索引的方法注意:操作索引的时候,一定防止索引越界异常 /* * public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。 * public E get(int index) :返回集合中指定位置的元素。 * publi原创 2021-01-19 11:57:52 · 79 阅读 · 0 评论 -
【6】泛型 优缺点 泛型在类中的定义和使用 泛型在方法的定义和使用 泛型在接口中的定义和使用 泛型的通配符?
泛型泛型:是一种未知的数据类型,当我们不知道使用什么数据类型的时候,可以使用泛型 泛型也可以看出是一个变量,用来接收数据类型创建集合对象,不使用泛型 好处:集合不适用泛型,默认的类型就是object类型,可以存储任意类型的数据 弊端:不安全,会引发异常创建集合对象,使用泛型 好处:避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型 把运行期异常,提升到了编译期 弊端:泛型是什么类型,只能存储什么类型...原创 2021-01-18 18:13:01 · 365 阅读 · 0 评论 -
【5】集合 Collection接口(add remove clear contains inEmpty size toArray)迭代器(hasNext next) 增强for循环
集合集合:集合是Java中提供的一种容器,可以用来存储多个 数据集合和数组有什么区别?数组的长度是固定。集合的长度是可变的 数组中存储的是统一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象类型可以不一致。在开发中一般对象多的时候,使用集合进行存储集合框架Collection接口 /* * Collection是所有单列集合的父接口,这些方法可用于操作所有的单列集合 * public boole...原创 2021-01-17 18:41:26 · 139 阅读 · 0 评论 -
【4】包装类 拆箱和装箱 自动拆箱和装箱 String类型和基本数据类型的转换
包装类基本数据类型的数据,使用起来非常方便,但是没有对应的方法来操作这些数据所以我们可以使用一个类,把基本数据类型的数据包装起来,这个类叫包装类在包装类中可以定义一些方法,用来操作基本类型的数据| 基本类型 | 对应的包装类(位于java.lang包中) || ------- | --------------------- || byte | Byte || short | Short || ...原创 2021-01-16 18:17:46 · 91 阅读 · 0 评论 -
【3】StringBuilder 字符缓冲区 和String比较 两个构造器 append toString reverse
StringBuilderjava.lang.StringBuilder 字符串缓冲区,可以提高字符串的效率String类:String是字符串常量,,它们的值在创建后不能更改字符串底层是一个被final修饰的数组,不能改变,是一个常量 private final byte [] value 字符串的相加,内存中就会有多个字符串,占用空间,效率低下 如:String s="a"+"b"+"c"="abc"...原创 2021-01-16 12:06:08 · 89 阅读 · 0 评论 -
【2】System类 获取毫秒值 复制数组
Systemjava.lang.System提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:public static long currentTimeMillis():返回以毫秒为单位的当前时间。 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。curre.原创 2021-01-15 18:26:00 · 464 阅读 · 1 评论 -
【1】 Calendar对象的使用日期类 get set add getTime
一:Calendar java.util.CalendarCalendar类是一个抽象类(不能直接使用),里面提供了很多操作日期的字段的方法 Calendar类无法直接创建对象使用,里面有一个静态方法叫getInstance,该方法返回了Calendar类的子类 static Calendar getInstance()使用默认时区和语言获得一个日历 下面这个代码是Calendar的使用public static void main(String[] args) {...原创 2021-01-15 17:54:44 · 505 阅读 · 0 评论 -
日期格式格式化 DateFormat SimpleDateFormat
/* * DataFormat日期格式化和解析 * 格式化 日期---->文本 * 解析 文本---->日期 * */public class Test6 { public static void main(String[] args) throws ParseException { /* * DateFormat两个成员方法 * String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 * Date pa.原创 2021-01-14 18:42:31 · 135 阅读 · 0 评论 -
Date的用法
public class Test5 { public static void main(String[] args) { /* * Date d = new Date() 如果new的是空参,则输出的是当前的时间 * * Date d = new Date(Long num) 如果new的是有残,则输出的是将参数【毫秒】转化成时间 * */ Date d = new Date(); System.out.println(d);//获取当前的时间 D.原创 2021-01-14 18:02:44 · 176 阅读 · 0 评论 -
Math工具的使用 abs,ceil floor round
/* * Math工具 * */public class Test4 { public static void main(String[] args) { double a = 12.5; double b = 3.1415926; double c = -12.666; /* * abs(参数) 将参数中的数取绝对值 * */ double abs = Math.abs(c); System.out.println(abs); /* .原创 2021-01-14 17:47:05 · 265 阅读 · 0 评论 -
与数组相关的工具Arrays
/* * java.util.Arrays 是与数组相关的工具类 * */public class Test3 { public static void main(String[] args) { /*1 * toString(数组) 将数组转换成字符串 [元素1,元素2,元素3] * */ String [] a = {"a","b","cc","ddd"}; String string2 = Arrays.toString(a); System.out.print..原创 2021-01-14 17:38:22 · 57 阅读 · 0 评论 -
有关String里方法的用法
public class Test2 { public static void main(String[] args) { //创建字符串 String s ="ni hao shi jie wo shi d y t"; System.out.println(s); /*1 * 对于基本数据类型来说 == 比较的是内容 * 对于引用数据类型来说 == 比较的地址 * */ int a =100; int b=100; System.out.prin...原创 2021-01-14 17:02:52 · 93 阅读 · 0 评论