易截截图软件、单文件、免安装、纯绿色、仅160KB

有关java中的引用问题

首先,java对对象和基本类型的处理是不一样的,和C语言一样,当把Java的基本数据类型(如int,char,double等)作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局部变量是输入参数的一个拷贝,所有的函数体内部的操作都是针对这个拷贝的操作,函数执行结束后,这个局部变量也就完成了它的使命,它影响不到作为输入参数的变量。这种方式的参数传递被称为"值传递"。而在Java中用对象的作为入口参数的传递则缺省为"引用传递",也就是说仅仅传递了对象的一个"引用",这个"引用"的概念同C语言中的指针引用是一样的。当函数体内部对输入变量改变时,实质上就是在对这个对象的直接操作。
此外,在任何用“=”向对象变量赋值的时候都是"引用传递"。如:
package reference;
class PassObj
{
String str = "init value";
}
public class ObjPassValue
{
public static void main(String[] args)
{
PassObj objA = new PassObj();
PassObj objB = objA;
objA.str = "changed in objA";
System.out.println("Print objB.str value: " + objB.str);
}
}
/* RUN RESULT
Print objB.str value: changed in objA
*/
第一句是在内存中生成一个新的PassObj对象,然后把这个PassObj的引用赋给变量objA,第二句是把PassObj对象的引用又赋给了变量objB。此时objA和objB是两个完全一致的变量,以后任何对objA的改变都等同于对objB的改变。Hashtable并不能真正存储能对象,而只能存储对象的引用。所以,Hashtable不能真的存储对象,只能是对象的引用。import java.util.*;
public class HashtableAdd{
    public static void main(String[] args){
        Hashtable ht = new Hashtable();
        StringBuffer sb = new StringBuffer();
        //append 只在StringBuffer中有.
        sb.append("abc,");
        ht.put("1",sb);    
        sb.append("def,");
        ht.put("2",sb);
        sb


相关文档:

Java性能优化

Java性能优化技巧集锦
一、通用篇
  1.1 不用new关键词创建类的实例
  1.2 使用非阻塞I/O
  1.3 慎用异常
 
 1.4 不要重复初始化变量
  1.5 尽量指定类的final修饰符
  1.6 尽量使用局部变量
  1.7
乘法和除法
二、J2EE篇
  2.1 使用缓冲标记
  2.2 始终通过会话Bean访问实体Bea ......

java快速排序

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
    假设要排序的数组是A[1]&hellip ......

Java中常用设计模式总结

在Java中有23中设计模式,下面只对部分常用的设计模式介绍一下:
1.单例模式(有的书上说叫单态模式其实都一样)
该模式主要目的是使内存中保持1个对象。看下面的例子:
package org.sp.singleton;
//方法一
public class Singleton {
//将自身的实例对象设置为一个属性,并加上Static和final修饰符
private static f ......

java程序如何生成jar文件

两步走:
1.java工程打包成Jar文件(权且当你是App工程号了.)
   这个好办,在Eclipse中右键选择项目上的Export功能,在导出类型中选项jar即可.
   在后续界面上有几个地方需要注意的.
   记的勾选"Export generated class files and resources". 这样就会把你classpath中引用到得第三方 ......

浅谈Java多线程的同步问题

多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。
下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。
先来看第一段代码,这里我们在ru ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号