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

java函数的参数传递和String类型

以下内容摘自java函数的参数传递和String类型 http://www.blogjava.net/thuixy/archive/2009/06/06/280302.html
说完了java的String类型,我们最后看看java函数参数的传递,到底是值传递还是引用传递呢?一般的说法是对于基本类型比如int、char是值传递,对于对象类型是引用传递。这种说法没错,但是请看下面的例子:
String s=”abc”;
change(s);
System.out.println(s);
public void change(String str)
{
     str=”abcd”;
}
上面的程序会有什么结果呢?打印abc还是abcd,运行程序会发现打印的是abc,完了,似乎不合乎常理,按理说String 也是对象,应该是引用传递才对啊,有的同学知道java的String类型是不可变类型,会得出结果abc,具体解释是String就相当于是char[]的包装类。包装类的特质之一就是在对其值进行操作时会体现出其对应的基本类型的性质。在参数传递时,包装类就是如此体现的。所以,对于String在这种情况下的展现结果的解释就自然而然得出了。同样的,Integer、Float等这些包装类和String在这种情况下的表现是相同的。下面从函数参数传递的方式来理解也可以得出相同的结果。
java的参数传递本质上都可以认为是值传递,对基本类型自然不必说,对于对象类型,传递的是对象的地址,地址是个数字,也是基本类型,所以也还是值传递的, 有了这个基础,上面的题目可以这样理解,s是字符串abc的地址,调用change方法时,把s的拷贝赋给str,即str也指向abc,但是在方法里又把str指向abcd,str就是abcd的地址了,但是s还是指向的abc。


相关文档:

Java Set Delete Remove

       // 删除时必须通过iterator.remove()来执行,不能直接使用set的remove()来执行,不然会出现java.util.ConcurrentModificationException异常
/*       Iterator<String> delIter = keySet.iterator();
      ......

ubntu下java中文乱码解决

cd /usr/lib/jvm/java
-1.5.0-sun-1.5.0.15/jre/lib/fonts
sudo mkdir fallback
cd fallback
sudo cp /usr/share/fonts/truetype/arphic/uming.ttc /usr/lib/jvm/java
-1.5.0-sun-1.5.0.15/jre/lib/fonts/fallback
sudo mkfontdir
sudo mkfontscale ......

java的MD5加密与解密

方法一:只加密
import java.security.*;  
import java.security.spec.*;  
 
class MD5_test {  
 public final static String MD5(String s) {  
  char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',  
 &n ......

Java加密和数字签名编程快速入门

      本文主要谈一下密码学中的加密和数字签名,以及其在java中如何进行使用。对密码学有兴趣的伙伴,推荐看Bruce Schneier的著作:Applied Crypotography。在jdk1.5的发行版本中安全性方面有了很大的改进,也提供了对RSA算法的直接支持,现在我们从实例入手解决问题(本文仅是作为简单介绍): ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号