语言——Java——基础
文章平均质量分 67
Star_Ship
方向确定,继续前进。
展开
-
面向对象基本概念及举例理解
对象抽象真实世界的对象有成千上万个属性,是不是把它们通通搬进计算机世界里来呢?回答显然是不行的,分析人员往往把那些只对用计算机管理业务所必须的对象属性映射到计算机里,而忽略那些无助于处理业务的无用信息。这个过程叫作对象抽象。封装封装是把对象的属性、操作结合在一起,构成一个独立的对象。一旦封装,内部信息对外界是隐藏的,也就象一个四周密封的房子一样,不允许直接对对象的属性进行操作,要想操作,只能通过局部原创 2017-06-29 10:31:24 · 2353 阅读 · 0 评论 -
Java(JDK1.9)集合框架归纳总结——Map接口继承体系
注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Map接口实现概述Map的实现体系中,常用的类和接口可以大致分为三层。下面一一说明这些类或接口的特点和作用。第一层第一层包含一个抽象类AbstractMap和一个接口SortedMap。AbstractMap...原创 2018-04-07 15:42:56 · 1256 阅读 · 1 评论 -
JDK1.9 集合框架源码阅读——Map系列——有趣的问题及源码解答
Map.get(Object key) V get(Object key); 该方法将会返回Map中对应于key的value。如果这个key不存在,则返回null。问题那么问题来了,如果这个map本身允许null作为value呢?这样,当该方法返回null时,就会有两种情况,一种是不存在该key,第二种是该key对应的值就是null。解答官方源码注释给出了解决方法:...原创 2018-03-31 15:25:29 · 212 阅读 · 0 评论 -
Java——transient关键字及Java对象序列化
转载自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~好了,废话不多说,下面开始:1. transient的作转载 2018-04-01 18:08:39 · 1129 阅读 · 0 评论 -
Java序列化——Serializable、Externalizable源码阅读与总结
一、Java序列化概述1、什么是序列化序列化(Serialization):是将对象的状态信息转换为可以存储或传输的形式的过程。更通俗地讲,是将该对象字段和状态信息以字节流的方式输出到目的地。2、序列化的应用场景一是实现pojo对象的读写操作,将每个对象转换为字节流,而这些字节流可以被持久化到设备上,再次读取时会将字节流还原成对象。当我们希望某些数据能在程序停止运行后,还...原创 2018-04-01 22:36:26 · 549 阅读 · 0 评论 -
转载:Lock锁机制的原理及与Synchronized的比较——源码解说
文章转载自:https://blog.csdn.net/Luxia_24/article/details/52403033(为了简化阅读难度,本文只挑选了大部分内容进行转载,并对代码进行了注释,更加详细的内容可以参考原文)Lock锁机制的实现原理Lock锁机制存在于Java语言层面,可以通过编程进行控制。Lock机制加锁过程主要通过3个方法:1、Sync.nonfa...转载 2018-04-11 14:59:32 · 405 阅读 · 0 评论 -
TreeSet为什么要用TreeMap来作为底层容器?——来自JDK1.9源码的启示
TreeSet与TreeMap相信很多同学都知道TreeMap和TreeSet,也知道TreeSet是使用TreeMap来容纳元素的,那么问题来了: TreeSet从外观上看是一个一维数组,而TreeMap是一个二维的键值对。为什么要用一个二维的容器来装一维的数据呢?这样不是会浪费map的value域吗?TreeMap中的value里面又是装的什么呢? 这些问题困扰了我很久,直到我看到了T...原创 2018-03-28 21:33:37 · 726 阅读 · 1 评论 -
HashMap与HashTable的哈希算法——JDK1.9源码阅读总结
HashTable中的哈希算法下面是HashTable源码中的put方法:public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw new NullPointerExceptio...原创 2018-04-04 12:42:03 · 840 阅读 · 0 评论 -
LinkedHashMap与LRU——来自源码的启示
LinkedHashMap是什么?public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>LinkedHashMap是HashMap的扩展,它根据元素的插入顺序或者访问顺序(accessOrderd属性指定),使用双向链表,将所有元素连接起来,使得对HashMap的遍历变得有序。 示意图如下:原创 2018-04-06 13:43:29 · 378 阅读 · 0 评论 -
Java集合之WeakHashMap、IdentityHashMap、EnumMap简介
转载自:https://blog.csdn.net/wxc880924/article/details/52683097WeakHashMapWeakHashMap与HashMap的用法基本类似。区别:HashMap的key保留了对实际对象的强引用,这意味着只要HashMap对象不被销毁,还HashMap的所有key所引用的对象就不会被垃圾回收,HashMap也不会自动删除这...转载 2018-04-06 15:41:59 · 222 阅读 · 0 评论 -
Java(JDK1.9)集合框架归纳总结——集合框架图与两个顶级接口
注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Java Collections Framework概述Java集合框架继承图: Java集合框架由两个顶层接口衍生而出。这两个接口区别如下:Collection:保存一维列表,有数组和链表两种形式。Map:保存二...原创 2018-04-06 17:04:20 · 1895 阅读 · 0 评论 -
Java(JDK1.9)集合框架归纳总结——Collection接口的第一层接口和抽象类
注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Collection的第一层接口和抽象类Collection第一层常用接口、类继承体系:Collection的直接后继有3个接口和一个抽象类。3个接口分别是List:Collection接口的有序集合实现,也叫...原创 2018-04-06 19:39:58 · 408 阅读 · 0 评论 -
Java(JDK1.9)集合框架归纳总结——Collection接口的第二层子接口和抽象类
注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Collection的第二层接口和抽象类Collection第二层常用接口、类继承体系: Collection继承体系的第二层,即List、AbstractCollection、Set和Queue的常用直接子类或接口如...原创 2018-04-06 21:29:59 · 556 阅读 · 0 评论 -
Java(JDK1.9)集合框架归纳总结——Collection接口的第三层——应用层
注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Collection接口的第三层——应用层&具体实现应用层就是各个抽象类、底层接口的具体实现,使我们实际使用的各种容器和工具类,如ArrayList、Vector、HashSet、TreeSet等。结构图如下:...原创 2018-04-07 12:53:53 · 712 阅读 · 0 评论 -
遍历Java Map的方法——Java基础
转载自:http://blog.csdn.net/chenlili_liumiao/article/details/7846512我们知道map是由键值对组成的,要获取map中的元素,必须知道key,然后通过map.get(key)来获取值。那么如何遍历Map?将map转化为CollectionSet keySet():获取键的集合Collection values():获取值的集合Set遍历转载 2017-12-23 21:20:21 · 1908 阅读 · 0 评论 -
关于Java泛型实现原理的思考与一般用法示例总结
实现泛型构建 pre-java5面向对象的一个重要目标是对代码重用的支持。支持这个目标的一个重要机制就是泛型机制。在1.5版本之前,java并没有直接支持泛型实现,泛型编程的实现时通过使用继承的一些基本概念来完成的。一、使用object表示泛型 public class MemoryCell{ private Object storedValue; public原创 2017-11-23 21:27:55 · 491 阅读 · 0 评论 -
Java覆盖陷阱:私有方法无法覆盖
总结在Java中,只有非private方法才可以被覆盖;但是还需要密切注意覆盖private方法的现象,虽然编译器不会报错,但是也不会按照我们所期望的来执行。确切地说,在导出类中,对于基类中的private方法,最好采用不同的名字。示例public class PrivateOverride{ private void f(){print("private f()";} public原创 2017-09-04 11:14:10 · 2963 阅读 · 5 评论 -
Java基础之内部类对象的创建
什么是内部类可以将一个类的定义放在另一个类的内部,这就是内部类。如:/外部类public class InnerClassDemo { //内部类 private class Inner{}}怎样创建内部类的对象要想直接创建内部类的对象,必须使用外部类的对象来创建内部类对象,就像下面程序展示的那样。public class InnerClassDemo { //内部类原创 2017-09-13 11:19:04 · 3130 阅读 · 0 评论 -
Java中构造器内部使用多态方法导致的错误
编写构造器时有一条有效的准则:“用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其他方法。”否则就可能出现下面的情况:class Pen{ void draw(){ print("Pen.draw()");} Pen(){ print("Pen() before draw()"); draw(); print("Pen()原创 2017-09-06 18:03:26 · 482 阅读 · 0 评论 -
Java容器的简明归类总结及简单实例
Java的容器分为两类,分别是Collection和Map,先看例子:public class CollectionAndMap { static Collection fill(Collection<String> collection){ collection.add("rat"); collection.add("cat"); colle原创 2017-09-15 17:42:48 · 766 阅读 · 0 评论 -
“一句话+一个例子“理解Java中的代理原理
总结代理是继承与组合之间的中庸之道,我们使用代理时可以拥有更多的控制力,因此我们可以选择只提供成员对象中的方法的某个子集,而不是像继承和组合那样暴露全部方法。Java并没有对代理提供直接支持,但是在众多的Java框架(如Spring等)中,代理是核心思想之一。例子//定义一个宇宙飞船控制器public class SpaceShipControls{ void up(int velocit原创 2017-09-01 15:31:56 · 430 阅读 · 0 评论 -
Java中的Final关键字用法汇总及简单示例
可能使用到final的情况有3种:数据、方法和类。一、final数据对于基本类型,final使数值恒定不变;而对于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法把它改为指向另一个对象。然而,对象本身却是可以被修改的。class Value{ int i; public Value(int i){this.i=i;}}public class FinalDa原创 2017-09-02 10:44:53 · 490 阅读 · 0 评论 -
Java开发测试工具用法简略记录——Junit4 And EasyMock
Junit4Junit是Java中用于测试的一个单元库,其包含以下几项重要功能: @Test注解驱动测试public class RegularExpressionJUnit4Test { private static String zipRegEx = "^\\d{5}([\\-]\\d{4})?$"; private static Pattern pattern; @T原创 2017-10-28 09:34:01 · 377 阅读 · 0 评论 -
Java多线程——线程间协作方式总结及使用示例
线程之间的协作方式方式一、wait()、notify()、notifyAll()wait()提供了一种在任务之间对活动同步的方式。wait()使你可以等待某个条件发生变化,通常,这种条件将由另一个任务来改变。 wait()会在等待外部世界发生变化的时候将任务挂起(而不是执行空循环,进行忙等待),并且只有在notify()或notifyAll()发生时,这个任务才会被唤醒并去检查所产生的变化。 调原创 2017-10-22 16:54:22 · 3658 阅读 · 0 评论 -
Java设计模式之一——模板方法设计模式(Template Method)
Template Method Pattern——模板方法模式设计原则:不要重复DRY(Don’t Repeat Yourself,不要复制自己)OAOO(Once and Only once,仅此一次):避免代码重复GOF给出的模板方法模式定义如下: Define the skeleton of an algorithm in an operation, deferring some原创 2017-10-24 13:59:12 · 555 阅读 · 0 评论 -
如何为我们的程序编写开发文档——Java文档注释
Java文档注释Java文档只是用于生成Java API文档,通过在程序中的类、属性、方法部分加上注释,就可以用javadoc命令生成漂亮的API文档,是程序员进阶的必备技能。 /** comment for class */ public class Test{ /** comment for a attribute */ int number;原创 2017-10-26 17:26:38 · 5472 阅读 · 0 评论 -
设计模式之三——工厂方法模式(Factory Method)&抽象工厂模式(AbstractFacotry)
工厂方法模式(Factory Method)模式名称工厂方法模式(Factory Method)问题客户类不关心使用哪个具体类,只关心该接口所提供的功能。创建过程比较复杂,例如需要初始化其他关联资源,读取配置文件等。接口有很多具体实现或者抽象类有很多具体子类,避免客户端写一大堆if-else逻辑来决定运行时使用哪个具体实现或者具体子类。不希望给客户程序暴露过多此类的内部结果或创建过程,降低耦原创 2017-10-25 15:26:13 · 455 阅读 · 0 评论 -
Java设计模式之Singleton——四种不同的单例模式(Singleton)
单例模式(Singleton)模式名称单例模式(Singleton [ˈsɪŋgltən])问题如果要保证系统里最多只能存在一个实例时,我们就需要单例模式。例如缓存池、数据库连接池等。解决方案实例一:最简单的单例模式 public class Singleton{ private static Singleton instanc...原创 2017-10-24 17:02:21 · 1293 阅读 · 0 评论 -
关于Java协变性的思考
Java协变性一、什么是协变性?简而言之,如果A IS-A B,那么A[] IS-A B[]。 举例:现在有类型Person、Employee和Student。Employee 是一个(IS-A) Person,Student是一个(IS-A)Person。那么下面的语句可以通过编译: Person[] arr = new Employee[5]; //能通过编译,因为协变性,数组是兼容原创 2017-11-23 17:48:14 · 505 阅读 · 0 评论 -
JavaI/O中使用readUTF()报java.io.EOFException暂时解决方案
问题描述练习JavaI/O时自己试着写demo,当使用RandomAccessFile的readUTF()方法时报java.io.EOFException。源码如下: DirList.javapackage com.star.io;import java.io.IOException;import java.io.RandomAccessFile;public class DirList {原创 2017-10-09 20:54:23 · 6645 阅读 · 1 评论