
Java基础
要做大魔王
莫听穿林打叶声, 何妨吟啸且徐行。竹杖芒鞋轻胜马, 谁怕?一蓑烟雨任平生。料峭春风吹酒醒, 山头斜照却相迎。 回首向来萧瑟处, 归去, 也无风雨也无晴。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java NIO.2 之Paths和Path
一、简介 Path是java.nio.file下的接口, 表示一个与平台无关的路径或者用于定位一个文件。它的功能与File有颇多相似的地方, 并且Path可以通过File toFile()方法返回一个File对象。 二、Paths 这个类的作用就是返回一个Path对象, 并且它只有2个静态方法。 -public static Path get(String first, String… more)...原创 2019-10-23 10:45:59 · 644 阅读 · 0 评论 -
Java之对象序列化
一、简介 对象序列化的目的是将对象保存到磁盘, 或者允许在网络中传输。相对的, 反序列化就是根据磁盘中保存的文件恢复对象。 要让某个类的对象能够序列化, 需要实现下面2个接口之一: -Serializable -Externalizable 二、对象流实现序列化 通过实现Serializable接口让一个类的对象可序列化的步骤十分简单, 仅仅是在声明一个类时声明实现该接口即可, 无需实现任何方法 ...原创 2019-10-16 22:16:32 · 516 阅读 · 0 评论 -
Java之IO流
Java 1.0 & 1.1 对应的IO流 1.0版本 1.1版本 InputStream Reader converter: InputStreamReader OutputStream Write rconverter: OutputStreamWriter FileInputStream FileReader FileOutputStream FileWr...原创 2019-10-15 12:26:15 · 224 阅读 · 0 评论 -
Java之treeSet
文章目录 一、底层数据结构 public TreeSet() { this(new TreeMap<E,Object>()); } 该数据结构是基于treeMap实现的 二、方法思维导图 三、部分方法源代码 1.add(E e) (1) 将参数放入二叉排序树中 // 部分方法源码 // 查找插入的位置 do { parent = t; ...原创 2019-09-15 22:31:03 · 198 阅读 · 0 评论 -
java之HashMap
put方法 HashMap添加元素的大致思路: 1.计算元素在table中的索引index 2.创建新元素Entry 3.table[index] = Entry HashMap在存储元素前已经计算好存储的位置.若该位置已存在元素且hash相同, 则修改value. public V put(K key, V value) { if (table == EMPTY_TABLE) ...原创 2019-09-19 09:19:59 · 366 阅读 · 0 评论 -
Java之LinkedHashMap
文章目录一、底层数据结构二、部分方法源码1.构造方法2.put方法2.1 recordAccess——修改集合元素顺序2.2 addEntry & createEntry3.Iterator4. containsValue(Object value) 一、底层数据结构 根据类名定义public class LinkedHashMap<K,V> extends HashMap&l...原创 2019-09-19 09:49:25 · 411 阅读 · 0 评论 -
Java之内部类
文章目录为什么使用?一、简介二、分类三、非静态内部类定义示例四、静态内部类示例——注意与非静态内部类调用区别五、匿名内部类示例六、总结何时使用内部类?使用何种内部类? 毫无疑问, 内部类是定义在类内部的。也就是说, 它既是一个类, 也是一个类的成员。 为什么使用? 通常我们会在类中定义引用类型变量, 相当于借用其它类的功能来辅助本类的功能实现。 既然我们可以借用它类的实现, 为什么还要在类内部来定...原创 2019-09-20 16:55:11 · 179 阅读 · 0 评论 -
Java之初始化语句执行顺序
文章目录一、非继承状态下1.无静态变量2.只存在静态变量3.成员变量与静态变量同时存在二、继承情况下 当我们执行className object = new ClassName()时候代码执行的顺序为何? 一、非继承状态下 1.无静态变量 1.1—— public class OrderTest { public OrderTest(){ System.out.print...原创 2019-09-21 22:54:59 · 1037 阅读 · 1 评论 -
Java之Integer
文章目录一、方法思维导图二、部分方法源码valueOf(int i)parseInt(String s) 一、方法思维导图 Integer主要包含: 类型转换、二进制数操作。 二、部分方法源码 valueOf(int i) // jdk 1.7 public static Integer valueOf(int i) { assert IntegerCache.high >...原创 2019-09-29 19:40:09 · 201 阅读 · 0 评论 -
Java之浮点型
文章目录一、介绍内容二、类型定义三、表示形式四、特殊值五、该用哪一种 一、介绍内容 二、类型 有2种浮点类型: float 和 double. float的有效数字为8位, double为16位. 定义 在默认情况下, 小数为double类型。譬如0.13 若要指定类型, 在数字后加上字母区别。 float类型使用f或F. float f = 1.1234567F; float f1 = 1...原创 2019-09-30 10:06:35 · 241 阅读 · 0 评论 -
Java之字符集简单理解
什么是字符集? 字符的集合 什么是unicode字符集? 是字符的一种编码方示, 为每个字符指定了一个唯一的二进制编码, 简而言之, 就是为每个字符编号。Unicode通常用两个字节表示一个字符。 什么是UTF-8编码? 是unicode字符集的一种实现, UTF-8使用可变长度字节来储存 Unicode字符, 使用1~4字节为每个字符编码。 ASCIl字符只需1字节编码(Unicode范围由U...原创 2019-10-01 17:46:13 · 416 阅读 · 0 评论 -
Java之String
一、底层实现 private final char value[]; String类型是基于字符数组实现的。 二、方法思维导图 三、方法源码展示 1.int length() length是最常用到的方法, 它通常用于计算String的长度。看看注释: The length is equal to the number of Unicode code units in the string. ...原创 2019-10-04 10:38:47 · 278 阅读 · 0 评论 -
Java之Class
简介 每个类被加载之后, 系统会为该类生成一个Class对象, 通过该Class对象就可以访问到JVM中的这个类。一旦获得某个类的Class对象, 程序就可以调用Class对象的方法来获得该类对象和该类的真实信息。 Class的理解 类是对对象的描述。 Class类就是对类的描述。 就类似于概念用于描述、定义事物。但是概念本身也需要被描述的。 作用 Class类的对象作用是运行时提供或获得某个对象...原创 2019-10-06 17:15:45 · 231 阅读 · 0 评论 -
Java之类加载器
文章目录简介加载器加载策略自定义类加载器 简介 类加载器负责将class文件读入内存, 系统为载入内存的类创建对应的Class对象。类加载器通常由JVM提供, JVM提供的加载器通常被称为系统类加载器。此外, 开发者可以通过继承ClassLoader来实现自己的类加载器。 加载器 类加载器的层次结构: Bootstrap ClassLoader: 根类加载器 Extension ClassL...原创 2019-10-08 09:06:21 · 221 阅读 · 0 评论 -
Java之反射
文章目录一、简介二、使用反射生成并操纵对象1、创建对象2、调用方法3、访问成员变量3.1、获取成员变量3.2、设置成员变量的值3.3 取消访问权限检查4、创建数组 一、简介 java反射机制是指, 在运行状态时, 对于任意一个类, 都能够知道它的所有属性和方法; 对于任意一个对象, 都能够调用它的方法和访问它的属性。这种动态获取信息以及调用对象方法的功能被称为反射机制。 反射机制的基本...原创 2019-10-09 09:04:06 · 264 阅读 · 0 评论 -
Java之ArrayDeque
文章目录一、底层数据结构 一、底层数据结构 // 构造方法 public ArrayDeque() { elements = (E[]) new Object[16]; } 该队列是基于数组实现的. 二、方法思维导图 三、 部分方法的源代码 1.add public boolean add(E e) { addLast(e); retur...原创 2019-09-15 09:47:59 · 468 阅读 · 0 评论 -
Java集合之迭代器(Iterator、ListIterator)
文章目录一、方法对比二、方法演示 一、方法对比 Iterator: 1.单向遍历 2.可在迭代过程中执行删除操作 ListIterator: 1.双向遍历 2.可执行删除、添加、修改操作 二、方法演示 ...原创 2019-09-15 09:35:41 · 387 阅读 · 0 评论 -
BigDecimal的使用
BigDecimal主要是处理Java浮点数计算精度丢失的问题. 1. 方法介绍 加、减、乘法的方法类似,区别于方法名。 -加法: BigDecimal add(BigDecimal augend) BigDecimal add(BigDecimal augend, MathContext mc) -减法: BigDecimal subtract(BigDecimal subtrahend) Bi...原创 2019-08-20 11:59:52 · 509 阅读 · 0 评论 -
Int与Integer
1. 什么时候用int,什么时候用Integer 在定义JavaBean的时候要使用Integer定义整形数据,这与数据库查询有关,当某个字段没有值的时候Integer会为null,而int会默认返回0. ...原创 2019-08-26 22:15:13 · 304 阅读 · 0 评论 -
个人对常量池的一点理解
首先我对虚拟机了解的不是很深, 说的不对请指正 1.JVM内存分布 2.常量池 字符串(数字)字面量存在于常量池,常量池在class文件中,之后JVM会将常量池载入内存,并保存在方法区。 tip1: 编译器生成class文件,那么常量池也是编译器生成的啦。 tip2: 再复习下class文件与加载 Java编译器编译Java文件之后产生.class 文件。class文件是二进制文件,内容是只有...原创 2019-08-26 23:42:39 · 191 阅读 · 0 评论 -
一些小陷阱
String a = "abc"; String b = "abc"; System.out.println("a == b" + a == b); 哈哈,第一感觉是不是打印a==btrue呢? 其实会打印false啦。 update waitting…原创 2019-08-27 00:01:21 · 196 阅读 · 0 评论 -
通过反编译来了解String的生成
我们知道创建一个字符串有2种方法: 1. String str = “abc”; 2. String str1 = new String(“abc”); 3. String str2 = “abc” + 字符串引用 第一种是在常量池中创建并返回引用 第二种是调用了String的构造方法并返回引用 第三种是调用了StringBuilder的方法拼接 下面我们通过反编译来了解吧~ 先上代码1 ...原创 2019-08-27 17:50:06 · 541 阅读 · 0 评论 -
Java源码之Arrays
简介 Arrays主要是对数组类型操作。包括排序、查找元素、比较、复制、转化为List、获取hashCode、转为String类型。 排序 -sort 1.排序后为升序 2.数组元素类型为基本类型,可以调用对应的重载方法排序 3.若数组元素类型为对象,在如下情况可以调用sort方法排序 (1) 该类实现了 Comparable接口 (2) 实现比较器接口Comparator —>Java ...原创 2019-08-31 14:28:33 · 230 阅读 · 0 评论 -
Java之Calendar基本使用
Calendar是一个日历类 首先, 从类名定义可以看出它实现了Serializable, Cloneable, Comparable接口。 And, 实现了Comparable就意味着可以使用Arrays.sort的方法对多个Calendar对象进行排序。 class Calendar implements Serializable, Cloneable, Comparable<Calen...原创 2019-09-01 14:48:30 · 371 阅读 · 0 评论 -
Java之枚举
Fine, 我写这个是因为在读Calendar的时候发现对枚举类(enum)的使用不熟悉。 使用原因 清晰明了。例如枚举类SeasonEnum表示的季节,它的实例变量就都代表季节。与直接定义常量相比更容易区分。 打印输出意义明确。若打印SEASON_SPRING就只打印一个数字。若使用枚举可根据枚举实例名打印出属性 创建第一个枚举类 public enum SeasonEnum { /...原创 2019-09-01 20:27:41 · 148 阅读 · 0 评论 -
Java之Collections使用
文章目录一、查询操作1.查找元素2.集合中最大/最小元素3.集合中的是否存在子集合4.集合中是否有相同的元素,没有返回true5.返回元素在集合中出现的次数二、修改集合结构1.对集合的元素排序2.反转集合元素顺序3.打乱集合顺序4.交换集合两个元素的顺序5.以指定元素填充集合6.集合元素移动7.以元素a替换集合所有的元素b8.添加指定元素到指定集合末尾三、返回新的集合/视图1.复制集合2.返回指定...原创 2019-09-03 14:19:44 · 946 阅读 · 0 评论 -
Java之泛型简单使用
Why we use: 1.一旦使用泛型, 获取集合元素不再需要考虑类型强转了, 代码更加简洁。 2.在编译期就能发现问题。 3.让代码扩展性更强。 注:从1.7开始构造器后面不需要带完整的泛型信息。 List<String> strList = new ArrayList<>(); 我直接从Collections的copy方法开始认识吧, 最后再解读该方法声明的含义...原创 2019-09-04 00:17:37 · 221 阅读 · 0 评论 -
Java之final
Fine, 要做关于fianl的笔记也是因为Calendar。原创 2019-09-04 10:52:25 · 159 阅读 · 0 评论 -
Java之Date
已经标注@Deprecated的方法我就不列了。 一、获取Date对象 public Date() public Date(long date) // 无参构造器源码 public Date() { this(System.currentTimeMillis()); } 二、方法 1.判断两个时间的先后 public boolean before(Date when) public ...原创 2019-09-04 12:46:50 · 161 阅读 · 0 评论 -
Java之Formatters(字符串、时间类型格式化)
参考博文: Java 字符串格式化详解 Formatter是一个对常规类型和时间类型格式化输出的类, String.format就是封装了对Formatter方法的调用, 所以本文也可以当做如何使用String.format。这里先展示字符串和时间日期的格式化,。 一、常规类型格式化 格式: %[argument_index$] [flags] [width] [.precision] conve...原创 2019-09-05 10:26:53 · 1321 阅读 · 0 评论 -
数据结构之链表
参考博文: Java数据结构和算法(七)——链表 一、链表定义 是一种链式存储结构, 数据在物理空间是分散存储的. 每个节点包含2部分, 存储的数据和指向下一个节点的地址. 二、链表的种类 1.单链表 单链表特点: 1.只能向一个方向遍历 2.添加元素从头部插入, 若想向尾部插入元素, 必须遍历前n-1个节点 通过单向链表可实现栈, 添加节点和删除头节点对应栈的入栈和出栈 新增节点 实现思...原创 2019-09-08 08:14:32 · 218 阅读 · 0 评论 -
Java集合之LinkedList
底层数据结构原创 2019-09-08 10:23:17 · 145 阅读 · 0 评论 -
Java之使用动态代理笔记
考虑这样一个场景: 假如你需要调用某个类的方法, 但是想在调用这个方法之前进行一些额外的操作, 那么可以考虑使用动态代理(下面说的是JDK动态代理). 首先,构造一个简单的动态代理类需要以下3点: 1.接口 2.接口实现类 3.InvocationHandler实现类 例子 // 接口 public interface Star { void sing(); void dance...原创 2019-08-22 22:33:56 · 139 阅读 · 0 评论