Java中的值传递
在Java中方法参数的传递,都是值传递,对象传递是地址 ,基本数据类型传递的是值。地址和值都值。
下面以一个例子来看内存中的数据变化情况
public class Test{
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public callMethod(Test test){
Test test1 = new Test();
test1.setName("456");
test.setName("123");
test = test1;
System.out.println("test name:"+test.getName());
}
public static void main(String []args){
Test t = new Test();
callMethod(t);
System.out.println("t name:"+t.getName());
}
}
运行结果:
test name:456
t name:123
内存变化情况如下图:
(图一)调用方法之前实际上是声明了两个变量 test 它的作用域是方法内有效
(图二)callMethod(t); 调用方法,把t的的地址给test,他们指向同一个堆内存单元,执行这两个语句以后
test1.setName("123");
test.setName("456"); 都有了初始值
(图三)执行语句 test = test1; 把test1的地址给test test1和test 都指向同一个堆内存单元
(图四)方法调用结束,test和test1内存被释放掉
相关文档:
1、Class类的访问权限:
public:可以供所有的类访问。
默认(包访问权限):默认可以称为friendly但是,java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++。默认的访问权限是包级访问权限。
即如果写了一个类没有写访问权限修饰符,那么就是默认的访问权限, ......
以O(n)的时间实现对正整数的排序。思路是:从最末位开始,对数组中每一个数的第k位进行计数排序,直到排到最高位为止。
缺点:只能对正整数进行排序,而且需要知道最大整数的最高位,使用范围太小。但这不失为一个很有趣的排序,因为它颠覆了比较排序的传统思路。
public static int[] radixSort(int[] inputs,int d){
......
1 相关知识介绍
1.1 SMB
Microsoft网络配置中主要采用SMB形式实现文件共享和打印服务,SMB(服务器消息块)是一种客户端/服务器文件共享协议。IBM于20世纪80年代末期开发了服务器信息块(SMB),用于规范共享网络资源(如目录、文件、打印机以及串行端口)的结构。这是一种请求/响应协议。与FT ......
public static void main(String args[]) {
Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);
String[] array = {"张三", "李四", "王五"};
Arrays.sort(array, cmp);
for(String str : array){
System.out.println(str);
}
} ......
原文: http://forum.javaeye.com/viewtopic.php?t=17912搂主的问题问的含含糊糊:flyjie给出了非常详细的解释,不过就是没有解释String实例化的特殊方面以及Intern()方法的含义----------------------------------------------------------------------------------------------------------------------------------------- ......