![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 79
规则固态长方体物质空间移动工程师
临渊羡鱼不如退而结网,扬汤止沸不如釜底抽薪
展开
-
冒泡排序【Java实现】
来源:尚硅谷http://www.gulixueyuan.com/my/course/319冒泡排序基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的原创 2020-07-01 00:36:59 · 300 阅读 · 0 评论 -
JUnit单元测试注解
一、常用注解JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有:@BeforeClass 全局只会执行一次,而且是第一个运行@Before 在测试方法运行之前运行@Test 测试方法@After 在测试方法运行之后允许@AfterClass 全局只会执行一次,而且是最后一个运行@Ignore 忽略此方法...原创 2020-06-29 08:58:34 · 314 阅读 · 0 评论 -
【Java IO流】缓冲流
IO流 处理流之一:缓冲流为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类 时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。 缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:BufferedInputStream 和 BufferedOutputStreamBufferedReader 和 BufferedWriter当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区当使用BufferedInputS原创 2020-06-28 19:23:14 · 212 阅读 · 0 评论 -
【Java IO流】节点流(或文件流)
节点流(或文件流)定义文件路径时,注意:可以用“/”或者“\”。在写入一个文件时,如果使用构造器FileOutputStream(file),则目录下有同名文 件将被覆盖。如果使用构造器FileOutputStream(file,true),则目录下的同名文件不会被覆盖, 在文件内容末尾追加内容。在读取文件时,必须保证该文件已存在,否则报异常。字节流操作字节,比如:.mp3,.avi,.rmvb,mp4,.jpg,.doc,.ppt字符流操作字符,只能操作普通文本文件。最常见的文本文 件:.t原创 2020-06-28 15:57:12 · 209 阅读 · 0 评论 -
【Java IO流】OutputStream和Writer
OutputStream & WriterOutputStream ** 和 Writer ** 是所有输出流的基类。**OutputStream ** void write(int b/int c) void write(byte[] b/char[] cbuf) void write(byte[] b/char[] buff, int off, int len) void close() 需要先刷新,再关闭此流因为字符流直接以字符作为操作单位,所以 Writer 可以原创 2020-06-28 15:03:07 · 1136 阅读 · 0 评论 -
【Java IO流】IO流的分类
IO流的分类按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流按流的角色的不同分为:节点流,处理流抽象基类字节流字符流输入流InputStreamReader输出流OutputStreamWriterJava的IO流共涉及40多个类,实际上非常规则,都是从如下4个 抽象基类派生的。由这四个类派生出来的子类名称都是以其父类名作为子类名后缀IO 流体系...原创 2020-06-27 21:51:17 · 224 阅读 · 0 评论 -
【Java IO流】InputStream和Reader
尚硅谷:http://www.gulixueyuan.com/course/311InputStream & ReaderInputStream 和 Reader 是所有输入流的基类。InputStream(典型实现:FileInputStream) int read() read(byte[] b) int read(byte[] b, int off, int len)Reader(典型实现:FileReader) int read() int read(原创 2020-06-27 11:17:49 · 330 阅读 · 0 评论 -
【Java IO流】File类的使用
File类的使用java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。File对象可以作为参数传递给流的构造File 类的使用:常用构造器public File(String pathname)原创 2020-06-26 12:00:56 · 186 阅读 · 0 评论 -
Java泛型总结
源出处:尚硅谷:http://www.gulixueyuan.com/my/course/311一、泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的 对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来 解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于 这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个 参数,这个类型参数叫做泛型。Collection,List,ArrayList 这个就 是类原创 2020-06-23 00:15:53 · 167 阅读 · 0 评论 -
Java集合框架的总结整理
源出处:尚硅谷:http://www.gulixueyuan.com/my/course/310Java集合框架的总结整理Java集合框架概述Java集合框架概述一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊 端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。数组在内存存储方面的特点:数组初始化以后,长度就确定了。数组声明的类型,就决定了进行元素初始化时的类型原创 2020-06-13 12:08:56 · 241 阅读 · 0 评论 -
ArrayList源码分析及扩容机制
ArrayList的主要成员变量://数组默认初始容量private static final int DEFAULT_CAPACITY = 10;//定义一个空的数组实例以供其他需要用到空数组的地方调用 private static final Object[] EMPTY_ELEMENTDATA = {}; /*定义一个空数组,跟前面的区别就是这个空数组是用来判断ArrayList第一添加数据的时候要扩容多少。默认的构造器情况下返回这个空数组 */private static fi原创 2020-06-11 22:57:24 · 233 阅读 · 0 评论 -
Java Map接口的常用方法
来源:尚硅谷:http://www.gulixueyuan.com/my/course/310Map接口概述Map与Collection并列存在。用于保存具有映射关系的数据:key-valueMap 中的 key 和 value 都可以是任何引用类型的数据Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应 的类,须重写hashCode()和equals()方法常用String类作为Map的“键”key 和 value 之间存在单向一对一关系,即通过指定的 key 总原创 2020-06-09 16:10:00 · 2523 阅读 · 0 评论 -
哈希表的数据结构
转载自:https://www.jianshu.com/p/b468abd86f61Hash表的结构图:数组 + 链表哈希表(Hash table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表白话一点的说就是通过把Key通过一个固定的算法函数(hash函数)转换成一个整型数字,然后就对该数字对数组的长度进行取余,取余结果就转载 2020-06-06 22:35:52 · 2602 阅读 · 0 评论 -
Java Collection接口方法
Java Collection接口方法来源:Java8中文版 http://www.matools.com/api/java8转载 2020-06-02 22:41:19 · 360 阅读 · 0 评论 -
Java Iterator迭代器接口
源出处:尚硅谷http://www.gulixueyuan.com/my/course/310Iterator迭代器接口Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素GOF给迭代器模式的定义为:提供一种方法访问一个容器(container)对象中各个元 素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器而生。类似于“公 交车上的售票员”、“火车上的乘务员”、“空姐”。Collection接口继承了java.lang.Iterable接口,该原创 2020-05-29 22:57:51 · 392 阅读 · 0 评论 -
Java List接口常用方法
源出处:尚硅谷:http://www.gulixueyuan.com/my/course/310Collection子接口之一: List接口List接口概述鉴于Java中数组用来存储数据的局限性,我们通常使用List替代数组List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据 序号存取容器中的元素。JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。原创 2020-05-29 20:06:30 · 752 阅读 · 0 评论 -
数据结构知识结构框架图
来源:尚硅谷 http://www.gulixueyuan.com/my/course/310原创 2020-05-28 17:29:22 · 378 阅读 · 0 评论 -
fail-fast快速失败机制
fail-fast俗称快速失败,是在多线程进行迭代操作时产生冲突的一种异常抛出机制,下面我们就由ArrayList来深入理解Java中的fail-fast机制.1. fail-fast简介“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制。某个线程在对collection进行迭代时,不允许其他线程对该collection进行结构上的修改。例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,转载 2020-05-28 14:53:16 · 374 阅读 · 0 评论 -
Java枚举类的使用
主要内容:如何自定义枚举类如何使用关键字enum定义枚举类Enum类的主要方法实现接口的枚举类枚举类的使用类的对象只有有限个,确定的。 举例如下:- 星期:Monday(星期一)、......、Sunday(星期天)- 性别:Man(男)、Woman(女) - 季节:Spring(春节)......Winter(冬天) - 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银 行卡)、CreditCard(信用卡) - 就职状态:原创 2020-05-24 22:18:56 · 514 阅读 · 1 评论 -
StringBuffer和StringBuilder的源码解析及扩容机制
StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储StringBuffer和StringBuilder在底层实现和内存结构上是一样的,它们的方法的作用也是一样的,只不过StringBuffer里的方法都被声明为了同步方法(用synchronized关键字修饰),所以才产生了线程安全和线程不安全的问题。由于它们的底层实现内存结构都是一样的,所以现在以S.原创 2020-05-18 19:45:23 · 849 阅读 · 1 评论 -
Java String常用方法
int length():返回字符串的长度: return value.lengthchar charAt(int index): 返回某索引处的字符return value[index]boolean isEmpty():判断是否是空字符串:return value.length == 0String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写String toUpperCase():使用默认语言环境,将 String 中的所有字符转..原创 2020-05-17 16:24:52 · 132 阅读 · 0 评论 -
Java使用线程池创建多线程
在JDK5.0之前,创建线程有2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。新增方式:使用线程池背景原创 2020-05-16 12:03:21 · 1836 阅读 · 0 评论 -
【Java面经整理】wait()、notify()、notifyAll()
ps:Java面试题整理专栏,专门收集整理搬运面试题和答案wait() 与 notify() 和 notifyAll()wait():令当前线程挂起并放弃CPU、同步资源并等待,使别的线程可访问并修改共享资源,而当 前线程排队等候其他线程调用notify()或notifyAll()方法唤醒,唤醒后等待重新获得对监视器的所有 权后才能继续执行。notify():唤醒正在排队等待同步资源的线程中优先级最高者结束等待notifyAll ():唤醒正在排队等待资源的所有线程结束等待.这三个原创 2020-05-16 11:37:29 · 293 阅读 · 0 评论 -
Java实现Callable接口创建多线程
在JDK5.0之前,创建线程有2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Java实现Callable接口创建多线程:/** * 例子:遍历100以内的偶数,并计算100以内所有偶数的总和原创 2020-05-15 23:21:21 · 1300 阅读 · 0 评论 -
Java锁都有哪些?
转载自:http://blog.itpub.net/31545684/viewspace-2375117/Java15种锁的介绍在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁 / 非公平锁可重入锁 / 不可重入锁独享锁 / 共享锁互斥锁 / 读写锁乐观锁 / 悲观锁分段锁偏向锁 / 轻量级锁 / 重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进转载 2020-05-15 18:42:01 · 267 阅读 · 0 评论 -
【Java线程通信】线程1、线程2交替打印1-100
【Java线程通信】线程1、线程2交替打印1-100线程通信的例子:使用两个线程打印1-100 线程1,线程2 交替打印涉及到的三个方法:wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。说明:1.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或原创 2020-05-15 17:42:40 · 318 阅读 · 0 评论 -
Lock锁方式解决线程安全问题
Lock锁方式解决线程安全问题Lock(锁)从JDK 5.0开始,Java提供了更强大的线程同步机制——通过显式定义同 步锁对象来实现同步。同步锁使用Lock对象充当。java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的 工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象 加锁,线程开始访问共享资源之前应先获得Lock对象。ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和原创 2020-05-15 11:53:08 · 447 阅读 · 0 评论 -
synchronized与Lock的区别与联系
Lock和synchronized的比较Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现。synchronized发生异常时,会自动释放线程占有的锁;而Lock在发生异常时,如果没有主动通过unLock()方法去释放锁,则可能会造成死锁,因此使用Lock时需要在finally块中释放锁。Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断。通过Loc原创 2020-05-14 17:33:52 · 301 阅读 · 1 评论 -
Java的几种锁
1. 可重入锁如synchronized和ReentrantLock都是可重入锁,可重入性实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。当一个线程执行到某个synchronized方法时,如method1方法,而在method1中会调用另一个synchronized方法method2,此时线程不必重新去申请锁,而是可以直接执行method2。如递归方法的调用,如果递归方法被synchronized修饰,如果synchronized不是可重入的,这样就会出现自己等待自己释放锁的情况。原创 2020-05-14 17:13:34 · 212 阅读 · 0 评论 -
Java同步代码块和同步方法处理Thread类和Runnable的线程安全问题
Java同步代码块和同步方法处理Thread类和Runnable的线程安全问题源出处:http://www.gulixueyuan.com/my/course/310例子:创建三个窗口卖票,总票数为100张问题:卖票过程中,出现了重票、错票 -->出现了线程的安全问题问题出现的原因:当某个线程操作车票的过程中,操作尚未完成时,其他线程参与进来,也操作车票。如何解决:当一个线程a在操作ticket的时候,其他线程不能参与进来。直到线程a操作完ticket时,其他线程才可以开始操作ticket原创 2020-05-14 15:20:27 · 335 阅读 · 0 评论 -
Java 线程的生命周期及五种状态转换
Java 线程的生命周期及五种状态转换JDK中用Thread.State类定义了线程的几种状态想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态:新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态,如 Thread t = new MyThread();就绪: 处于新建状态的线程调用线程对象的start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的原创 2020-05-10 23:33:13 · 894 阅读 · 2 评论 -
【Java面经整理】Thread中,run方法和start方法的区别
java Thread中,run方法和start方法的区别,下面说法错误的是?ps:Java面试题整理专栏,专门收集整理搬运面试题和答案链接:https://www.nowcoder.com/questionTerminal/8b92d18f34a743adbdb1f2e76a8d2232来源:牛客网java Thread中,run方法和start方法的区别,下面说法错误的是?A.通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。B.他们都可以实现了原创 2020-05-10 20:35:56 · 788 阅读 · 0 评论 -
Java方法执行内存分析
以下程序在JVM中如何执行?public class testMethod(){ public static void main(String[] args){ int a = 10; int b = 20; int retValue = sumInt(a, b); System.out.println("retValue = " + retValue); ...原创 2020-05-06 14:55:32 · 1017 阅读 · 0 评论 -
Java this关键字
ps:内容来自尚硅谷,同学们可以参考视频,看完基本就懂了:http://www.gulixueyuan.com/course/309/task/7891/showhttp://www.gulixueyuan.com/course/309/task/7892/showthis关键字的使用详解:1.this可以用来修饰、调用:属性、方法、构造器2.this修饰属性和方法:可以把this理...原创 2020-04-20 23:42:46 · 150 阅读 · 0 评论 -
Java四种访问权限修饰符
ps:内容来自尚硅谷:http://www.gulixueyuan.com/my/course/309Java权限修饰符public、protected、(缺省)、private置于类的成员定义前, 用来限定对象对该类成员的访问权限对于class的权限修饰只可以用public和default(缺省)。public类可以在任意地方被访问。default类只可以被同一个包内部的类访问...原创 2020-04-20 17:26:43 · 233 阅读 · 0 评论 -
Java匿名对象
Java匿名对象一、匿名对象虽然是创建对象的简化写法,但是应用场景非常有限。创建匿名对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量。创建匿名对象时,会在堆区中给对象分配内存空间,但是却没有在栈区中添加一个首地址的引用,即没有在栈中分配地址指向堆区。因为没有对该对象进行引用,所以匿名对象一旦使用完后,就会被垃圾回收期器回收匿名对象:没有变量名的对象。语法格式:new 类名(...原创 2020-04-18 09:18:24 · 326 阅读 · 0 评论 -
Java实现输出100以内的质数及算法结构优化
输出100以内的所有质数质数:也叫素数,只能被1和他本身整除的自然数最小的质数:2方法一:效率很低public class PrimeNumber { public static void main(String[] args) { } @Test public void method1(){ boolean b = true;...原创 2020-04-15 17:51:17 · 2244 阅读 · 0 评论 -
JAVA数组元素默认值
byte,short,int,long类型定义的数组,初始化默认是0float、double类型定义的数组,默认值是0.0String类型定义的数组,默认值是nullchar类型定义的数组,默认值是‘0’(’\u0000’)boolean类型定义的数组,默认值是false...转载 2020-04-14 22:46:46 · 920 阅读 · 0 评论 -
Java实现数组反转的几种方法
Java实现数组反转的几种方法要求:首先创建一个长度是5的数组,并填充随机数。对这个数组实现反转效果方法一: /** * 方法一:使用临时数组 */ @Test public void method1(){ int[] array = new int[5]; System.out.println("【方法一】:...原创 2020-04-14 00:09:31 · 19653 阅读 · 4 评论 -
Java输出数组最小值的几种方法
Java输出数组最小值的几种方法要求:首先创建一个长度是5的数组然后给数组的每一位赋予随机整数找出最小(大)的一个值出来最小值:方法一:该方法来自HOW2J:https://how2j.cn/k/array/array-create/280.html int array[] = new int[5]; System.out.println("数组的...原创 2020-04-12 12:09:06 · 13362 阅读 · 1 评论