java学习划重点第二部分
2017-07-08 10:39
381 查看
初学者总结,若有问题还望指出,感谢!
一,java中的引用与对象
(1)在C++中比如
这里A1是对象,A2是A1的引用。
(2)但是在Java中比如:
(3)在C++中引用是必须被初始化的,java 中可以不初始化,比如定义A2就没有被初始化,只是为引用分配类资源,并未给予指向。
在C++中引用一旦初始化后是不能修改的,但是java可以随意修改。
(4)至此我们发现java中的引用跟谁很像?对,是C/C++中的指针。而java中没有指针,所以引用可以做到缺乏指针做到的事情。
二,实参与形参
java中没有指针,那是不是实参内容永远无法改变?其实可以用两种方式改变,1是数组,而是引用。
以最常见的两个变量交换其大小为例:
(1)直接交换
输出结果为:
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);
}
}输出结果为
一,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交换成功。
相关文章推荐
- Java学习划重点第三部分
- JAVA新手学习笔记——JAVA实战经典(李兴华)第二部分A
- Java基础学习笔记 第二部分 part 2
- JAVA新手学习笔记——Java实战经典(李兴华)第二部分C
- JAVA新手学习笔记——JAVA实战经典(李兴华)第二部分B
- JAVA新手学习笔记——Java实战经典(李兴华)第二部分D
- Java学习笔记(必看经典)(已作标记,红色部分为重点)
- Java基础学习笔记 第二部分 part 3
- Java学习第四天笔记-第二部分
- 黑马程序员--面向对象第二部分-内部类、异常--java学习日记6(基础知识)
- Java基础学习笔记 第二部分 part 1
- objective-c学习笔记第四章《objective-c 类(第二部分)与java中的区别》
- 黑马程序员——Java学习总结 IO部分
- Java高级部分流重点总结上
- 自定义view学习记录--第二部分UI布局(Hencoder的布局过程的三章内容)
- 个人学习总结的部分java小知识与面试题(二)
- Java 建模: 子整体软件开发,第二部分
- C++学习笔记【第二部分第十二章:动态内存】
- Java学习应该理解的一些重点内容
- Java(集合类)第二部分(Set)