【原创】从机理欣赏语言 JAVA篇 1
在JAVA面向对象的设计中,有一个相当重要的概念,那就是引用。什么是引用呢?引用实际上就是把一个标识符绑定给一个对象。
[补充]在C++中,引用和指针有什么区别?
在C++中,引用是直接使用数据的,而指针则是间接使用数据
从JAVA的语法,引用是JAVA的面向对象属性的具体表现。如果需要使用一个引用,我们要做的是声明引用和分配空间。例如,
Character C=new Character(‘x’);
起初我对此种用法感觉到莫名,也不太习惯。原以为是因为和C\C++不同,实际上并非如此,而是我并不理解JAVA的文化。
例如,首先初始化了两个引用
Character C1=new Character(‘x’);
Character C2=new Character(‘y’);
然后执行
C1=C2;
其实以上语句做的事情,将C2引用赋值给C1引用。虽然输出C1和C2都是输出一个y,但是进行的操作并非字符的复制,而是引用的复制。
现在定义了这样一个类
class Point
{
Point()
{
x=0;
y=0;
}
int x;
int y;
}
又如,在使用的时候就很容易犯这样的错误,
public class Example
{
private Point pt1;
public static void main(String args[])
{
pt1= new Point();
}
};
如果编译这样的代码,一定会出错。为什么呢?JAVA对类的分静态与非静态元素处理是不同的。静态元素是存在于对象建立之前,非静态元素则只存在于对象建立以后。这也是JAVA的一大特点。因此对此段代码的修改,有三种方法:
一是实例化Example类
public class Example
{
private static Point pt1;
public static void main(String args[])
{
pt1= new Point();
}
};
二是把pt1定为静态数据
public class Example
{
private Point pt1;
public static void main(String args[])
{
Example ex=new ex();
ex.pt1= new Point();
}
};
三是将pt1作为main函数中的变量
public class Example
{
public static void main(String args[])
{
Point pt1 =new Point();
}
};