package chunf.test;
public class Test2 {
// public static void doTest(int i, int j) {
// int a = i;
// i = j;
// j = a;
// }
//
// public static void main(String[] args) {
// int a = 3;
// int b = 4;
// doTest(a, b);
//
// System.out.println("a=" + a);
// System.out.println("b=" + b);
// }
//以上输出的是 3 4 虽然走了doTest方法 但是,传递的只是对a b 的引用,并未改变a b 的值。
//-----------------------------------------------------------------------------------
// public static void doTest(int[] counts) {
// counts[0] = 6;
// System.out.println(counts[0]);
// }
//
// public static void main(String[] args) {
// int[] count = { 1, 2, 3};
// doTest(count);
// }
//以上输出为6,因为数组传递至方法内,方法将数组改变并在改变后打印改变后的值。
//----------------------------------------------------------------------------------
// public static void doTest(Test1 a) {
// a = new Test1();
// a.a++;
// }
//
// public static void main(String args[]) {
// Test1 a = new Test1();
// doTest(a);
// System.out.println(a.a);
// }
/*
* Test1{
* int a = 2;
* }
* */
//以上输出依然为TEST1类中的初始a值,原因是a并非静态的变量,每当new一个新的类,指针指向的地址是变化的。并非被方法处理的TEST1类
//------------------------------------------------------------------------------------
// public static void doTest(Test1 a) {
// a = new Test1();
// a.a++;
// }
//
// public static void main(String args[]) {
// Test1 a = new Test1();
// doTest(a);
// System.out.println(a.a);
// }
/*
* Test1{
* static int a = 2;
* }
* */
//以上输出为3,因为TEST1类中的变量a是静态的,因此无论new了多少个TEST1类,变量a的地址是不变的。所以操作的都是同一个a
//例如下面例子
//public static void doTest(Test1 a){
// a = new Test1();
// a.a++;
//}
//
//public static void main(String[] args) {
// Test1 tst1 = new Test1();
// doTest(tst1);
// Test1 tst2 = new Test1();
// doTest(tst2);
// System.out.println(tst1.a);
// System.out.println(tst2.a);
//}
//这两行输出都是4,因为无论是tst1还是tst2,变量a的地址是不变的,操作的都是同一个a
//----------------------------------------------------------------------------------
// String str = new String("haha");
//
// char[] ch = { 'a', 'b', 'c' };
// public static void main(String args[]) {
// Test2 tst = new Test2();
// ex.change(tst.str, tst.ch);
// System.out.print(tst.str + " and ");
// System.out.println(tst.ch);
// }
//
// public void change(String str, char ch[]) {
// str = "lalala";
// ch[0] = 'd';
// }
//以上输出haha and dbc由于String是final的,那么tst.str是不被改变的。而数组并非如此,因此数组被改变
}
java 值传递笔记
最新推荐文章于 2024-11-28 18:34:11 发布