您的位置:首页 > 编程语言 > Java开发

java学习划重点第二部分

2017-07-08 10:39 381 查看
初学者总结,若有问题还望指出,感谢!

一,java中的引用与对象

(1)在C++中比如

class A
{
int a;
};
A A1 = new A();
A &A2 = A1;

这里A1是对象,A2是A1的引用。

(2)但是在Java中比如:

class A
{
int a;
};
A A1 = new A();
A A2;
A &A3 = A1;


(3)在C++中引用是必须被初始化的,java 中可以不初始化,比如定义A2就没有被初始化,只是为引用分配类资源,并未给予指向。

         在C++中引用一旦初始化后是不能修改的,但是java可以随意修改。

(4)至此我们发现java中的引用跟谁很像?对,是C/C++中的指针。而java中没有指针,所以引用可以做到缺乏指针做到的事情。

二,实参与形参

java中没有指针,那是不是实参内容永远无法改变?其实可以用两种方式改变,1是数组,而是引用。

以最常见的两个变量交换其大小为例:

(1)直接交换

public class Test {
    void swap(int x,int y)
    {
        int tmp = x;
        x = y;
        y = tmp;
    }
    public static void main(String[] args) {
          Test t = new Test();
          int x = 1;
          int y = 2;      
          t.swap(x, y);
          System.out.println("x = " + x);
          System.out.println("y = " + y);
    }

}

输出结果为:

x = 1
y = 2很显然没有交换成功。

(2)数组交换

ublic class Test {
void swap(int []x,int []y)
{
int tmp = x[0];
x[0] = y[0];
y[0] = tmp;
}
public static void main(String[] args) {
Test t = new Test();
int []x = {1};
int []y = {2};
t.swap(x, y);
System.out.println("x = " + x[0]);
System.out.println("y = " + y[0]);
}

}输出结果为:
x = 2 y = 1很显然交换成功了。

(3)引用交换
class A
{
int i;
A(int i)
{
this.i = i;
}
}
public class Test {
void swap(A x,A y)
{
int tmp = x.i;
x.i = y.i;
y.i = tmp;
}
public static void main(String[] args) {
Test t = new Test();
A x = new A(1);
A y = new A(2);
t.swap(x, y);
System.out.println("x = " + x.i);
System.out.println("y = " + y.i);
}

}输出结果为
x = 2
y = 1
交换成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息