Java
文章平均质量分 76
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
-
Comparable接口
什么是Comparable接口此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 强烈推荐(虽然不是必需的)使自然排序与 e原创 2016-09-22 00:36:12 · 378 阅读 · 0 评论 -
Java集合
Java集合:Collection(List,Set,Queue);Map;Iterator(依附于Collection对象,主要用于遍历Collection集合中的元素)Set:HashSet,LinkedHashSet,TreeSet,EnumSet(都是线程不安全的)HashSet:除了排序外都比TreeSet要好,默认大小是16LinkedHashSet:HashSet的子类,使用链表维原创 2016-05-03 15:54:06 · 576 阅读 · 0 评论 -
Java虚拟机总结
思维导图: 一、Java引用的四种状态:强引用: 用的最广。我们平时写代码时,new一个Object存放在堆内存,然后用一个引用指向它,这就是强引用。 如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。原创 2016-03-19 19:48:31 · 601 阅读 · 0 评论 -
静态类,静态方法,静态变量与非静态之间的区别
静态类:1:仅包含静态变量和静态方法。 2:无法实例化。 3:不能包含实例构造函数。4:是密封的。非静态类:1.可以包含非静态成员,也可以包含静态成员。2.每次实例化都是一个新的对象。3.可以不显示实例化,因为内部有一个默认的静态构造函数,不可重载,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。4.也可以通过 类名.方法名或变量名 访问静态成员静态方法:1.静态方法转载 2016-08-17 23:43:16 · 953 阅读 · 0 评论 -
Java集合面试题
Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保原创 2016-03-20 23:12:49 · 733 阅读 · 0 评论 -
关于equals,==,hashCode
equals() 与 == 的区别:== : 它的作用是判断两个对象的地址是不是相等,判断两个对象是不是同一个对象。equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况1,类没有覆盖equals()方法。则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。Object类的equals方法 public boolean equals(Ob原创 2016-07-23 14:02:13 · 308 阅读 · 0 评论 -
Java类加载器与反射
一个命令对应一个进程 当我们启动一个Java程序,即启动一个main方法时,都将启动一个Java虚拟机进程,不管这个进程有多么复杂。而不同的JVM进程之间是不会相互影响的。这也就是为什么说,Java程序只有一个入口——main方法,让虚拟机调用。而两个mian方法,对应的是2个JVM进程,启动的是两个不同的类加载器,操作的实际上是不同的类。故而不会互相影响。类加载 当我们使用一个类,如果这个类还未原创 2016-05-03 15:16:11 · 3143 阅读 · 1 评论 -
Java多线程
1多线程的优势:进程间不能共享内存,而线程间很容易,创建线程的代价比较小,java语言内置了多线程功能(一个浏览器同时下载多张图片) 1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 2) 线程的划分尺度小于进程,使得多线程程序的并发性高。 3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 4) 线程在执行过程中与进程还是有原创 2016-05-03 15:29:01 · 560 阅读 · 0 评论 -
接口与抽象类
java中抽象方法:java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。抽象方法与抽象类:当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。abstract抽象类不能用n原创 2016-04-05 09:17:23 · 344 阅读 · 0 评论 -
Java方法执行
1.1 运行时栈帧结构 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机里面从入栈到出栈的过程。 每一个栈帧都包括了局部变量表、操作数栈、方法返原创 2016-04-22 09:59:37 · 1711 阅读 · 0 评论 -
Java动态类加载与重载
Java允许你在运行期动态加载和重载类,但是这个功能并没有像人们希望的那么简单直接。这篇文章将阐述在Java中如何加载以及重载类。 你可能会质疑为什么Java动态类加载特性是Java反射机制的一部分而不是Java核心平台的一部分。不管怎样,这篇文章被放到了Java反射系列里面而且也没有更好的系列来包含它了。类加载器 所有Java应用中的类都是被java.lang.ClassLoader类的一系列转载 2016-04-28 00:45:25 · 838 阅读 · 0 评论 -
泛型擦除补偿
由于在使用泛型的时候,将会擦除类型参数,而只保留原始类型。所以在使用泛型时,我们不能使用new T(),也不能使用instanceof, 因为这两类操作要知道确切的类型。此问题的解决方案有三种(设计模式的使用):简单工厂(最简单),工厂方法(最灵活),模板方法(最简捷)。 1.简单工厂 在此方法中,将类型作为参数,以一个万能的工厂类(其中有一个返回具体类型类的实例的泛型方法)用类的newInst原创 2016-04-25 12:10:22 · 4747 阅读 · 0 评论 -
泛型的内部原理:类型擦除以及类型擦除带来的问题
一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉。这个过转载 2016-04-25 10:20:37 · 2382 阅读 · 0 评论 -
Java异常和finlly返回值
Java的异常处理Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。JB的在线帮助中对这几个关键字是这样解释的: Throws: Lists the exceptions a method could throw. Throw: Transfers control of the method to the exception handler原创 2016-07-14 14:45:37 · 1442 阅读 · 0 评论