java
夢歸何處
青春承载希望奋斗成就未来
展开
-
5款工具助你写出更好的Java代码
5款工具助你写出更好的Java代码,因为不知道怎么转载,点前面链接1.FindBugs2.Apache Ant3.JProfiler4.Bash5.Sonarqube转载 2013-10-09 22:58:31 · 576 阅读 · 0 评论 -
java字符占16位
在C/C++中,char是一个8位的整数类型,但在Java中使用Unicode来表示字符。Unicode定义了一个完全国际化的字符集,可以表示人类语言中发现的所有字符。它要求16位原创 2013-11-12 11:56:23 · 1055 阅读 · 0 评论 -
Json lib JsonConfig用法
import java.util.Arrays;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JsonConfig;import net.sf.json.processors.JsonValueProcessor;public class JsonTest { public原创 2013-11-12 18:29:26 · 1361 阅读 · 0 评论 -
通过接口引用访问实现比正常的方法调用开销大
与Java中正常的方法调用相比,在运行时动态查找方法会导致大量的开销,所以应该注意在关键性能的代码中不要随便的使用接口。原创 2014-01-01 11:19:03 · 919 阅读 · 0 评论 -
一个final变量本质上是一个常量
被声明为final的变量不是每个实例都占有内存,因此,一个final变量本质上是一个常量。原创 2014-01-01 11:12:29 · 637 阅读 · 0 评论 -
哈希表
哈希表是通过使用称为散列法的机制来存储信息的。在散列法中,键的信息内容用于确定一个唯一值,称为它的哈希码(散列码)。然后哈希码作为与键相关的索引。键到哈希码的转化自动完成,你不会键到哈希码本身,同样,哈希码也不能直接索引哈希表。散列法的好处是它允许基本操作,如add,contains,remove和size的执行时间保持不变,即使对于大的集合来说也是如此。原创 2014-01-01 11:50:15 · 780 阅读 · 0 评论 -
泛型数组的局限
1. 不能实例化原始类型是类型参数的数组。T values[]=new T[10];原因是T在运行时不存在,一次编译器无法知道实际创建哪种类型的数组。2. 不能创建一个类型特定的泛型引用的数组。Gen gens[]=new Gen[10];特定泛型类型的数组绝对不允许使用,因为他们会损害类型的安全。但可以使用通配符:Gen gen[]=new Gen[10];原创 2014-01-01 11:41:38 · 603 阅读 · 0 评论 -
Cloneable接口潜在的危险
Cloneable接口没有定义成员,只是用于标识一个类允许对象的位拷贝(克隆)。如果调用一个没有实现cloneable接口的类的clone()方法,就会抛出CloneNotSuppoaedException异常。当完成复制后,并没有调用复制对象的构造函数。副本是原有对象的精确复制品。复制是一个具有潜在危险的行为,他会导致一些你意想不到的负面效应。例如,如果被复制的对象包含obRef变量的引用,原创 2014-01-01 11:47:29 · 721 阅读 · 0 评论 -
Switch语句通常比一组嵌套的if语句更高效
Java编译器的工作方式。当编译器编译switch语句时,Java编译器将检查每个case常量并创建一个“跳转表”,该表用于在表达式值的基础上选择执行路径,因此,如果在很多值中选择,switch语句将比使用一系列if-else的等效逻辑代码运行速度快。因为编译器知道case常量都是同一类型的,所以做的只是将它与switch表达式相比较。而对于一系列的if表达式,编译器就无此功能。原创 2014-01-01 11:09:11 · 2036 阅读 · 0 评论 -
星号形式导入包只对编译有影响,对运行无影响
星号形式可能会增加编译时间,特别是在导入几个大的包时更是如此,因此,一般显示的命名想要使用的类而不是导入整个包,但星号形式对运行时性能和类的大小却没有影响。原创 2014-01-01 11:16:18 · 711 阅读 · 0 评论 -
java用补码表示负数
所有的整数类型(除了char类型外)都是有符号的整数。他们既能表示正数,又能表示负数。Java用2的补码(two's complement)这种编码来表示负数。2的补码是把一个值的所有位取反(即将1变成0,将0变成1),然后对其结果加1。例如,-42就是通过取反42中所有的位00101010来表示,得到11010101,然后再加1,得到11010110,即-42 。要解码一个负数,首先取反其所有的原创 2013-11-12 12:25:45 · 3099 阅读 · 0 评论 -
Java多维数组第二维维度可以不同
给多维数组分配内存时,仅需要为第一维指定内存。然后再分配其余的维的内存。手工分配内存时,不需要为每维分配相同数量的元素。int twoD[][] = new int[4][];twoD[0] = new int[1];twoD[1] = new int[2];twoD[2] = new int[3];twoD[3] = new int[4];原创 2013-11-12 12:01:16 · 1145 阅读 · 0 评论 -
EasyMock 使用方法与原理剖析
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。编写自定义的 Mock 对象需要额外的编码工作,同时也可能引入错误。EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模转载 2013-10-10 16:12:04 · 555 阅读 · 0 评论 -
OGNL
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。例如,当前环境的根对象为user1,则表达式person.address[0].转载 2013-10-11 14:55:06 · 559 阅读 · 0 评论 -
java实现链表
public class LinkNode { private T obj;// 节点内的数据对象 private LinkNode prev;// 保存对下一个节点的引用 private LinkNode next;// 保存对上一个节点的引用 public LinkNode(T obj) { this.obj = obj; } public void se原创 2013-10-11 17:35:06 · 570 阅读 · 0 评论 -
java中集合类比较
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。 所原创 2013-10-14 11:24:11 · 643 阅读 · 0 评论 -
编程语言发展历史
C语言出现以前:FORTRAN可以编写高效的程序,但不适于编写系统程序。BASIC虽然易学,但功能不够强大,并且谈不上结构化。汇编语言虽能写出高效的程序,但学习或高效的使用并非易事,而且调试相当困难。 C语言(1978):Dennis Ritchie在运行UNIX操作系统的DEC PDP-11上发明并首次实现了C。而Martin Richards设计的BCPL语言导致了C语原创 2013-11-09 00:31:14 · 1456 阅读 · 0 评论 -
Java字节码---解释执行
Java安全性和可移植性的关键在于Java编译器的输出并不是可执行的代码,而是字节码(bytecode)。字节码是一套在Java运行时系统执行的高度优化的指令集,该Java运行时系统称为Java虚拟机(JavaVirtual Machine,JVM)。在其标准形式下,JVM 就是一个字节码解释器。这可能有点让人吃惊,因为出于对性能的考虑,大多数现代语言都被设计为编译型,而不是解释型。然而,正是通过原创 2013-11-09 21:32:44 · 4704 阅读 · 0 评论 -
Java特性
简单(Simple) 安全(Secure) 可移植(Portable) 面向对象(Object-oriented) 健壮(Robust) 多线程(Multithreaded) 体系结构中立(Architecture-neutral) 解释执行(Interpreted) 高性能(High performance) 分布式(Distributed) 动态(Dyn原创 2013-11-09 22:54:19 · 695 阅读 · 0 评论 -
J2SE5新特性
泛型元数据自动装箱和拆箱(Autoboxing和Auto-unboxing)枚举增强的for-each循环变长参数(varargs)静态导入格式化I/O并行工具对API的升级原创 2013-11-09 23:01:51 · 840 阅读 · 0 评论 -
Java类型决定行为,而不是大小
不应该把整型的宽度(width)理解为它占用的存储空间,而应该是该类变量和表达式的行为(behavior)。只要已经对类型进行了说明,Java的运行时环境对该类的大小是没有限制的。事实上,为了提高性能,byte和short的存储是32位(而非8位和16位),因为这是现在大多数计算机使用的字的大小。这些整数类型的长度和变化范围如表3-1所示:类型决定行为,而不是大小(惟一的例外是数组,字原创 2013-11-09 23:47:42 · 1193 阅读 · 0 评论 -
Volatile修饰符
Volatile修饰符告诉编译器,被volatile修饰的变量可以被程序的其他部分改变。其中一种情况涉及多线程编程。在一个多线程的程序里面,有时两个或多个线程共享同一个实例变量。从效率方面考虑,每一个线程可以保存这个实例中变量的私有的副本,所以变量的实际(或主要)备份在不同时间被更新,例如当进入synchronized方法时,需要反映他的当前状态。为了保证这一点,只要简单的指定变量volatile原创 2014-01-01 11:26:22 · 672 阅读 · 0 评论