java基础学习
L-Zhang
这个作者很懒,什么都没留下…
展开
-
Java记录 -49- LinkedList源码剖析
public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, SerializableList 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 in原创 2017-07-01 15:59:01 · 2309 阅读 · 0 评论 -
Java记录 -60- TreeSet抛出ClassCastException
TreeSet实现了SortedSet也实现了Set,但它不是随便一个对象都能存储:public class TreeSetTest { public static void main(String[] args){ TreeSet tree = new TreeSet(); tree.add(new Pepole("zhangsan")); tre原创 2017-07-01 15:59:57 · 2437 阅读 · 0 评论 -
Java记录 -61- 比较器Comparator
public interface Comparator强行对某个对象 collection 进行整体排序的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 colle原创 2017-07-01 16:00:00 · 2372 阅读 · 0 评论 -
Java记录 -62- java.util.Collections
在学数组的时候,JDK为我们提供了一个Arrays类,该类提供了许多静态方法来操作数组。同时针对集合类也提供了一个Collections类,同样也提供了许多静态方法来对集合进行操作。Collection 和Collections的区别:java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。原创 2017-07-01 16:00:04 · 2583 阅读 · 0 评论 -
Java记录 -63- Java的键值映射Map
public interface Map将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 Map接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明原创 2017-07-01 16:00:36 · 2772 阅读 · 0 评论 -
Java记录 -64- Java main函数传参
Java main函数传参:Java main函数传参,以空格为分隔符,依次列出,双引号中间表示一个参数。1. 命令行执行:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/97/wKioL1Y9oVHxTHfzAAAxlaxpM3I679.jpg" style="float:none;" title="图片1.png" al原创 2017-07-01 16:00:39 · 2330 阅读 · 0 评论 -
Java记录 -65- 遍历map方法
Map接口提供了多个遍历元素的方法:public class HashMapTest { public static void main(String[] args){ HashMap map = new HashMap(); map.put("a", "aaa"); map.put("f", "fff"); map.put("s",原创 2017-07-01 16:00:42 · 2278 阅读 · 0 评论 -
Java记录 -66- 策略模式
策略模式(Strategy):策略模式中体现了两个非常基本的面向对象设计的原则:l 封装变化的概念;l 编程中使用接口,而不是对接口实现;面向接口的编程 策略模式的定义:l 定义一组算法,将每个算法都封装起来,并且使他们之间都可以互换;l 策略模式使这些算法在客户端调用它们的时候能够互不影响的变化; 策略模式的意义:l 策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是弱原创 2017-07-01 16:00:45 · 2410 阅读 · 0 评论 -
Java记录 -67- 深入剖析Collections的sort方法
Collections类可以将存储与List中的元素进行排序,可以按照针对元素的排序方法进行排序,也可以按照指定的排序类进行排序。Collections类提供了两个静态的sort方法:sort(List list)sort(List list, Comparator c)第一个方法是直接将List中的元素进行排序,排序方法需要List中存储的元素来提供,即存储的元素要是可排序的;第二个方法除了提供原创 2017-07-01 16:00:48 · 2326 阅读 · 0 评论 -
Java记录 -68- Java实现策略模式
Java实现策略模式策略模式的编写步骤:1. 对策略对象定义一个公共接口;2. 编写策略类,该类实现了上面的公共接口;3. 在使用策略对象的类中保存一个对策略对象的引用;4. 在使用策略对象的类中,实现对策略对象的set和get方法(注入)或者使用构造方法完成赋值代码实例实现简单的加减乘除运算。策略接口:public interface Strategy { public int calcu原创 2017-07-01 16:00:51 · 2477 阅读 · 0 评论 -
Java记录 -59- SortedSet
SortedSet是一个接口,其继承了Set,而TreeSet实现了SortedSet。 public interface SortedSet extends Set进一步提供关于元素的总体排序 的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator 进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。(此原创 2017-07-01 15:59:54 · 2342 阅读 · 0 评论 -
Java记录 -58- Iterator 迭代器
Iterator 迭代器 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 public interface Iterator对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同原创 2017-07-01 15:59:51 · 2380 阅读 · 0 评论 -
Java记录 -57- Object的equals、hashcode和toString方法
Object的hashCode方法是最基础的,equals和toString方法都间接的使用了hashCode方法。一般情况下,我们在重写一个类的equals方法时,都会连带重写hashCode方法。IDE工具eclipse给我们提供了快捷的重写equals和hashCode的方法,而不是其中一个,更说明了这个两个方法一般都会一块进行重写。Object的equals方法:public boolea原创 2017-07-01 15:59:48 · 2577 阅读 · 0 评论 -
Java记录 -47- 线性数据结构
一般将数据结构分为两大类:线性数据结构和非线性数据结构。线性数据结构有:线性表、栈、队列、串、数组和文件。非线性数据结构有:树和图。线性表:线性表的逻辑结构是n个数据元素的有限序列:(a1,a2,a3,...an)n为线性表的长度(n>=0),n=0的表称为空表。数据元素呈线性关系。必存在唯一的称为“第一个”的数据元素;必存在唯一的称为“最后一个”的数据元素;除第一个元素外,每个元素都有且只有一个原创 2017-07-01 15:59:04 · 2354 阅读 · 0 评论 -
Java记录 -48- Java数据结构-链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/75/4A/wKioL1Y1XS-zgcqwAAJwvo9n5Q4838.jpg" title="QQ图片原创 2017-07-01 15:59:20 · 2212 阅读 · 0 评论 -
Java记录 -50- ArrayList与LinkedList比较分析
ArrayList与LinkedList比较分析ArrayList底层采用数组实现,LinkedList底层采用双向链表实现。由于他们底层实现的原理不同,就造成了许多操作在性能上有很大的差别。当执行插入或删除操作时,采用LinkedList比较好,只需要找到指定位置不需要移动大量节点,所有节点位置存储不一定都挨着,但都可以通过指针找到。当执行搜索操作时,采用ArrayList比较好,数组中节点的存原创 2017-07-01 15:59:23 · 2424 阅读 · 0 评论 -
Java记录 -51- 栈和队列
栈和队列 Stack and Queue栈(Stack):栈也是一种特殊的线性表,是一种后进先出(LIFO)的结构。栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom)。栈的物理存储可以使用顺序存储结构,也可以使用链式存储结构。队列(Queue):队列是限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。表中允许插入的一端称为队尾(原创 2017-07-01 15:59:26 · 2345 阅读 · 0 评论 -
Java记录 -52- 整体看Java Collection类集
java.util包中包含了一些在java 2中新增加的最令人兴奋的增强功能:类集。除了类集,java.util 还包含了支持范围广泛的函数的各种各样的类和接口。对它们的应用包括产生伪随机码数,对日期和时间的操作,观测事件,对位集的操作以及标记字符串。由于java.util具有许多特性,因此它是Java中最被广泛使用的一个包。 下面详细介绍下类集:一个类集(collection)是一组对象。Jav原创 2017-07-01 15:59:29 · 2400 阅读 · 0 评论 -
Java记录 -53- LinkedList实现队列
LinkedList实现队列简单描述: 使用java.util.Queue接口,其底层关联到一个LinkedList(双端队列)实例。由于只暴露部分基于队列实现的接口,所以可以提供安全的队列实现。LinkedList实现队列代码:package junit;import java.util.LinkedList;import java.util.Queue;/** * 用Linked原创 2017-07-01 15:59:32 · 2437 阅读 · 0 评论 -
Java记录 -54- LinkedList实现栈
LinkedList实现栈简单描述: 提供一组栈的接口,其底层关联到一个LinkedList(双端队列)实例。由于只暴露部分基于栈实现的接口,所以可以提供安全的栈实现。LinkedList实现栈代码:package junit;import java.util.LinkedList;/** * 用LinkedList实现栈 * * 队列和栈区别:队列先进先出,栈先进后出。 * */pub原创 2017-07-01 15:59:35 · 2375 阅读 · 0 评论 -
Java记录 -55- Set下的HashSet
public interface Set extends Collection一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。 public class HashSet extends AbstractSet implement原创 2017-07-01 15:59:38 · 2387 阅读 · 0 评论 -
Java记录 -56- 详解HashSet不含重复元素的实现
详解HashSet不含重复元素的实现HashSet的add方法:public boolean add(E e)如果此 set 中尚未包含指定元素,则添加指定元素。更确切地讲,如果此 set 没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则向此 set 添加指定的元素 e。如果此 set 已包含该元素,则该调用不更改 set 并返回 false。原创 2017-07-01 15:59:41 · 2541 阅读 · 0 评论 -
Java记录 -69- Comparable与Comparator的区别
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。可以说一个是自已完成比较,一个是外部程序实现比较的差别而已。Comparator位于原创 2017-07-01 16:00:54 · 2307 阅读 · 0 评论 -
Java记录 -70- HashSet源码剖析
HashSet不包含重复元素,由哈希表支持。下面我就开始剖析下HashSet的源代码:首先从构造方法开始; private transient HashMap map; public HashSet() { map = new HashMap(); } public HashSet(Collection c) { map = new HashMa原创 2017-07-01 16:00:58 · 2551 阅读 · 0 评论 -
Java记录 -83- Java语言的反射机制
Java语言的反射机制在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflection)机制。Java反射机制主要提供了以下功能:1. 在运行时判断任意一个对象所属的类;2. 在运行时构造任意一个类的对象;3. 在运行时判断任意一个类所具有原创 2017-07-01 16:02:38 · 2380 阅读 · 0 评论 -
Java记录 -84- Reflection API的使用示例
Reflection API的基本使用 两种获取Class的方式:Class classtype = Class.forName("java.lang.Object");Class classType = InvokeTester.class;1.获取某个类的所有方法信息(运行时)public class DumpMethods { public static void main(Strin原创 2017-07-01 16:02:41 · 2326 阅读 · 0 评论 -
Java记录 -85- Reflection API的使用示例进阶
要想使用反射,首先需要获得待处理类或对象所对应的Class对象。获取某个类或某个对象所对应的Class对象的常用的3种方式:1. 使用Class类的静态方法forName,Class.forName(“java.lang.String”);2. 使用类的.class语法:String.class;3. 使用对象的getClass()方法:String s = “aa”; Class clazz =原创 2017-07-01 16:02:44 · 2273 阅读 · 0 评论 -
Java记录 -86- Reflection API的使用示例进阶2
获取指定类下的信息:所有方法和属性public class DumpClassInfo { public static void main(String[] args) throws Exception{ //Reflection API的基本作用 Class classtype = Class.forName("my.reflect.Customer");原创 2017-07-01 16:02:48 · 2501 阅读 · 0 评论 -
Java记录 -87- java.lang.reflect.Array
java.lang.reflect.Array类提供了动态创建和访问数组元素的各种静态方法。import java.lang.reflect.Array;public class ArrayTester1 { public static void main(String[] args) throws Exception{ Class classType = Cl原创 2017-07-01 16:02:50 · 2763 阅读 · 0 评论 -
Java记录 -88- 利用反射机制调用对象的私有方法和属性
利用反射机制调用对象的私有方法和属性import java.lang.reflect.Field;import java.lang.reflect.Method;public class TestPrivate { public static void main(String[] args) throws Exception{ //使用反射机制调用对象的私有方法原创 2017-07-01 16:02:53 · 2579 阅读 · 0 评论 -
Java记录 -89- java.lang.Class
众所周知Java有个Object class,是所有Java classes的继承根源,其内声明了数个应该在所有Java class中被改写的methods: hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回一个Class object。Class class十分特殊,和一般classes一样继承自Object,其实原创 2017-07-01 16:02:56 · 2442 阅读 · 0 评论 -
Java记录 -90- 静态代理模式深度剖析
代理模式代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理地下可以在客户端和目标对象之间起到中介的作用。代理模式一般涉及到三个角色:1.抽象角色:声明真实对象和代理对象的共同接口;2.代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时原创 2017-07-01 16:02:59 · 2345 阅读 · 0 评论 -
Java记录 -82- 静态导入 Static Import
静态导入 Static Import要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出它们的类名。注意:过度使用这个特性也会一定程度上降低代码的可读性。//import my.features.common.Commmon;import static my.features.common.Co原创 2017-07-01 16:02:19 · 2376 阅读 · 0 评论 -
Java记录 -81- EnumSet和EnumMap
EnumSet的名称说明了其作用,它是在J2SE5.0后加入的新类别,可以协助您建立枚举值的集合,它提供了一系列的静态方法,可以让您指定不同的集合建立方式。EnumSet与枚举类型一起使用的专用 Set 实现。枚举 set 中所有键都必须来自单个枚举类型,该枚举类型在创建 set 时显式或隐式地指定。EnumMap是个专为枚举类型设计的类别,方便您使用枚举类型及Map对象。EnumMap与枚举类型原创 2017-07-01 16:02:08 · 2484 阅读 · 0 评论 -
Java记录 -80- 深入理解枚举(Enums)
枚举(Enums)JDK1.5加入了一个全新的类型的“类”-- 枚举类型。为此JDK1.5引入了一个新关键字enum。定义枚举类型时本质上就是定义一个类别,只不过很多细节由编译器帮您完成了,所以某种程度上,enum关键字的作用就像是class或interface。当您使用“enum”定义枚举类型时,实质上您定义出来的类型继承自java.lang.Enum类型,而每个枚举的成员其实就是您定义的枚举类原创 2017-07-01 16:02:05 · 3710 阅读 · 0 评论 -
Java记录 -71- HashMap源码剖析
HashMap底层维护着一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中。数组中每个元素都维护着一个链表,每个链表中的所有元素的hash值都一样。HashMap的四个构造方法:底层维护的数组 Entry[] table,数组默认大小为16,并为2的整数次幂;底层数组存放的Entry对象,是HashMap的一个内部类,包含了key,value和next变量; /** *原创 2017-07-01 16:01:01 · 2354 阅读 · 0 评论 -
Java记录 -72- Vector,HashTable和Properties
遗留的集合类:VectorVector实现动态数组。这与ArrayList相似,但两者不同的是:Vector是同步的,并且它包含了许多不属于类集框架的从以前版本遗留下来的方法。随着Java2的公布,Vector被重新设计来扩展AbstractList和实现List接口,因此现在它与类集是完全兼容的。Vector底层也是维护着一个数组。HashTable散列表(HashTable)是原始 java.原创 2017-07-01 16:01:31 · 2551 阅读 · 0 评论 -
Java记录 -73- 泛型详解
JDK5.0中新特性介绍:泛型(Generics);增强的“for”循环(Enhanced For loop);自动装箱/自动拆箱(Autoboxing/unboxing);类型安全的枚举(Type safe enums);静态导入(Static import);可变参数(Var args); 泛型是JDK1.5中一个最重要的特性。通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出Clas原创 2017-07-01 16:01:34 · 2373 阅读 · 0 评论 -
Java记录 -74- 自定义泛型
泛型:所谓泛型,就是变量的类型参数化。作用:限制泛型可用类型。简单的泛型定义使用:public class GenericFoo { private T foo; public void setFoo(T foo){ this.foo = foo; } public T getFoo(){ return this.foo; }原创 2017-07-01 16:01:37 · 2338 阅读 · 0 评论 -
Java记录 -75- 泛型高级晋级
泛型:所谓泛型,就是变量的类型参数化。作用:限制泛型可用类型。在定义泛型类别时,预设可以使用任何的类型来实例化泛型类型中的类型,但是如果想要限制使用泛型类别时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口。当没有指定泛型继承的类型或接口时,默认使用 T extends Object ,所以默认情况下任何原创 2017-07-01 16:01:50 · 2311 阅读 · 0 评论