![](https://img-blog.csdnimg.cn/20200609154707538.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
文章平均质量分 80
ZJE_ANDY
这个作者很懒,什么都没留下…
展开
-
java-------Arrary.sort 用 Comparator比较器定制排序方式(例如逆序)
一、Arrays.sortArrarys.sort()是用于给数组排序的,默认的情况下,是顺序排序,即从小到大:public class Test5 { public static void main(String[] args) { int[] arr = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5}; Arrays.sort(arr); for(int x:arr){ System.out.pri原创 2021-03-11 23:51:00 · 12835 阅读 · 3 评论 -
java----创建线程的三种方法
目录一、继承 Thread类二、实现 Runnable接口三、实现Callable接口和Future接口四、线程同步问题一、继承 Thread类继承Thread类后必须重写Thread 的run()方法。 run()为线程类的核心方法,相当于主线程的main方法,是每个线程的入口public class MyThread extends Thread { public MyThread() { } public void run() { for(int i=0.原创 2021-03-09 17:30:32 · 212 阅读 · 0 评论 -
Java基础-----java四大引用
一、强引用如果一个对象具有强引用,那么他将不会被垃圾回收器回收。即使当前内存不足,JVM也不会回收它,而是抛出OutOfMemoryError,使程序终止。如果想终端强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM就会在合适的时候回收对象。二、软引用在使用软引用时,如果内存足够,软引用就能继续被使用,而不会被垃圾回收,只有在内存不足的时候,软引用才会被垃圾回收。三、弱引用具有弱引用的对象拥有的生命周期更短暂。因为当JVM进行垃圾回收,一旦发现弱引用,无论当原创 2021-03-09 08:56:33 · 285 阅读 · 0 评论 -
JUC-----java各种线程池及其参数
目录一、线程池的好处二、Java中的ThreadPoolExecutor类的构造方法三、线程池执行流程四、Java线程池的类型五、使用线程池代码例子六、关于线程池相关疑问6.1 为什么线程池的工作队列要是阻塞队列 BlockingQueue?一、线程池的好处(1)、降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;(2)、提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;(3)方便线程并发数的管...原创 2021-02-24 23:10:06 · 359 阅读 · 0 评论 -
JUC并发包------countdownlatch的使用
一、countdownlatchcountdownlatch是用于线程同步的,例如有5个线程需要同时开始运行,那怎么办呢,例如第一个就绪的线程必须等到其他4个线程就绪才能开始往下运行,若其他4个线程还没都就绪,那么第一个线程就会阻塞。同理的,其他就绪了的线程也一样,必须要等待所有线程都就绪后,才能往下运行,否则就阻塞。如下图:就如跑步比赛一样,第一个运动员在起跑线就绪后,并不能开始跑,而是要等待其他运动员都到达起跑线后,才能一起起跑。当一个运动员就绪,那么就会调用 countDown方法,表示减原创 2021-02-17 14:14:20 · 216 阅读 · 0 评论 -
Java IO 的stream 和 channel
通道(Channel):由 java.nio.channels 包定义 的。Channel 表示 IO 源与目标打开的连接。Channel 类似于传统的“流”。只不过 Channel 本身不能直接访问数据,Channel 只能与 Buffer 进行交互。(Channel本身不存储数据,因此需要配合缓冲区进行传输)https://blog.csdn.net/zcw4237256/article/details/78662762...原创 2021-02-06 18:05:22 · 2451 阅读 · 5 评论 -
Java数据结构-------HashSet
来说说HashSet。如果有点Java基础的童鞋,应该都知道List和Set都实现自Collection,List保证元素的添加顺序,元素可重复。而Set不保证元素的添加顺序,元素不可重复。创建一个 HashSet如下:Set<String> strSet = new HashSet<>();//new了一个HashSetnew了一个HashSet,前面的文章已经说过很多次了,只要是看到new,这货肯定在堆内存里开辟了一块空间,先找到HashSet的构造函数看看,看转载 2021-02-01 16:32:59 · 224 阅读 · 0 评论 -
ConcurrentHashMap的原理
目录一、ConcurrentHashMap与HashMap等的区别二、JDK1.7版本的CurrentHashMap的实现原理1.Segment(分段锁)2.内部结构3.该结构的优劣势三、JDK1.8版本的CurrentHashMap的实现原理get操作put操作由于ConcurrentHashMap 的实现在JDK1.7 和 JDK1.8 有较大不同,因此会分开两个版本讲解。一、ConcurrentHashMap与HashMap等的区别1.HashMap..原创 2021-01-19 17:57:17 · 458 阅读 · 0 评论 -
synchronized原理
一、synchronized原理如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,可以说在并发控制中是必不可少的部分。1.1 原子性所谓原子性就是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。但是像i++、i+=1等操作字符就不是原子性的,它们是分原创 2021-01-18 19:23:30 · 386 阅读 · 0 评论 -
Java 的反射机制
目录一、什么是反射?二、反射的原理和过程2.1 Class 对象2.2 获得 Class 对象的方法(三种方法)1. getClass()2.任何数据类型(包括基本的数据类型)都有一个“静态”的class属性3.通过class类的静态方法:forName(String className)(最常用)2.3 获取Class对象后,如何使用2.3.1 利用Class对象获取对应的类的各种信息2.3.2利用Class对象创建实例2.3.3利用Class对象...原创 2020-12-22 18:08:08 · 174 阅读 · 0 评论 -
Java为什么要序列化
目录一、什么是序列化和反序列化二、为什么要序列化三、序列化和反序列化操作序列化操作反序列化操作四、注意一、什么是序列化和反序列化序列化就是把对象变成二进制格式的过程。反序列化就是把二进制格式的对象还原成正常对象的过程。二、为什么要序列化对象序列化无非两个原因:1.用于网络传输对象在一台机子上,有一个JVM,那么在同一个JVM中的不同对象,当然可以随便调用各自的方法。但假设,从分布式而言,北京的一台服务器需要调用广州服务器的一个对象,怎么办,两个..原创 2020-11-24 23:36:50 · 3765 阅读 · 0 评论 -
Java 并发之volatile
目录一、并发的三大问题1.原子性问题2.可见性问题3.有序性问题二、volatile能保证什么(可见性和有序性)1. 保证可见性的重要性volatile如何保证可见性2. 保证有序性的重要性volatile如何保证有序性3.不能保证原子性的问题三、volatile保证原子性的方法四、总结附:一、并发的三大问题原子性问题、可见性问题、有序性问题。1.原子性问题 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打.原创 2020-11-24 15:45:52 · 187 阅读 · 0 评论 -
Java----------哈希表HashMap归纳
一、什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能。数组:采用一段连续的存储单元来存储数据。可以随机访问,所以对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找等,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)。线性链表:对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结原创 2020-11-12 19:27:31 · 291 阅读 · 1 评论 -
java-----向上转型和向下转型
向上转型:将子类转化成父类向下转型:将父类转化成子类例子:先定义一个父类,再定义一个继承父类的子类:/** * 父类 */class Father { String name = "爸爸"; public void sleep() {//睡觉方法 System.out.println(name + "睡觉"); }}/** * 子类继承父类 */class Son extends Father { String name = "儿子"; public v.原创 2020-09-22 21:15:47 · 441 阅读 · 0 评论 -
Java遍历目录下的所有文件
1.遍历本目录下所有的文件(不包括目录的目录里的文件)import java.io.File;public class main { public static void main(String[] args) { String path = "D:\\JAVA"; //要遍历的路径 File file = new File(path); //获取其file对象 Fil原创 2018-03-22 16:01:30 · 115579 阅读 · 6 评论 -
Java的Scanner类的使用
0.Scanner1.Scanner实用方法2.使用Scanner获取键盘输入3.使用Scanner输出文件4.用Scanner扫描出一段文章中的每个句子0.ScannerScanner是一个基于正则表达式的文本扫描器,它可以从文件,输入流,字符串中解析出基本类型值和字符串值。Scanner类 提供了多个构造器,不同的构造器可以接收文件,输入流,字符串作为数据源原创 2017-06-11 23:54:48 · 1098 阅读 · 1 评论 -
Java 栈Sack和队列Queue的用法
(一)栈import java.util.Stack;public class Sack { public static void main(String[] args) { Stack s = new Stack(); // Stack 是泛型的 s.push("I"); s.push("am"); s.push("HappY!"); Sy原创 2017-12-31 22:29:38 · 469 阅读 · 0 评论 -
Java Map集合
# Java的集合中分两大种,Collection 和 Map#Map相当于 python中的字典dict1.Map集合2.Map集合的常用方法1.Map集合(1)Map集合用于保存具有映射关系的数据,因此Map集合里保存着两组值,一个是Key值,一个是Value值,即键值对。一个Map集合中,Key是不能重复的,就像一本字典的索引,是唯一的。用户可以通过Map原创 2017-07-23 23:37:07 · 519 阅读 · 0 评论 -
Java泛型
1.何为泛型2.使用泛型的简单演示1.何为泛型泛型就是指定一个容器里的元素是固定的一个类型。如 : List list 表示 list 中的元素全都要为String类型。使用泛型后,编译器在编译时,就可以对集合中存储的对象的类型进行检查,一旦发现类型不匹配,就编译失败。这个技术就是泛型。好处:1.将程序运行时期的问题转移到了编译时期,可以更好的 让程序原创 2017-06-13 14:14:43 · 259 阅读 · 0 评论 -
Java 的IO操作和介绍
1.File类1.File类Java中可以通过创建一个 File 类实例来表示一个文件 或者 路径。例如:File file = new File(“project_name/file.java”)通过创建File实例时给他传参,来让参数内的文件(或路径)实例化,参数路径是以项目名作为开始目录的,除非你输入的是绝对路径(一)访问文件名相关的方法(1)原创 2017-07-13 11:36:10 · 267 阅读 · 0 评论 -
java 集合
1.集合2.集合Collection的框架3.Collection接口中的共性基本功能4.迭代器1.集合1.集合用于存放对象,数组只能存储一种类型的数据,而集合可以存储多种类型的数据。2.集合有多种,如ArrayList,Vector 等。3.集合最大的父类是 Collection接口。所有不同种类的集合容器都是实现Collection接口。4.Coll原创 2017-06-06 10:23:31 · 239 阅读 · 0 评论 -
JAVA的构造代码块和局部代码块
1.构造代码块2.局部代码块1.构造代码块构造代码块在类中定义,作用是初始化对象,那有人问了,那跟构造函数有什么区别呢?构造函数可以有多个,例如有A,B,C三个构造函数,他们如果都有System.out.println(“HI”); 这一个语句的话,就可以把这个语句放到构造代码块中,就是多个构造函数共有的东西可以放到构造代码块中。如:public class M原创 2017-03-31 00:03:35 · 686 阅读 · 0 评论 -
JAVA思想:继承的方法覆盖的作用
在继承后,如果子类和父类中有同名的方法,子类调用同名的方法后,调用的是子类自己的方法,这就叫做覆盖。当我们开发时,原有的父类---A类功能已经不够强了,我们需要对他进行功能修改,但又不能改动他的代码,因此我们可以用B类继承A类,然后在B类中重写A类的功能方法,达到不修改A类就能改动A类功能的目的。注意:为什么不能改动父类的代码? 因为实际开发中,原有的代码可能包括很多类,类与原创 2017-03-31 16:41:10 · 2085 阅读 · 0 评论 -
JAVA继承与覆盖
1.继承的好处2.单继承3.多继承1.继承的好处原创 2017-03-31 17:14:37 · 1374 阅读 · 0 评论 -
Java进程与多线程及多线程的创建和状态
1.进程和线程2.多线程3.创建多线程4.调用run和调用start的区别5.线程的默认名字6.线程的四种状态1.进程与线程进程:正在 运行的程序。就是应用程序在内存中分配的空间线程:是进程中负责程序执行的基本执行单元。一个进程中至少要有一个线程,如果一个进程拥有多个线程,则称为多线程。(线程也叫执行路径)2.多线程一个进程如果只有一原创 2017-04-24 16:40:46 · 470 阅读 · 0 评论 -
Java的内部类和匿名内部类
1.内部类2.访问内部类3.匿名内部类1.内部类1.内部类就是一个类定义在另一个类中。2.A类要直接访问B类的成员时,可以将A类定义在B类中。哪怕访问的是B类的私有成员也可以。3.规则:内部类可以直接访问外部类的成员,但外部类要想访问内部类的成员,只能通过创建内部类的对象来访问。4.内部类相当于外部类的一个成员。可以被成员修饰符修饰。如 public,priva原创 2017-04-17 23:53:14 · 258 阅读 · 0 评论 -
Java的关键字 final
1原创 2017-04-04 23:34:07 · 272 阅读 · 0 评论 -
Java多态
1.多态的实现2.多态的优点与缺点3.向上转型和向下转型4.instanceof 关键字5.项目代码体现多态1.多态的实现多态的实现就是:通过一个抽象的东西(可以是父类,可以是接口),可以随时变成任意一个符合要求的具体的东西。例如图形:可以通过具体情形给他定义为 圆形,矩形,菱形等。通过父类实现多态:父类能够选择性地在多个子类中选择一个子类,调用原创 2017-04-13 15:32:13 · 299 阅读 · 0 评论 -
Java接口
1.接口是什么2.implement关键字3.接口的多实现4.接口的好处5.接口可以多继承1.接口是什么接口也是一个抽象类,只是不用class修饰,而用interface关键字修饰。接口里的成员有两种,一种是全局常量,一种是抽象方法。1.当一个抽象类中的所有成员只有抽象方法时,便是一个接口,可以用关键字interface表示。2.接口中的成员有两原创 2017-04-14 09:19:10 · 525 阅读 · 0 评论 -
Java的数组操作
1.定义和初始化数组2.for循环和for each循环3.匿名数组和数组拷贝4.二维数组1.定义和初始化数组定义:int[] a ;或者 int a[];都是声明了一个数组变量 a,但第一种声明方法会比较常用,因为他能直观地表示 a 是一个int型数组接下来是初始化数组:int[] a = new int[5]; 表示int型数组变量a是一个拥有5个 in原创 2017-04-14 13:17:10 · 3758 阅读 · 0 评论 -
JAVA的静态代码块
1.什么是静态代码块2.静态代码块的特点3.静态代码块有什么用1.什么是静态代码块:原创 2017-03-30 15:43:02 · 543 阅读 · 0 评论 -
Java 的String类
1.String类2.String的比较3.常量池4.String类方法1.String类String类表示字符串。可以直接创建字符串对象:String str = new String(“HelloWorld”);//表示str是字符串对象,内容是 HelloWorld,在堆创建或 String str = “Hello world”; //作用原创 2017-05-04 14:34:41 · 193 阅读 · 0 评论 -
Java异常
1.异常的分类2.异常的处理机制2.自定义异常抛出的信息3.throws 和 throw 1.异常的分类在Java程序中,若程序发生异常了,程序就会抛出一个异常对象,而异常对象在Java里面很多都有定义的。如Throwable类就是所有异常的超类,Throwable类的下面有两个重要的子类:Error类和Exception类。这两个类向下 又分出很多子类。原创 2017-04-22 19:09:13 · 521 阅读 · 0 评论 -
Java 的包
1.什么是包2.创建包1.什么是包包就像文件夹,包含不同已经写好的类文件,且可以对类进行分类管理(这里的类是已经编译好的源代码)。包可以提供更大的命名空间。例如有写了两个源代码都叫 main.java,编译出来后的类就都叫 main.class,那两个同名的话,我们就把这两个文件分别放到不同的包中,例如a包和b包,那么调用时就可以写 a.main 和 b.main 。所原创 2017-04-23 13:51:57 · 236 阅读 · 0 评论 -
JAVA单例模式
1.单例模式是什么2.饿汉模式的单例模式3.懒汉模式的单例模式4.两种模式的区别1.单例模式是什么原创 2017-03-31 12:29:37 · 516 阅读 · 0 评论 -
Java多线程的同步
1.为什么要同步1.为什么要同步在计算机中,多线程的实现是通过CPU轮流执行各个线程,看下图:sum = 0;public void add(){ int n = 100; sum = sum+n; /*当线程1执行到这里时,sum=100,但还没来得及输出,CPU接切换到线程2去了,线程2的sum加了100后,sum=200,并输出了,就造成原创 2017-04-25 16:05:34 · 374 阅读 · 0 评论 -
Java中 equals() 和 ==的区别
1.equals()用于比较两个引用指向的对象的值是否一样2. == 用于比较两个引用是否指向同一个对象如:public class Main{ public static void main(String args[]) { String str1 = new String("abc"); String str2 = new Stri原创 2017-06-04 22:12:50 · 270 阅读 · 0 评论 -
Java集合list删除重复元素问题
为了删除list集合中重复的元素先看看下面这种方法:(以ArrayList为例)import java.util.*;public class Main{ public static void main(String args[]) { List list = new ArrayList(); list.add("1");原创 2017-06-04 21:46:32 · 1394 阅读 · 1 评论 -
Java 抽象类(abstract关键字)
1.抽象类2.抽象类的特点3.抽象类的作用4.abstract关键字1.抽象类什么是抽象类?就是笼统地描述一类东西,例如动物类,就是抽象类,因为动物可以有很多种,有猫,有狗,有猴子。那抽象类怎么实现呢?用关键字abstract修饰。2.抽象类的特点1.抽象类不能被实例化,对抽象类用new方法是错误的。2.抽象类中允许有一种或者多种或者全部抽象原创 2017-04-06 21:53:01 · 1743 阅读 · 2 评论