JAVASE
JAVASE
JustinNeil
年少是你未醒的梦话,风华是燃尽的彼岸花
展开
-
Java 8新特性分享
Java 8新特性分享前言接口的默认方法Lambda表达式函数式接口方法和构造函数引用Lambda表达式作用域访问局部变量访问字段和静态变量访问接口默认方法内置函数式接口PredicatesFunctionSuppliersConsumerComparatorOptionalStreamFilterSortedMapMatchCountReduceParallel StreamsSequentia...原创 2019-08-04 09:37:00 · 152 阅读 · 0 评论 -
JVM内存区域浅析
JVM内存区域概述运行时数据区域程序计数器虚拟机栈本地方法栈堆方法区运行时常量池直接内存概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟...原创 2019-08-02 08:43:03 · 196 阅读 · 0 评论 -
LinkedList源码分析
LinkedList简介内部结构分析LinkedList源码分析构造方法add方法根据位置取数据的方法根据对象得到索引的方法检查链表是否包含某对象的方法:删除方法unlink(Node x) 方法:LinkedList类常用方法测试简介LinkedList是一个实现了List接口和Deque接口的双向链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque...原创 2019-08-01 20:57:23 · 108 阅读 · 0 评论 -
HashMap和HashTable的区别
HashMap 和 HashTable 的区别线程是否安全效率对Null key 和Null value的支持初始容量大小和每次扩充容量大小的不同底层数据结构线程是否安全HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧效率因为线程...原创 2019-08-01 20:35:07 · 150 阅读 · 0 评论 -
ArrayList源码分析
ArrayList源码分析构造函数ArrayList 扩容机制add 方法ensureCapacityInternal() 方法ensureExplicitCapacity() 方法grow() 方法hugeCapacity() 方法。System.arraycopy() 和 Arrays.copyOf()方法System.arraycopy() 方法Arrays.copyOf()方法两者联系和区...原创 2019-08-01 20:18:02 · 356 阅读 · 0 评论 -
同步代码块和同步方法的区别
同步方法块和同步方法的区别只需要对临界区的代码进行同步在同步代码块中,我们可以自由选择锁JVM层面的不同这个问题,可以理解为在实际开发中,是使用同步代码块好,还是使用同步方法好?答:同步代码块比同步方法好只需要对临界区的代码进行同步我们要清楚实际要同步的临界区,大多数情况下,只是某一段需要同步当然如果整个方法都需要同步,同步代码块和同步方法其实效果是一样的在同步代码块中,我们可以自由选...原创 2019-08-01 19:59:38 · 1134 阅读 · 0 评论 -
Arrays.asList使用指南
Arrays.asList使用指南简述阿里巴巴Java开发手册对齐的描述使用时的注意事项总结如何正确地将数组转换为List自己动手实现最简便的方法(推荐)使用 Java8 的Stream(推荐)使用 Guava(推荐)使用 Apache Commons Collections简述Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合。例:S...原创 2019-08-01 16:31:01 · 169 阅读 · 0 评论 -
hashCode与equals
hashCode与equalshashCode()介绍为什么要有 hashCodeequals() 的作用equals() 与 == 的区别是什么?hashCode()与equals()的相关规定hashCode() 和 equals() 的关系不会创建“类对应的散列表”会创建“类对应的散列表”hashCode()介绍hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个i...原创 2019-08-01 11:33:28 · 114 阅读 · 0 评论 -
JavaSE面试题整理(4)
简述Java中的集合Java中的集合分为 value,key–vale(Conllection Map)两种。存储值有分为 List 和Set.List是有序的,可以重复的。Set是无序的,不可以重复的。根据 equals和hashcode判断,也就是如果一个对象要存储在 Set中,必须重写 equals和hashCode方法。存储key-value的为map.讲一下HashMap哈...原创 2019-06-30 19:08:43 · 205 阅读 · 0 评论 -
JavaSE面试题整理(3)
常用类java 中的 Math.round(-1.5) 等于多少?考察round()方法在与两个值距离相等时取离正无穷方向更近的值,所以是-1。java 中操作字符串都有哪些类?它们之间有什么区别?String、StringBuffer、StringBuilderString是不可变的字符序列,允许赋空值StringBuffer是可变字符序列,效率不高,线程安全StringBuild...原创 2019-06-27 21:41:26 · 218 阅读 · 0 评论 -
JavaSE面试题整理(2)
什么是面向过程?什么是面向对象?面向过程就是将问题分解成一个一个步骤,逐个执行。面向对象就是将问题事务分解成各个对象,由步骤的直接执行者转为对对象的方法的调用者。== 和 equals 的区别是什么?1)对于==,比较的是值是否相等如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址2)对于equals方法,注意:e...原创 2019-06-26 18:54:32 · 150 阅读 · 0 评论 -
JavaSE面试题整理(1)
Java基础JDK 和 JRE 有什么区别?JDK就是Java Development Kit 的英文缩写。1). 主要面向开发人员。开发人员在软件开发时使用的SDK(Software Development Kit 一般指软件开发包),它提供了Java的开发环境和运行环境。2). 如果你电脑安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台。3). 是整个...原创 2019-06-25 19:41:56 · 1621 阅读 · 1 评论 -
JUnit测试
JUnit可以让我们更有效的同时测试多个方法,也能迅速定位出问题的方法。首先创建测试类public class TestIEmpService { private IEmpService empService = new EmpServiceImpl(); @Test public void testQuery() { TestCase.assertTrue(empServic...原创 2019-05-30 11:10:53 · 153 阅读 · 0 评论 -
反射
反射:通过Class获取字节码文件对象,使用字节码文件对象来获取类的一些描述信息Class: 对Class文件的一种描述成员变量 Field成员方法 Method构造方法 ConstructorJava文件 -编译-> 字节码文件 -运行-> JVM执行Class文件(类加载)类加载当我们执行java.exe命令,这个字节码文件会被加载到内存当中,同时还会为这个字节码文...原创 2019-05-15 19:35:16 · 175 阅读 · 0 评论 -
Java实现简单记事本
用java实现的记事本,基本实现了Windows记事本的主要功能,用到了awt,swing,io流,反射。package com.yjn.justeditor;import java.awt.*;import java.awt.datatransfer.*;import java.awt.event.*;import java.io.*;import java.lang.reflec...原创 2019-05-14 08:28:44 · 2162 阅读 · 4 评论 -
Java网络编程
网络基础知识1、两台计算机间进行通讯需要以下三个条件:IP地址、协议、端口号2、TCP/IP协议:是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也成TCP/IP协议族、或TCP/IP协议栈TCP:Transmission Control Protocol 传输控制协议IP:Internet Protocol 互联网协议3、网络参考模型TCP/IP...原创 2019-05-13 19:18:35 · 194 阅读 · 0 评论 -
线程同步
相关概念同步指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程异步指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待区别一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式同步是用于确保资源一次只能被一个线程使用的过程,同步对于单线程程序没有任何好处。使用同步比非同步的性能差三到四倍什么时候要用同步?ja...原创 2019-05-12 08:55:06 · 197 阅读 · 0 评论 -
多线程
多线程相关概念进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元, 线程:就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。多线程:一个进程中不只有一个线程。并行:多个cpu实例或者多台机器同时执行一段处理逻辑,在时间段内每个具体时间点的同时并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu...原创 2019-05-11 07:26:40 · 236 阅读 · 1 评论 -
CharSet字符集
java.nio.charset 中主要包含了与编码相关的类接口CharSet抽象类CharSet抽象类中提供的常用方法:public static boolean isSupported(String charsetName)判断字段名对应的编码表是否支持public static Charset forName(String charsetName)根据字段名返回对应的编码表对象...原创 2019-05-10 10:31:26 · 270 阅读 · 0 评论 -
Channel通道
Channel 通道Channel原理类似于传统的流对象, FileInputStream FileOutputStream但是有两个主要的区别1.Channel能够将指定的部分或者全部文件映射到内存中全部映射MappedByteBuffer部分文件映射2.程序如果想要读取Channel中的数据,不能够直接读写,必须经过BufferJava中为Channel提供了如下常用的类Fi...原创 2019-05-09 08:16:01 · 13431 阅读 · 0 评论 -
Java NIO概述与Buffer类
NIO概述NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。IO与NIO的主要区别1、面向流与面向缓冲Java IO和NIO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方...原创 2019-05-08 10:25:42 · 382 阅读 · 0 评论 -
IO流补充
数据流可以读写基本数据类型数据输入流:DataInputStreamDataInputStream(InputStream in)数据输出流:DataOutputStreamDataOutputStream(OutputStream out) 注意:1.该流不仅可以读写字节和字符,还可读写基本数据类型2.该流写入文本后的数据是看不懂的3.读取该流写入文本的数据一定要使用Data...原创 2019-05-07 06:51:14 · 138 阅读 · 0 评论 -
常用IO流
字节流字节输出流OutputStream(抽象类)FileOutputStream构造方法FileOutputStream(String name) 创建一个向name文件中写数据的输出文件流FileOutputStream(File file) 创建一个向file文件中写数据的输出文件流FileOutputStream(File file, boolean append) 创...原创 2019-05-06 19:39:39 · 742 阅读 · 0 评论 -
IO流概述
IO流概念的引入将数据保存到变量中,集合等内存区域,就会存在一个弊端,就是程序一旦结束,数据就会立刻消失,无法做到数据的持久化存储。那么如何做到数据的持久化存储呢?—— 将数据从内存写入文件系统做到持久化。如何将数据写入呢?—— Java提供了IO流(输入输出流)。在程序中所有的数据都是以流的方式进行传输或保存的,程序通过输入流读取数据;当程序需要将一些数据长期保存起来的时候使用输出流完成...原创 2019-05-05 10:54:32 · 189 阅读 · 0 评论 -
File类
File类文件和目录路径名的抽象表示形式静态成员变量static String separator 名称分隔符static String pathSeparator 路径分隔符构造方法public File(String pathname) pathname文件路径名public File(String parent,String child) 父路径名 子路径名publi...原创 2019-05-04 23:45:03 · 149 阅读 · 0 评论 -
Enum
枚举指的是在一定范围内取值,这个值必须是枚举类型中的任意一个,而且只能取一个,枚举的本质也是一个类。枚举的成员1.枚举的构造方法必须私有2.枚举当中默认有一个私有的无参构造方法,如果你写了一个带参的构造方法,那么会覆盖无参构造方法,所以编译报错3.枚举里面的抽象方法是有意义的,其他成员没有意义4.枚举的前面必须是枚举的常量成员枚举中的方法String name() 返回枚举的名称i...原创 2019-05-03 20:31:48 · 451 阅读 · 0 评论 -
Map接口及其实现类
Map接口Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value;Map中的键值对以Entry类型的对象实例形式存在;建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值。Map支持泛型,形式如:Map<K,V>Map中使用put(K key,V...原创 2019-05-03 09:27:29 · 7349 阅读 · 1 评论 -
Set接口及其实现类
Setset接口是继承自Collection的子接口,特点是元素不重复,存储无序。在set接口的实现类中添加重复元素是不会成功的,判断两个元素是否重复根据元素类重写的hashCode()和equals()方法。 Set<String> set = new HashSet<String>(); set.add("ab"); set.add("ac"); s...原创 2019-05-02 07:40:02 · 4980 阅读 · 0 评论 -
泛型
泛型概念泛型在很多强类型语言中都有,目的是在编写代码时定义一些可变部分,这些可变部分的类型在使用前必须指明。Java中泛型是在编译期就确定类型的,是一种参数化类型,可以解决类型转换的安全问题。泛型由JDK1.5后引入,类型参数必须是引用类型。格式:<类型参数>泛型的好处:1.提高了程序的安全性2.消除了黄色警告线3.在编译时期将类型确定,减少不必要的强转代码泛型根据放...原创 2019-05-01 09:51:38 · 270 阅读 · 0 评论 -
List接口的实现类
ArrayList底层存储方式是数组;有序,有索引;元素可以重复;可以存储null值;随机访问速度快,修改快,增加/插入或者移除/删除的效率慢;线程不安全Vector类似于ArrayList,底层数据结构是数组,插入和移除性能较差,线程安全,效率低。Vector类特有方法public void addElement(E obj)public E elementAt(int index)...原创 2019-04-30 14:31:08 · 711 阅读 · 1 评论 -
集合的遍历与List
集合的遍历是经常要做的操作,今天介绍几种集合的遍历方式。Iterater对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration,迭代器依赖于集合而存在。boolean hasNext()如果仍有元素可以迭代,则返回 true。E next()返回迭代的下一个元素。注意:抛出: NoSuchElem...原创 2019-04-29 16:21:12 · 250 阅读 · 0 评论 -
集合框架
集合框架图说明:对于以上的框架图有如下几点说明1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2. 集合接口:8个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3. 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现...原创 2019-07-15 08:27:41 · 477 阅读 · 1 评论 -
异常
异常概述异常:异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。简单来说就是程序出现了不正常的情况。异常本质就是Java当中对可能出现的问题进行描述的一种对象体现。常见异常:算术异常(ArithmeticException)空指针异常(NullPointException)数组越界异常(ArrayIndexOutOfBoundsException)类型转换异常(C...原创 2019-04-27 19:54:43 · 165 阅读 · 0 评论 -
Javadoc文档注释
文档注释是为了用Javadoc工具自动生成API文档而写的注释,本文主要介绍文档注释的写法。文档注释与一般注释的最大区别在于起始符号是/**而不是/*或//。文档注释只负责描述类(class)、接口(interface)、方法(method)、构造器(constructor)、成员字段(field)。相应地,文档注释必须写在类、接口、方法、构造器、成员字段前面,而写在其他位置,比如函数内部,是...原创 2019-04-26 16:11:50 · 846 阅读 · 0 评论 -
BigInteger与BigDecimal类
应用背景当基本整型和浮点型的范围或精度无法满足项目的需求时,我们可以使用BigInteger和BigDecimal类,这两个类可以处理包含任意长度序列的数值。BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。BigInteger构造方法public BigInteger(String val)成员方法//大整数加减乘除public Bi...原创 2019-04-25 16:20:40 · 351 阅读 · 0 评论 -
日期时间相关类
本文主要介绍几个Java中常用的日期时间相关的类,Date,DateFormat,CalendarDateDate类是Java中表示特定时间的类,精确到毫秒,有很多方法已经不再使用,下面仅介绍还在使用的几种方法:构造方法public Date() 根据当前的默认毫秒值创建日期对象public Date(long date) 根据给定的毫秒值创建日期对象成员方法public lo...原创 2019-04-25 10:46:30 · 280 阅读 · 0 评论 -
基本类型包装类
基本数据类型的包装类可以使用基本类型对应的类的相关成员变量和成员方法,相比于基本数据类型,包装类更易于使用。八大基本数据类型byte short int long float double char boolean对应的包装类Byte Short Integer Long Float Double Chara...原创 2019-04-24 20:24:10 · 189 阅读 · 0 评论 -
正则表达式
正则表达式概述概念: 使用单个字符串来描述/匹配一系列符合某个语法规则的字符串在Java里面来学习正则表达式的目的主要就是使用正则表达式来处理字符串复杂的查找 find/替换replace/匹配matches/分割split工作使用步骤1.通过大量的字符串找规律定义规则2.使用这种规则去匹配新的字符串3.匹配成功作出相应的操作(匹配 查找 替换 分割)工具:https://regex...原创 2019-04-24 19:24:57 · 275 阅读 · 0 评论 -
StringBuffer与StringBuilder
使用String类,每次拼接一个字符串,系统都为之开辟一个新的内存空间,这样既耗时又占用了大量的空间,StringBuffer就可以处理这个问题,它是一个字符串缓冲区。StringBuffer类概述线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意 时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。构造方法S...原创 2019-04-24 17:15:30 · 248 阅读 · 1 评论 -
String类
String类在Java中是非常常用的一个类,今天简单介绍一下String类中的常用方法。String类常用于创建和操作字符串,String类是被定义为final,不可以被子类继承,对象内容创建后就无法被改变。特点:Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。字符串是常量,它们的值在创建之后不能更改;字符串缓冲区支持可变的字符串,因为 String 对象是不...原创 2019-04-23 20:28:37 · 161 阅读 · 0 评论