- 浏览: 38904 次
- 性别:
- 来自: 南京
最新评论
文章列表
以下所有均摘自维基百科。
红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况
问题引入:今天在使用ArrayList的add(index, element)方法向list中插入数据的时候出现数组越界异常,感觉很奇怪,list不是支持动态扩展的吗?为什么会出现越界的情况呢?
有了问题,当然要首先查看JDK源码咯:
/**
* Inserts the specified element at the specified position in this
* list. Shifts the element currently at that position (if any) and
* any subsequent el ...
今天遇到一个问题:子类重写父类中的方法之后,后期虚拟机是如何确定要执行的方法?
要解决上面的那个问题,我们先来看看Java中的方法调用。方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即要执行哪一个方法),他还不会设计方法内部的具体运行过程。
所有方法调用中的目标方法在Class文件里面都是一个常量池中的符号引用,在类加载的解析阶段,会将其中一部分的符号引用转换为直接引用。这种解析能够成立的前提是:方法在程序可以运行之前就有一个可确定的调用版本,并且这个方法的调用版本在运行期是不可改变的。换句话说,调用目标在程序代码写好,编译器进行
编译时就必须确定下 ...
首先说明一下结果:不可以,至少Java语言规范上说的是不可以。
今天遇到一个问题:向上转型是安全的,不需要进行强制类型转换。原因当然是子类是父类的超集,所以父类中的东西(成员变量和成员方法在子类中都有)
/**
* @description : 测试继承 <br>
* @author Administrator <br>
*/
class SuperClass {
public void show() {
上一篇博文(http://woyixiaorenne.iteye.com/blog/2305280)说到JDK1.6和1.7的String.substring()的实现出现了变化,那么究竟为什么会变化呢?
注:本文大部分内容是参考或者复制作者的内容,附上原文地址http://www.importnew.com/7418.html
1、当substring()被调用的时候,内部发生什么事?
你或许会认为由于x是不可变的对象,当x被x.substring(1,3)返回的结果赋值后,它将指向一个全新的字符串如下图:
然而,这个图并不完全正确,或者说并没有完全表示出java 堆中真正发生的事 ...
今天有时间,看了下String类中的substring()方法,现简要分析如下:
/**
* Returns a new string that is a substring of this string. The substring begins
* with the character at the specified index and extends to the end of this string.
* 上面的这段话的意思是,它会返回一个新的字符串,这个新的字符串是原来字符串的一部分,
* 从某个下标的字母开始,一直到这个字符串的结束。
* 例如: ...
1、继承的类以及实现的接口:
继承自:AbstractList
实现了:List,RandomAccess,Cloneable,java.io.Serializable;
定义的成员变量:
transient Object[] elementData;
是一个数组缓冲区,从下面可以看到所有的操作似乎都与之有关。(transient 表示其不可序列化)
size: The size of the ArrayList (the number of elements it contains).
我们可以在创建ArrayList的时候指定其大小,相应的其实是实例化了前面提到的对象Ob ...
作为一个刚入门的新程序员,就要有遇到一切问题并想办法解决的决心和毅力,而我现在却还不具有这样的品质,表现之一就是害怕遇到问题,不敢创新,经常怀疑自己是否适合做程序员,遇到问题不能够冷静的面对和解决问题,还有一点就是缺乏行动力。突然想起了今天早上看到的一句话:如果不行动,懒惰就会生根发芽,时间越长,他的根会越扎越深,到时候就无法挽回。所以,自信点地迎难而上吧。既然选择了这条路,便应只顾风雨兼程
今天同事问我一个SQL,使用的是exists子查询,因为对SQL不是很熟,所以就趁机查了下资料,了解一下SQL中的exists和not exists的用法。
注:本文基本上是转自别人的博客,下面附上所转原文的链接:
http://www.cnblogs.com/netserver/archive/2008/12/25/1362615.html
下面是转载加个人总结:
1. 引言:
比如在Northwind数据库中有一个查询为
SELECT c.CustomerId, CompanyName FROM Customers c WHERE EXISTS( SELECT Orde ...
对于表达式A && B || C && D, 一般我们认为可能有两种执行顺序(A && B)|| (C && D), 即先执行A && B 的判断,然后执行C && D的判断,最后再执行||的判断(当然这是没有考虑Java中"短路"的一般执行顺序(后面结果的验证就是根据"短路"的特性))
另外一种可能就是((A && B) || C) && D, 即先执行A && B的判断,将结果作为一个参数再 ...
最近在写接口的时候用到了List,但是发现每次输出的结果都是同一条数据,而且是最后一题。看了下查询出来的结果,都是正确的,经过一步步调试发现在将查出来的结果放到List的时候出了问题。
File fileinfo=new File();
Array ...
public class Contenation {
public static void main(String[] args) {
String str = "Happy";
String str2 = "I" + str + "now" + 21;
System.out.println(str2);
}
}
使用javap -c Contenation反编译得到的JVM字节码:
Compiled from "Contenation.java"
public cla ...
/*
* @(#)ListIterator.java 1.23 03/12/19
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package java.util;
/**
*
* An iterator for lists that allows the programmer
* to traverse the list in e ...
/**
* Returns a fixed-size list backed by the specified array. (Changes to
* the returned list "write through" to the array.) This method acts
* as bridge between array-based and collection-based APIs, in
* combination with <tt>Collection.toArray</tt> ...
在今天之前我一直以为不能使用eclipse输入命令行参数,所以我都是使用dos命令来输入命令行参数,但是后来才发现原来eclipse也是可以的,现在分享一下:
1、右击工程,Run As -> Run Configurations
2、在Arguments -> Program arguments处输入参数即可。
注:以前使用的是dos命令窗口