![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSE
JustinNeil
年少是你未醒的梦话,风华是燃尽的彼岸花
展开
-
强引用、弱引用、软引用与虚引用
强引用、弱引用、软引用与虚引用强引用强引用的特点软引用弱引用虚引用:(PhantomReference)(对象回收和跟踪)强引用 强引用指普通的对象引用例如:StringBuffer str = new StringBuffer("hello world"); 局部变量str会被放到栈里,而StringBuffer实例对象会被放在堆内,局部变量str指向堆内的StringBuffe...原创 2019-08-13 20:15:15 · 193 阅读 · 0 评论 -
常用IO流
字节流字节输出流OutputStream(抽象类)FileOutputStream构造方法FileOutputStream(String name) 创建一个向name文件中写数据的输出文件流FileOutputStream(File file) 创建一个向file文件中写数据的输出文件流FileOutputStream(File file, boolean append) 创...原创 2019-05-06 19:39:39 · 728 阅读 · 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 · 2128 阅读 · 4 评论 -
Channel通道
Channel 通道Channel原理类似于传统的流对象, FileInputStream FileOutputStream但是有两个主要的区别1.Channel能够将指定的部分或者全部文件映射到内存中全部映射MappedByteBuffer部分文件映射2.程序如果想要读取Channel中的数据,不能够直接读写,必须经过BufferJava中为Channel提供了如下常用的类Fi...原创 2019-05-09 08:16:01 · 13209 阅读 · 0 评论 -
泛型
泛型概念泛型在很多强类型语言中都有,目的是在编写代码时定义一些可变部分,这些可变部分的类型在使用前必须指明。Java中泛型是在编译期就确定类型的,是一种参数化类型,可以解决类型转换的安全问题。泛型由JDK1.5后引入,类型参数必须是引用类型。格式:<类型参数>泛型的好处:1.提高了程序的安全性2.消除了黄色警告线3.在编译时期将类型确定,减少不必要的强转代码泛型根据放...原创 2019-05-01 09:51:38 · 262 阅读 · 0 评论 -
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 · 186 阅读 · 0 评论 -
List接口的实现类
ArrayList底层存储方式是数组;有序,有索引;元素可以重复;可以存储null值;随机访问速度快,修改快,增加/插入或者移除/删除的效率慢;线程不安全Vector类似于ArrayList,底层数据结构是数组,插入和移除性能较差,线程安全,效率低。Vector类特有方法public void addElement(E obj)public E elementAt(int index)...原创 2019-04-30 14:31:08 · 703 阅读 · 1 评论 -
BigInteger与BigDecimal类
应用背景当基本整型和浮点型的范围或精度无法满足项目的需求时,我们可以使用BigInteger和BigDecimal类,这两个类可以处理包含任意长度序列的数值。BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。BigInteger构造方法public BigInteger(String val)成员方法//大整数加减乘除public Bi...原创 2019-04-25 16:20:40 · 332 阅读 · 0 评论 -
日期时间相关类
本文主要介绍几个Java中常用的日期时间相关的类,Date,DateFormat,CalendarDateDate类是Java中表示特定时间的类,精确到毫秒,有很多方法已经不再使用,下面仅介绍还在使用的几种方法:构造方法public Date() 根据当前的默认毫秒值创建日期对象public Date(long date) 根据给定的毫秒值创建日期对象成员方法public lo...原创 2019-04-25 10:46:30 · 267 阅读 · 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 · 358 阅读 · 0 评论 -
集合的遍历与List
集合的遍历是经常要做的操作,今天介绍几种集合的遍历方式。Iterater对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration,迭代器依赖于集合而存在。boolean hasNext()如果仍有元素可以迭代,则返回 true。E next()返回迭代的下一个元素。注意:抛出: NoSuchElem...原创 2019-04-29 16:21:12 · 233 阅读 · 0 评论 -
访问权限修饰符总结
Java中的访问权限修饰符一共有四个,public,protected,default(默认),private,它们可以访问的范围如下表访问权限修饰符本类同包下(普通类,子类)不同包的子类不同包的普通类public√√√√protected√√√protected√√private√总结:1.访问权限修饰符有四...原创 2019-04-20 16:16:53 · 358 阅读 · 0 评论 -
super与this关键字
this关键字this:代表当前类的对象引用this特点每个类的每个非静态方法(没有被static修饰)都会隐含一个this引用名称,它指向调用这个方法的对象。当在方法中使用本类的属性时,都会隐含地使用this名称,当然也可以明确指定。this可以看作是一个变量,它的值就是当前对象的this使用场景当局部变量和成员变量同名时使用this关键字this关键字可以访问本类构造函数su...原创 2019-04-20 16:08:29 · 221 阅读 · 0 评论 -
IO流概述
IO流概念的引入将数据保存到变量中,集合等内存区域,就会存在一个弊端,就是程序一旦结束,数据就会立刻消失,无法做到数据的持久化存储。那么如何做到数据的持久化存储呢?—— 将数据从内存写入文件系统做到持久化。如何将数据写入呢?—— Java提供了IO流(输入输出流)。在程序中所有的数据都是以流的方式进行传输或保存的,程序通过输入流读取数据;当程序需要将一些数据长期保存起来的时候使用输出流完成...原创 2019-05-05 10:54:32 · 176 阅读 · 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 · 137 阅读 · 0 评论 -
继承
继承引入假设多个类存在相同属性和行为时,我们同样可以将这些内容抽取到单独的一个类中,那么这多个类没有必要再定义这些属性和行为,只需要继承这个单独的类就好了,这就是继承。例如:小学生,中学生,大学生,他们都有姓名,年龄,学号的属性,交学费的行为,我们可以把这些相同的属性和行为抽取出来放到单独的一个学生类中,小学生,中学生,大学生只需要继承学生类就好了,这样大大减少了代码量。总结:类是对对象的抽...原创 2019-04-20 14:34:15 · 247 阅读 · 0 评论 -
基本类型包装类
基本数据类型的包装类可以使用基本类型对应的类的相关成员变量和成员方法,相比于基本数据类型,包装类更易于使用。八大基本数据类型byte short int long float double char boolean对应的包装类Byte Short Integer Long Float Double Chara...原创 2019-04-24 20:24:10 · 181 阅读 · 0 评论 -
IO流补充
数据流可以读写基本数据类型数据输入流:DataInputStreamDataInputStream(InputStream in)数据输出流:DataOutputStreamDataOutputStream(OutputStream out) 注意:1.该流不仅可以读写字节和字符,还可读写基本数据类型2.该流写入文本后的数据是看不懂的3.读取该流写入文本的数据一定要使用Data...原创 2019-05-07 06:51:14 · 127 阅读 · 0 评论 -
CharSet字符集
java.nio.charset 中主要包含了与编码相关的类接口CharSet抽象类CharSet抽象类中提供的常用方法:public static boolean isSupported(String charsetName)判断字段名对应的编码表是否支持public static Charset forName(String charsetName)根据字段名返回对应的编码表对象...原创 2019-05-10 10:31:26 · 251 阅读 · 0 评论 -
JVM内存区域浅析
JVM内存区域概述运行时数据区域程序计数器虚拟机栈本地方法栈堆方法区运行时常量池直接内存概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟...原创 2019-08-02 08:43:03 · 186 阅读 · 0 评论 -
LinkedList源码分析
LinkedList简介内部结构分析LinkedList源码分析构造方法add方法根据位置取数据的方法根据对象得到索引的方法检查链表是否包含某对象的方法:删除方法unlink(Node x) 方法:LinkedList类常用方法测试简介LinkedList是一个实现了List接口和Deque接口的双向链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque...原创 2019-08-01 20:57:23 · 95 阅读 · 0 评论 -
HashMap和HashTable的区别
HashMap 和 HashTable 的区别线程是否安全效率对Null key 和Null value的支持初始容量大小和每次扩充容量大小的不同底层数据结构线程是否安全HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧效率因为线程...原创 2019-08-01 20:35:07 · 138 阅读 · 0 评论 -
ArrayList源码分析
ArrayList源码分析构造函数ArrayList 扩容机制add 方法ensureCapacityInternal() 方法ensureExplicitCapacity() 方法grow() 方法hugeCapacity() 方法。System.arraycopy() 和 Arrays.copyOf()方法System.arraycopy() 方法Arrays.copyOf()方法两者联系和区...原创 2019-08-01 20:18:02 · 281 阅读 · 0 评论 -
Arrays.asList使用指南
Arrays.asList使用指南简述阿里巴巴Java开发手册对齐的描述使用时的注意事项总结如何正确地将数组转换为List自己动手实现最简便的方法(推荐)使用 Java8 的Stream(推荐)使用 Guava(推荐)使用 Apache Commons Collections简述Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合。例:S...原创 2019-08-01 16:31:01 · 155 阅读 · 0 评论 -
hashCode与equals
hashCode与equalshashCode()介绍为什么要有 hashCodeequals() 的作用equals() 与 == 的区别是什么?hashCode()与equals()的相关规定hashCode() 和 equals() 的关系不会创建“类对应的散列表”会创建“类对应的散列表”hashCode()介绍hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个i...原创 2019-08-01 11:33:28 · 105 阅读 · 0 评论 -
Java 8新特性分享
Java 8新特性分享前言接口的默认方法Lambda表达式函数式接口方法和构造函数引用Lambda表达式作用域访问局部变量访问字段和静态变量访问接口默认方法内置函数式接口PredicatesFunctionSuppliersConsumerComparatorOptionalStreamFilterSortedMapMatchCountReduceParallel StreamsSequentia...原创 2019-08-04 09:37:00 · 137 阅读 · 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 · 194 阅读 · 0 评论 -
JavaSE面试题整理(3)
常用类java 中的 Math.round(-1.5) 等于多少?考察round()方法在与两个值距离相等时取离正无穷方向更近的值,所以是-1。java 中操作字符串都有哪些类?它们之间有什么区别?String、StringBuffer、StringBuilderString是不可变的字符序列,允许赋空值StringBuffer是可变字符序列,效率不高,线程安全StringBuild...原创 2019-06-27 21:41:26 · 199 阅读 · 0 评论 -
JavaSE面试题整理(2)
什么是面向过程?什么是面向对象?面向过程就是将问题分解成一个一个步骤,逐个执行。面向对象就是将问题事务分解成各个对象,由步骤的直接执行者转为对对象的方法的调用者。== 和 equals 的区别是什么?1)对于==,比较的是值是否相等如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址2)对于equals方法,注意:e...原创 2019-06-26 18:54:32 · 139 阅读 · 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 · 1564 阅读 · 1 评论 -
JUnit测试
JUnit可以让我们更有效的同时测试多个方法,也能迅速定位出问题的方法。首先创建测试类public class TestIEmpService { private IEmpService empService = new EmpServiceImpl(); @Test public void testQuery() { TestCase.assertTrue(empServic...原创 2019-05-30 11:10:53 · 139 阅读 · 0 评论 -
线程同步
相关概念同步指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程异步指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待区别一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式同步是用于确保资源一次只能被一个线程使用的过程,同步对于单线程程序没有任何好处。使用同步比非同步的性能差三到四倍什么时候要用同步?ja...原创 2019-05-12 08:55:06 · 184 阅读 · 0 评论 -
多线程
多线程相关概念进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元, 线程:就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。多线程:一个进程中不只有一个线程。并行:多个cpu实例或者多台机器同时执行一段处理逻辑,在时间段内每个具体时间点的同时并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu...原创 2019-05-11 07:26:40 · 224 阅读 · 1 评论 -
反射
反射:通过Class获取字节码文件对象,使用字节码文件对象来获取类的一些描述信息Class: 对Class文件的一种描述成员变量 Field成员方法 Method构造方法 ConstructorJava文件 -编译-> 字节码文件 -运行-> JVM执行Class文件(类加载)类加载当我们执行java.exe命令,这个字节码文件会被加载到内存当中,同时还会为这个字节码文...原创 2019-05-15 19:35:16 · 165 阅读 · 0 评论 -
正则表达式
正则表达式概述概念: 使用单个字符串来描述/匹配一系列符合某个语法规则的字符串在Java里面来学习正则表达式的目的主要就是使用正则表达式来处理字符串复杂的查找 find/替换replace/匹配matches/分割split工作使用步骤1.通过大量的字符串找规律定义规则2.使用这种规则去匹配新的字符串3.匹配成功作出相应的操作(匹配 查找 替换 分割)工具:https://regex...原创 2019-04-24 19:24:57 · 265 阅读 · 0 评论 -
StringBuffer与StringBuilder
使用String类,每次拼接一个字符串,系统都为之开辟一个新的内存空间,这样既耗时又占用了大量的空间,StringBuffer就可以处理这个问题,它是一个字符串缓冲区。StringBuffer类概述线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意 时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。构造方法S...原创 2019-04-24 17:15:30 · 232 阅读 · 1 评论 -
package与import关键字
package关键字为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包(package)简单来说,包package可以理解为"分门别类"地存放源文件,以避免命名冲突,便于将来查找。包的格式package 包名;包的特点package来声明包package语句必须是java源文件中的第一条语句。(若无这条语句,则放置在无名包下)用"."来指明包(目录)的层次...原创 2019-04-20 08:29:24 · 510 阅读 · 0 评论 -
八大排序算法总结
Java八大排序算法总结排序是开发中应用非常广的操作,目的是使一组无序的数据根据某个关键字排列成有序的数据。名词解释稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一...原创 2019-04-17 09:36:46 · 443 阅读 · 0 评论 -
Java中的break,continue和return关键字
本文主要讨论break,continue和return等关键字的用法以及常见的问题。breakbreak在switch语句和循环结构中都可以出现,作用是跳出switch语句或最内层循环。例如switch(n){case 1: break;default: break;}for(int i=0;i<5;i++){ ...原创 2019-04-13 19:23:03 · 248 阅读 · 0 评论 -
Java运算符与表达式
运算符指的是针对常量和变量间运算的符号。常见的运算符包括:算术运算符,逻辑运算符,位运算符,关系运算符,赋值运算符,三目运算符,移位运算符算术运算符算术运算符包括:+(加)、-(减)、*(乘)、\(除)、%(求余)、++(自增)、--(自减)。+运算符除了用作加法外还可以用作字符串连接符。Tips:分离一个数的每一位,例如:1234个位:(1234/1)%10十位:(1...原创 2019-04-10 10:03:30 · 342 阅读 · 0 评论