![](https://img-blog.csdnimg.cn/20191005120545780.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
这是一个Java学习过程中严谨的笔记
茕 茕
人生没有如果只有结果
展开
-
47Java线程----线程池图文+代码全解
我们使用线程的时候就会去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是一个执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。这时就需要线程池来解决这些问题1.线程池概念线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消...原创 2020-03-02 17:00:15 · 161 阅读 · 1 评论 -
46JAVA线程---等待唤醒机制
1.线程间的通信概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A是用来生成包子的,线程B是用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A和线程B之间就存在线程通信问题为什么要处理线程间通信:多个线程并发执行时,在默认情况下CPU是随机切换线程的,我们需要多个线程来共同完成一件任务,并且我们希望他们右规律...原创 2020-02-26 17:51:03 · 228 阅读 · 1 评论 -
45一篇图文+代码搞定JAVA线程状态
线程状态当线程被创建并启动以后,它既不是一启动了就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有六种线程状态线程状态导致状态发生条件NEW(新建)线程刚被创建,但是并未启动。还没调用start方法Runnable(可运行)线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统器Blocked(锁阻塞)...原创 2020-01-29 17:38:54 · 136 阅读 · 1 评论 -
44JAVA多线程----线程安全
1.线程安全如果有多个线程在同时运行,而这些线程可能会同时运次这段代码。程序每次运行结果和单线程运行结果是一样的,而且其他的变量的值也和预期的结果是一样的,就是线程安全的。下来通过一个案例,演示线程的安全问题:电影院要...原创 2020-01-26 18:14:52 · 192 阅读 · 1 评论 -
43JAVA多线程--线程(代码+图解+概念)
1.多线程原理下面通过一个多线程执行时序图来体现多线程程序的执行流程代码如下:自定义线程类:public class MyThread extends Thread{/** 利用继承中的特点* 将线程名称传递 进行设置*/public MyThread(String name){super(name);}/** 重写run方法* 定义线程要执行的代码*/public...原创 2020-01-18 14:26:55 · 674 阅读 · 1 评论 -
42---JAVA多线程
1.并发与并行并发:指两个或多个事件在同一个时间段内发生并行:指两个或多个事件在同一个时刻发生(同时发生)在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单CPU系统中,每一时刻只能有一道程序执行,即微观上上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的。而在多个CPU系统中,这些可以并发执行的程序便...原创 2020-01-17 10:43:51 · 134 阅读 · 1 评论 -
41JAVA中的异常<3>----自定义异常
1.为什么需要自定义异常类JAVA中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据我们自己业务的情况来定义异常类。2.什么是自定义异常类在开发中根据自己的业务定义的异常类自定义一个业务逻辑异常:RegisterException一个注册异常类3.异常类如何定义自定义一个编译期异常:自定义类并继承于java.lang.Exc...原创 2020-01-16 11:37:19 · 167 阅读 · 1 评论 -
40 JAVA中的异常<2>---异常的处理
JAVA异常处理的五个关键字:try、catch、finally、throw、throws1.抛出异常Throw在编写程序时,我们必须考虑程序出现问题的情况。比如,在定义方法时,方法需要接收参数。那么,当调用方法使用接收到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。在JAVA中,提供了一个throw...原创 2020-01-14 14:35:59 · 139 阅读 · 1 评论 -
39JAVA中的异常<1>(详细图解)
1.异常1.1异常概念异常:指的是程序在执行过程中,出现的非正常情况,最终会导致JVM的非正常停止。在JAVA等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。JAVA处理异常的方式是中断处理。异常指的并不是语法错误,语法错了,编译不会通过,不会产生字节码文件,根本不能运行1.2异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是jav...原创 2020-01-13 15:07:04 · 184 阅读 · 1 评论 -
38Java GUI(图形用户接口)---全解<1>
1.Swing概述Swing是一种轻量级组件,底层一AWT(抽象窗口工具包)为基础。在实际开发中,更多的是使用Swing进行图形用户界面开发。但是Swing并不是AWT的替代品,而是在原有的AWT的基础上进行了补充和改进。Swing组件的所有类都继承自Container类,然后根据GUI开发的功能扩展了两个主要分支:容器分支(包括Window窗口和Panel面板)和组件分支。其中,容器分支就...原创 2019-12-05 20:48:06 · 509 阅读 · 1 评论 -
37JavaI/O流(持续更新)-----File类全解
上一篇博文系统不给通过,主讲JavaI/O流,等再次审核我再发布通过I/O流可以对文件的内容进行读写和操作,但对文件本身进行的一些常规操作是无法通过I/O流来实现的,例如创建一个文件、删除或者重命名某个文件、判断硬盘上某个文件是否存在等。针对文件的这类操作,JDK中提供了一个File类,该类封装...原创 2019-11-29 17:14:56 · 656 阅读 · 1 评论 -
36Java I/O流-----文件流、缓冲流、对象流
I/O流概述I/O流,即输入输出流,是Java中实现输入与输出的基础,它可以方便地实现数据的输入与输出操作I/O流有很多种,按照不同的分类方式,可以分为以下三类:1.字节流和字符流根据流操作的数据单位的不同,可以分为字节流和字符流。字节流以字节为单位激进行数据的读写,每次读写一个或者多个字节数据;字符流以字符为单位进行数据的读写。每次读写一个或多个字符数据。2.输入流和输出流根据流传输...原创 2019-11-29 13:01:24 · 247 阅读 · 1 评论 -
35Java集合----队列、栈、Map接口、装载因子及HashMap的优化
队列package day05;/** * java.util.Queue * 对列 * 对列也可以存放一组元素,但是存取元素必须 * 遵循:先进先出原则。 */import java.util.LinkedList;import java.util.Queue;public class QueueDemo { public static void main(String[...原创 2019-11-23 10:36:59 · 136 阅读 · 2 评论 -
34Java集合-----List接口
List接口ArrayList和LinkedListList接口是Collection的子接口,用于定义线性表数据结构。可以将:List理解为存放对象的数组,只不过其元素个数可以动态的增加或减少List接口的两个常见实现类为ArrayList和LinkedList,分别用动态数组和链表的方式实现了List接口可以认为ArrayList和LinkedList的方法在逻辑上完全一样,只是在性...原创 2019-11-18 17:05:21 · 201 阅读 · 1 评论 -
33Java集合------集合的遍历、泛型机制
遍历集合Intrator迭代器用于遍历集合元素。获取迭代器可以使用Collection定义的方法 -----Iterator Iterator()迭代器Iterator是一个接口,集合在重写Collection的Iterator()方法时利用内部类提供了迭代器的实现Iterator提供了统一的遍历集合元素的方式,其提供了用于遍历集合的两个方法——boolean haasNext():判...原创 2019-11-16 21:30:44 · 334 阅读 · 5 评论 -
32Java集合------Collection接口
集合概述在实际开发中,需要将使用的对象存储于特定数据结构的容器中,JDK提供了这样的容器——集合(Collection)Collection是一个接口:list和setlist集合的特点是元素有序可重复set集合的特点是元素无序且不可重复Collection接口Collection接口是所有单列集合额的跟接口,因此在Collection中定义了单列集合(list和set)的一些通用...原创 2019-11-15 21:16:20 · 252 阅读 · 1 评论 -
31Java中的常用类-----Calendar类
Calendar类相关简介都在代码中package day03;import java.util.Calendar;import java.util.Date;/** * java.util.Calendar * 日历类 * 该类是一个抽象类,封装了对时间的相关操作 * 常用的实现类是格里高利历(阳历) * 使用 日历类是为了对时间进行相关的操作 * 比如计算时间 * ...原创 2019-11-14 21:09:03 · 170 阅读 · 1 评论 -
30Java---Date类、SimpleDateFormat类
Java中的时间Java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点固定的时间点叫纪元(epoch)是UTC时间1970年1月1日00:00:00UTC与GMT一样,是一种具有实际目的的科学标准时间package day03;import java.util.Date;/** * java.util.Dat...原创 2019-11-12 14:07:41 · 147 阅读 · 1 评论 -
29Java中的常用类----Object类、包装类
Object在Java类继承结构中,java.lang.Object类位于顶端如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为java.lang.Object类Object定义了“对象”的基本行为,被子类默认继承public class Foo{...}等价于public class Foo extends Object{...}包装类Java语言的八种...原创 2019-11-09 10:38:48 · 289 阅读 · 1 评论 -
28Java中的常用类------正则表达式
练习代码在文末1.正则表达式简介实际开发中,经常需要对字符串数据进行一些复杂的匹配、查找、替换等操作。通过“正则表达式”,可以方便的实现字符串的复杂操作正则表达式是一串特定字符,组成一个“规则字符串”,这个“规则字符串”,是描述文本规则的工具。正则表达式就是记录文本规则的代码例如:正则表达式:“[a-z]”表示a到z的任意一个字符;正则表达式“[a-z]+”表示有1个或多个a-z字符组成...原创 2019-11-07 15:11:35 · 226 阅读 · 1 评论 -
27java中的常用类----String中的方法(2)、StringBuilder类及其API
1.静态方法valueOfpackage day01;/** * String提供了若干重载的静态方法 * 将其他数据类型转换为字符串类型 * @author Administrator * */public class ValueOfDemo { public static void main(String[] args){ double pi = 3.1415926; ...原创 2019-11-06 16:29:03 · 200 阅读 · 1 评论 -
26Java中的常用类---equals方法、String中的方法(1)
1.equals方法Object方法的equals方法用于对象的“相等”逻辑equals方法的定义如下:public boolean equals(Object obj)//equals方法的逻辑为:如果认为该方法的对象(this)与参数对象//相等返回true,否则返回falseObject的equals方法定义如下所示:public boolean equals(Obj...原创 2019-11-05 16:13:28 · 275 阅读 · 1 评论 -
25Java中的常用类-----JDK API、文档注释规范、Object、toString方法
写到API这块,后边一些关于方法的说明与介绍就直接写在代码里了,所以后期代码会很多,也不会单独开辟博客写代码练习,都写在一块方便看1.JDK API什么是JDK API?JDK中包含大量的API类库,所谓API就是一些已经写好、可供直接调用的功能JDK API 包含的类库功能强大,经常使用的有:字符串操作、集合操作、,文件操作、输入输出操作、网络操作、多线程等等。JDK包结构为了...原创 2019-11-04 16:12:43 · 209 阅读 · 1 评论 -
24Java面向对象---多态、内部类
多态1.意义同一类型的引用指向不同的对象时,有不同的实现同一对象被造型为不同类型时,有不同的功能2.向上造型父类型的引用指向子类的对象能造型的类型有:父类型、实现的接口能点(.)出来什么,看引用的类型能点出来的东西少于或等于子类3.强制类型转换成功的条件引用所指向的对象,就是该类型引用所指向的对象,实现了该接口4.通过instanceof来判断引用是否是某种类型...原创 2019-11-03 15:05:39 · 330 阅读 · 1 评论 -
23Java面向对象----针对22的代码演示
接口的演示package oo.day05;//接口的演示public class InterfaceDemo { public static void main(String[] args) { Inter4 o1=new Eoo(); }}interface Inter1{ public static final int NUM=5; public abstract...原创 2019-10-30 20:05:49 · 139 阅读 · 1 评论 -
22Java面向对象-----抽象方法、抽象类、接口
一.抽象方法由abstarct修饰只有方法的定义,没有方法的实现二.抽象类由abstract修饰包含抽象方法的类必须是抽象类抽象类不能被实例化(不能new对象)抽象类是需要被继承的,子类:重写所有抽象方法–常用也声明为抽象类-----不常用抽象类的意义:包含公共的属性和行为,被子类所共享 --代码重用为所有子类提供一种公共的类型–向上造型包含抽象方...原创 2019-10-27 10:58:03 · 286 阅读 · 1 评论 -
21Java面向对象-----访问控制修饰符、static关键字、final关键字
1.访问控制修饰符数据私有化,行为公开化public:公开的,任何类private:私有的,本类protected:受保护的,本类、子类、同包类默认的:什么也不写,本类、同包类类的访问修饰:public和默认的类成员的访问修饰:如以上四种都可以2.static2.1静态变量由static修饰用static修饰的成员变量不属于对象的数据结构,属于类的,存在方法区,只有一...原创 2019-10-26 18:43:00 · 369 阅读 · 1 评论 -
20Java面向对象------方法的重写、重写与重载的区别、package和import
1.方法的重写发生在子类中,方法名相同,参数列表不同,方法体不同重写方法在被调用时,看对象的类型class Foo{ public void f(){ System.out.println("Foo.f()"); }}class Goo extends Foo{ public void f(){ System.out.println("Goo...原创 2019-10-25 11:44:50 · 200 阅读 · 1 评论 -
19Java面向对象--------向上造型及其代码
向上造型父类的引用指向子类的对象能点出来什么看引用的类型//动物是动物Animal o1 = new Animal();//老虎是老虎Tiger o2 = new Tiger();//老虎是动物Animal o3 = new Tiger(;//动物是老虎-----错误的Tiger o4 = new Animal();父类的引用指向子类的对象一个子类的对象可以向上...原创 2019-10-24 14:31:22 · 268 阅读 · 1 评论 -
18Java面向对象--------针对17的代码演示
格子类package oo.day03;//格子类public class Cell { int row;//行号 int col;//列号 Cell(){ this(0); } Cell(int n){ this(n, n); } Cell(int row,int col){ this.row=row; this.col=col; } void drop(...原创 2019-10-22 16:20:31 · 237 阅读 · 1 评论 -
17Java面向对象-------内存管理、继承、super
1.内存管理1.1堆用于存储所有new出来的对象(包括成员变量)成员变量的生命周期创建对象时存在堆中,对象被GC回收时一并消失垃圾回收器(GC)不定时到对堆中查看看到垃圾自动回收垃圾:没有任何引用指向的对象回收过程是透明的,并不是一看到垃圾就马上回收若想让它快一些收,可以调用System.gc()内存泄露:不再使用的对象没有被及时回收建议,当对象不再使用时应及时将引用设置为n...原创 2019-10-21 21:56:26 · 483 阅读 · 1 评论 -
16Java面向对象-------针对15的代码练习
格子类package oo.day02;//格子类public class Cell { int row;//行号 int col;//列号 Cell(){ this(0); } Cell(int n){ this(n, n); } Cell(int row,int col){ this.row=row; this.col=col; } void drop(...原创 2019-10-20 08:55:52 · 481 阅读 · 4 评论 -
15Java面向对象-------方法重载、构造方法、引用类型数组
1.方法的重载同一个类中,方法名称相同,参数列表不同编译器在编译时自动根据方法的签名来调用不同的方法与返回值类型和返回值名称无关方法的签名方法的签名包括方法名和参数列表一个类中,不可以有两个方法的签名完全相同,即一个类中不可以有两个方法的方法名和参数列表都完全一样如果一个类知识方法名相同而参数列表不同,是可以的public class Cashier{ public ...原创 2019-10-19 11:00:55 · 236 阅读 · 3 评论 -
14 Java面向对象-------针对13的代码练习
学生类与其测试类package 00.day01;//学生类public class Student{ //成员变量 String name; int age; String address; //方法 void study(){ System.out.println(name...原创 2019-10-17 09:21:48 · 370 阅读 · 1 评论 -
13 Java面向对象---类、变量、引用类型变量
1.什么是类?什么是对象现实世界是由很多对象组成的,基于对象抽出了类对象:真实存在的单个的个体类:类型/类别,一类个体类中可以包含:所有对象所共有的特征/属性(静)---------变量所有对象所共有的行为(动)-----方法类是对象的模板,对象是类的具体的实例2.如何创建类?如何创建对象?class{成员变量类型 变量名称;…}定义类的成员变量...原创 2019-10-16 22:14:36 · 378 阅读 · 1 评论 -
12 Java语言学习基础——猜字符小游戏
猜字符小游戏package day12;import java.util.Random;import java.util.Scanner;//猜字符public class GuessingGame { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int coun...原创 2019-10-14 20:41:01 · 630 阅读 · 0 评论 -
11 Java语言学习基础——方法
1.方法用于封装一段特定的逻辑功能方法尽可能的独立(一个方法只干一件事)方法可以被反复地调用多次避免代码的重复2.方法的定义定义方法(函数,过程的功能)定义方法的五个要素:修饰词、返回值类型、方法名、参数列表、方法体;public static int sum (int num1,int num2){ //方法体}定义参数和返回值方法的参数是指...原创 2019-10-13 23:15:12 · 216 阅读 · 1 评论 -
10 Java语言学习基础——针对数组的代码练习
找到数组中的最大值赋值给最后一位并扩容,最后进行冒泡排序package day10;import java.util.Arrays;public class MaxOfArray { public static void main(String[] args) { int[] arr=new int[10]; for(int i=0;i<arr.length;i++) {...原创 2019-10-12 10:42:43 · 324 阅读 · 1 评论 -
01 JAVA学习语言基础——认识Java
JAVA学习语言基础01JAVA开发环境1.JAVA编译运行过程:1.1编译期:.JAVA源文件经过编译,生成.class文件运行期:jvm加载.class并运行.class1.2跨平台,一次编程到处使用2.JDK、JRE、JVM关系JDK–Java Developmentkit(Java开发工具包)JRE–Java Runtime Environment(Java运行环境)...原创 2019-10-04 11:23:04 · 1533 阅读 · 7 评论 -
02 Java学习语言基础——变量
Java学习语言基础02什么是变量?1.变量是一个代词,指代内存中的数据。变量必须有特定的数据类型,不同的数据类型表示不同的数据存储结构。2.变量的关键词-----类型Java是强类型语言,变量在使用前必须声明,指明其数据类型、编译器会根据变量的类型检测对变量的操作是否合法int a=100;System.out.println(a);System.out.println(b);...原创 2019-10-04 23:55:19 · 844 阅读 · 2 评论