
java
文章平均质量分 74
hello_zihan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java集合之HashMap
HashMap基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。并且该类是非线程安全的。 HashMap的底层是一个数组加链表的集合。它的数据结构如下: HashMap底层是一个table数组,数组的长度(table.length)始终要求是2的N次幂。每次在该Has原创 2016-11-02 21:38:06 · 355 阅读 · 0 评论 -
Java集合之AbstractList抽象类
//此类提供 List 接口的骨干实现,以最大限度地减少实现"随机访问"数据存储(如数组)支持的该接口所需的工作。//对于连续的访问数据(如链表),应优先使用 AbstractSequentialList,而不是此类 jdk1.7 java.utilpublic abstract class AbstractList extends AbstractColle原创 2016-11-01 00:05:56 · 1402 阅读 · 0 评论 -
Java集合之AbstractCollection
//此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作(Jdk:1.7 java.util)public abstract class AbstractCollection implements Collection { protected AbstractCollection() {//供子类使用,通常为protected }原创 2016-10-31 17:16:58 · 367 阅读 · 0 评论 -
Java之数据流
数据流也是一种处理流,分为DataOutputStream和DataInputStream两种,提供了可以存取与机器无关的Java原始类型数据(如int,double等)的方法import java.io.*;public class TestDataStream { public static void main(String[] args) { ByteArrayOutput原创 2016-11-12 22:16:03 · 573 阅读 · 0 评论 -
Java之Object流
Object流是一种处理流,分为ObjectOutputStream、ObjectInputStream,可以写入对象、读取对象。public class TestObjectIO { public static void main(String args[]) throws Exception { Test test = new Test(); test.k = 8; File原创 2016-11-12 23:01:30 · 475 阅读 · 0 评论 -
Java集合之ArrayList
ArrayList的底层是数组。继承了AbstractList抽象类,实现了List、RandomAccess、Cloneable、java.io.Serializable接口。其中RandomAccess接口是标记接口,用来表明其支持快速的随机访问。属于RandomAccess的实现(如ArrayList)还是SequenceAccess的实现(如LinkedList)需要进行区分开来,因为他们原创 2016-11-01 15:23:18 · 282 阅读 · 0 评论 -
Java集合之Queue和Deque接口
public interface Queue extends Collection {//队列 JDK1.7 java.util //一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。此时add会抛出异常;offer会返回false boolean add(E e);//将指定的元素插入此队列 boolean offer(E e);//将指定的元原创 2016-11-01 17:18:13 · 901 阅读 · 0 评论 -
Java集合之AbstractSequentialList
public abstract class AbstractSequentialList extends AbstractList {//继承AbstractList JDK1.7 java.util protected AbstractSequentialList() {//构造器protected } public E get(int index) {//返回此原创 2016-11-01 17:31:36 · 333 阅读 · 0 评论 -
Java集合之LinkedList
前面写过ArrayList,此类继承了RandomAccess这个标记接口,标记其随机访问速度快(例如使用get方法,set方法等通过索引直接定位的方法),因为其底层是数组,所以直接通过索引定位速度较快。而LinkedList底层是链表,随机访问速度相对较慢,因此其要一步步移动指针来定位;但是执行插入或删除时,LinkedList较快,因此其直接指针修改即可,而ArrayList要重新移动数据来填原创 2016-11-01 17:44:04 · 273 阅读 · 0 评论 -
Java集合之Set、SortedSet、NavigableSet
public interface Set extends Collection {//不包含重复元素集合 JDK1.7 java.util int size();//元素个数 boolean isEmpty();// set不包含元素,则返回 true boolean contains(Object o);//set包含指定的元素,则返回 true I原创 2016-11-01 22:46:04 · 2355 阅读 · 0 评论 -
Java之synchronized
作者:GangWang 出处:http://www.cnblogs.com/GnagWang/ 记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行转载 2016-11-13 23:38:05 · 344 阅读 · 0 评论 -
Java集合之总体框架
Java集合位于java.util.*,平时使用得非常多,当其中与泛型(参见前面)结合起来时,起初理解起来也比较费力,所以记录一下里面的集合框架和部分源码。 Java集合框架如下(图来源于百度图片):其中虚线框内全部为接口(其中也标有接口),蓝色字体为抽象类。其中Collection接口为所有集合的父类。源码如下(jdk为1.7,加上了迭代器):public interfa原创 2016-10-31 14:53:11 · 447 阅读 · 0 评论 -
Java集合之AbstractMap
//此类提供 Map接口的骨干实现,以最大限度地减少实现此接口所需的工作public abstract class AbstractMap implements Map { protected AbstractMap() {//构造方法 } public int size() {//返回此映射中的键-值映射关系数 return entrySet().siz原创 2016-11-02 14:43:07 · 276 阅读 · 0 评论 -
Java集合之Map
Map,即键值对。将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代Dictionary 类,后者完全是一个抽象类,而不是一个接口。Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。public interface Map {//JDK1.7 java.util int size();//原创 2016-11-02 13:17:08 · 245 阅读 · 0 评论 -
Java反射
1、Class对象 Class类对象包含了一个类的各种信息,它的域、方法、接口等等。每一个类都有一个Class对象,即每当编写一个新类,就会产生一个Class对象(更恰当的说,是被保存在一个同名的.class文件中)。为了生成这个类的对象,运行这个程序的JVM将使用被称为"类加载器"的子系统。获取一个类对象有三种方式: 1.1、Class.forName("类的全限定名")原创 2016-10-26 14:24:06 · 240 阅读 · 0 评论 -
Java初始化顺序
无论创建多少个对象,静态数据只占一份存储区域(方法区里)。static关键字不能用于局部变量,因此它只能作用于域。如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本的数据类型的标准;如果它是一个引用,那么会获得初始值null。package com.test;public class Test { public static void main(String[] a原创 2016-10-24 13:31:03 · 271 阅读 · 0 评论 -
Java之转换流
转换流也是处理流的一种,分为OutputStreamWriter、InputStreamReader两种,是将字节流转化为字符流进行读取或者写入。public class TestTransForm1 { public static void main(String[] args) { try { //将OutputStream转换成Writer Outpu原创 2016-11-12 16:17:20 · 304 阅读 · 0 评论 -
Java集合之SortedMap、NavigableMap
public interface SortedMap extends Map {//提供关于键的总体排序的 Map JDK1.7 java.util Comparator comparator();//返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。 SortedMap subMap(K fromKey, K toKey);//返回此映射的原创 2016-11-02 23:21:24 · 521 阅读 · 0 评论 -
Java集合之AbstractSet
//此类提供 Set 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作 JDK1.7 java.utilpublic abstract class AbstractSet extends AbstractCollection implements Set { //构造方法 protected AbstractSet() { } //比较指原创 2016-11-03 10:47:10 · 750 阅读 · 0 评论 -
Log4J的简单使用
配置详细的日志输出,能帮助我们迅速定位有问题的代码位置,特别是当项目部署到服务器上,更需要一些日志对代码进行定位。Log4J: Log4j中有四个主要的组件,它们分别是 Logger(记录器)、Appender(输出目的地)、Layout(布局器:输出格式)和信息输出级别。日志输出即是拿到一个日志记录器(Logger),然后输出到什么地方(Appender,比如文件、控制台等等),原创 2016-10-19 14:22:33 · 388 阅读 · 0 评论 -
Java集合之HashSet
//此类实现 Set接口,由哈希表(实际上是一个 HashMap实例)支持。它不保证 set的迭代顺序。非线程安全 JDK1.7 java.utilpublic class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable //可克隆、可原创 2016-11-03 11:13:39 · 295 阅读 · 0 评论 -
Java之节点流
Java中的流按照功能可以分为节点流和处理流。其中节点流是直接用来访问数据源,而数据源又分为文件、内存、管道(线程间通信使用),所以就需要不同的类来进行处理。每次从数据源中读取的数据单位又可以分为字节和字符。按照这三种来划分,节点流分为如下: 拿FileInputStream来说,当我们从硬盘上按照字节来读取数据时,需要先调用下面的语句原创 2016-11-03 18:09:28 · 714 阅读 · 0 评论 -
Java之IO概述
java.io包里的类太多了,第一次看到这些API时会感觉非常零乱,实际上是因为里面用了装饰者模式(设计模式中写),会一层层包装扩展,因此类会很多,显得很琐碎。里面的绝大部分类图如下,图片来自:http://davidisok.iteye.com/blog/2106489 1、流 java中读取文件内容或者写入文件内容原创 2016-11-03 15:45:21 · 464 阅读 · 0 评论 -
Java泛型中的擦除
1、擦除当深入了解泛型后,就会发现很多东西初看起来是没有意义的。例如,尽管可以申明ArrayList.class,但是不能申明为Array.class。例如:class Manipulator { private T obj; public Manipulator(T x) { obj = x; } // Error: cannot find symbol: method原创 2016-10-25 16:52:12 · 1232 阅读 · 0 评论 -
Java内存区域
1、概述:Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,由Java虚拟机通过解释执行(解释器)或编译执行(即时编译器)来完成,故Java内存模型,也就是指Java虚拟机的运行时内存模型。在Java中,由于有虚拟机自动内存的管理,故不需要为每一个new操作去写delete/free代码,也不容易出现内存泄露和溢出的问题。不过也正原创 2016-10-11 09:55:32 · 236 阅读 · 0 评论 -
Java之对象的创建、访问
1、对象的创建创建一个对象通常是需要new关键字,当虚拟机遇到一条new指令时,首先检查这个指令的参数是否在常量池(参考上文中的方法区)中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有那么必须执行相应的类加载过程(后面会补充)。类加载检查通过后,虚拟机将为新生对象分配内存。为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划原创 2016-10-12 11:19:05 · 358 阅读 · 0 评论 -
Java数组
无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆上创建的一个真实对象,这个数组对象用以保存指向其它对象的引用(基本类型保存的是值)。1、数组的初始化: 下例总结了数组的初始化的几种方式:public class ArrayOptions { public static void main(String[] args) { BerylliumSphere[] a;原创 2016-10-27 15:42:13 · 239 阅读 · 0 评论 -
Java的String
String的底层是char类型的数组,所以先需要看一下char类型。1、char类型 Java中char类型采用16位的Unicode编码,后来由于字符集太多,超过了65536个,所以16位的Unicode已经不能满足需要了。于是自JDK5.0开始,采用代码点表示某个字符对应的代码值,代码点规定十六进制书写,并加上前缀U+,例如U+0041表示A的代码点。Unicode的代码点分为17原创 2016-10-29 13:32:12 · 975 阅读 · 0 评论 -
Java的Arrays源码
JDK:1.7 包名 java.util;去掉了部分重载的方法public class Arrays { private Arrays() {} //私有构造器 public static void sort(int[] a) { //整型排序 DualPivotQuicksort.sort(a); } public stat原创 2016-10-29 12:11:42 · 388 阅读 · 0 评论 -
Java集合之list接口与set接口
public interface List extends Collection {//有序队列 jdk:1.7 java.util int size();//返回列表中的元素数 boolean isEmpty();//是否包含元素 boolean contains(Object o);//是否包含指定的元素 Iterator iterator();/原创 2016-10-31 17:57:44 · 410 阅读 · 0 评论 -
Java之内部类
1、创建内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类。public class OuterClass { static InnerClass iClass1 = new OuterClass().new InnerClass();//静态变量 OuterClass.InnerClass iClass3 = new InnerClass();//非静态变量声明方法原创 2016-11-19 12:30:17 · 385 阅读 · 0 评论