📅  最后修改于: 2020-03-30 03:25:59             🧑  作者: Mango
Java没有指针, 但Java有引用。
引用:引用是引用其他内容的变量,可以用作其他内容的别名。
指针:指针是存储内存地址的变量,目的是充当该地址所存储内容的别名。
因此,指针是引用,但引用不一定是指针。指针是引用概念的特定实现,该术语用于允许您直接访问内存地址。
让我们讨论有关C/C++和Java上下文中的指针和引用的一些要点:
因此,整个Java没有指针(在C/C++意义上),因为对于通用OOP编程它不需要它们。此外,添加指向Java的指针将破坏安全性和健壮性,并使该语言更加复杂。
// C++代码展示指针和对应的操作
#include
using namespace std;
int main()
{
int number = 88;
int * pNumber;
// 赋值地址给指针
pNumber = &number;
// 打印pNumber
cout << pNumber << endl;
// 打印地址
cout << &number << endl;
// 打印被pNumber指向的值
cout << *pNumber << endl;
// 打印value
cout << number << endl;
// 重新分配pNumber
*pNumber = 99;
cout << pNumber << endl;
cout << &number << endl;
cout << *pNumber << endl;
cout << number << endl;
cout << &pNumber << endl;
}
输出:
0x7fff1ae7ca94
0x7fff1ae7ca94
88
88
0x7fff1ae7ca94
0x7fff1ae7ca94
99
99
0x7fff1ae7ca98
Java程序说明参考
// Java程序,展示引用的概念和使用
class Rectangle
{
double length;
double breadth;
}
class RectangleDemo
{
public static void main(String args[])
{
// r1是包含Rectangle对象的引用
Rectangle r1 = new Rectangle();
// r2是另一个引用变量, r1和r2指向同一个对象
Rectangle r2 = r1;
r1.length = 10;
r2.length = 20;
System.out.println("R1长度: " + r1.length);
System.out.println("R2长度: " + r2.length);
}
}
输出:
R1长度 : 20.0
R2长度 : 20.0