`
文章列表
final关键字 先看看final关键字,它可以被用于以下几个地方: 1、修饰属性、局部变量、方法参数:如果final修饰的是一个基本类型,就表示这个变量所赋予的值不可修改,即它是个常量;如果final修饰的是一个对象,就表示这个变量被赋予的引用不可修改(但我们可以修改该引用所指向对象里的内容,这里所说的不可修改是指final修改的引用一但指向了谁,就不能再指向别的对象了)。下面来看看修改属性与变量时需要注意的几点:在方法中定义的内部类只能访问方法中的final类型的局部变量,因为用final定义的局部变量是一个常量,运行时不是放在栈里的,因此它的生命同期超出了方法运行的生命周期: //fin ...
覆写是多态的一种表现,我们平时所说的覆写一般是针对方式来说,在网上看到过有人讨论试着覆写属性,于是有点兴趣,属性真能覆写吗?回答问题之前,我们还是回忆一下方法的覆写具备哪些条件,或都说哪些方法能覆写。先回顾一下方法覆写要注意的地方:1、重载(也叫过载)时只与方法特征有关,但重写(覆写)是会进一步检查两个方法的返回类型是否相同、访问修饰权限是否缩小(假设public->protected方向是缩小,反之叫扩大)和抛出的异常范围是否扩大。那么什么是方式特征呢?一个方法的特征(也可叫方法签名)仅包括方法的名字、参数的个数、类型、顺序(实质上就是参数列表),而不包括方法的返回类型、访问修饰权限与所 ...
String str=new String("aaa"); 这行代码究竟创建了几个String对象呢?答案是2个,而不是3个。由于new String("aaa")相当于"aaa"与一个就是创建出来的放在堆时原实例对象,而另一个就是放在常量池中的 "aaa" 对 ...
你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? OutputStreamWriter out = ... java.sql.Connection conn = ... try { // ⑸  Statement stat = conn.cre ...

TreeSet源码阅读

    博客分类:
  • Java
TreeSet类的设计基于实现red-black树的TreeMap类。基本上,一个TreeSet对象是所有元素(节点)都有相同值(树中节点的value数据域)的TreeMap对象,TreeSet会忽略掉TreeMap集合中元素的value,只使用元素的key。下面是TreeSet类的字段: private transient SortedMap m; // TreeSet基于SortedMap的实现 private transient Set keySet; // SortedMap实现的key视图,因为TreeSet只使用到map中元素的key域 / ...
public class HexToDecimal { public static void main(String[] args) { System.out.println((char) hexToDecimal("4e2d"));//中 } private static int hexToDecimal(String hex) { char ch; int len = hex.length(); int value = 0; for (int x = 0; x < len;) { ch = hex.charA ...
学过这么久的Java,还没有仔细的分析过集合框架的源码实现,刚好这几天看数据结构,所以一并分析分析,并记录于此,希望对大家有一点帮助。由于本人能力有限,错误肯定很多,也希望大家指正,我会改正的,其中的分析仅代表本人 观点 。最后也希望大家多多支持,等List分析后,有机会再打算分析分析Map与Set的实现。 1、 ArrayList中(实为AbstractList中)的ListIterator实现源码分析 ArrayList的实现源码比较简单,就是对一个数组的一系列操作,比如添加一个元素后如果容量满则扩容操作、删除一个元素后使数组后面的元素像前移操作 ...
1、Java容器类库的简化图,下面是集合类库更加完备的图。包括抽象类和遗留构件(不包括Queue的实现): 2、ArrayList初始化时不可指定容量,如果以new ArrayList()方式创建时,初始容量为10个;如果以new ArrayList(Collection c)初始化时,容量为c.size()*1.1,即增加10%的容量;当向ArrayList中添加一个元素时,先进行容器的容量调整,如果容量不够时,则增加至原来的1.5倍加1,再然后把元素加入到容器中,即以原始容量的0.5倍比率增加。 3、Vector:初始化时容量可以设定,如果以new Vector()方式创建时,则初始 ...
序言: Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME\bin\java –option 来启动,-option为虚拟机参数,JAVA_HOME为JDK安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握 ...
为什么java中只允许继承一个类? 一个类只能继承一个其他的类 在Java语言中禁止多重继承:一个类可以具有多个直接父类。多重继承不合法的原因是容易引发意义不明确。例如,有一个类C,如果允许它同时继承A类与B类(class C extends A,B{}),假如A、B两个类都有同一种方法fun(),如果定义: C c = new C(); 那么c.fun()应该调用哪一个父类的fun()方法?无法给出答案,因此Java语言禁止多重继承。 但C++却是可以的,所以C++比起java在语法上却难了些。 但一个类可以实现多个接口,这又是为什么? 这一特性和上一特性结合使用,可以获得 ...
Java中的泛型做了什么 首先看一下Java中的泛型做了什么。看下面这段代码: public   class  GenTest < T >  {     T value;      public  T getValue() {          return  value;     }      public   void  setValue(T t) {       
int[] x1 = new int[100]; int[] x2; x2 = new int[100]; int[] x3 = new int[] { 1, 2, 3 }; int[][] x4; x4 = new int[2][]; x4[0] = new int[1]; x4[1] = new int[2]; int x5[][] = new int[1][]; //会报NullPointerException,因为在定义时没未初始化,所以指向null //System.out.println(x5[0].length); int x6[][] = new i ...

实用AbstractDTO

    博客分类:
  • Java
下面实例是一个实现了克隆与序列化一体的实体抽象DTO类,可供其类继承。只要继承了该类,子类就会自动具有克隆与序列化的特性,另外该抽象类重写了toString()方法,可以打印自身对象详细信息,子类不必要重写即可使用。   package comm.efin.dto; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Obje ...
泛型类 有时方法调用需返回多个对象,你应该经常需要这样的功能吧。可是return语句只允许返回单个对象,因此,解决办法就是创建一个对象,用它来持有想要返回的多个对象。当然,可以在每次需要的时候,专门创建一个类来完成这样的工作。可是有了泛型,我们就能够一次性地解决该问题。同时,我们在编译期就能确保类型安全。这些携带多个返回结果的对象我们称之为容器,它是将一组返回结果对象直接打包存储于其中的一个单一对象中,这个容器对象允许读取其中元素,但是不允许向其中存放新的对象。(这个概念也称为数据传送对象,或信使。)容器中的对象可以是任意不同的类型。不过,我们希望能够为每一个对象指明其类型,并且从容器中读取出 ...

java泛型

    博客分类:
  • Java
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 在使用泛型的版本中并没有减少键 ...
Global site tag (gtag.js) - Google Analytics