Java笔记整理——对象(上)

1、创建对象后如果希望成员变量不被其中任何一个对象改变,可以使用static关键字。
实例代码如下:
public class AccessProperty {
 static int i = 47;
 public void Call(){
  System.out.println("调用Call方法");
  for(i = 0; i < 3; i++){
   System.out.print(i + " ");
   if(i == 2){
    System.out.println("\n");
   }
  }
 }
 public AccessProperty(){
 
 }

 public static void main(String[] args) {
  AccessProperty t1 = new AccessProperty();
  AccessProperty t2 = new AccessProperty();
  t2.i = 60;
  System.out.println("第一个实例对象调用变量i的结果:" + t1.i);
  t1.Call();
  System.out.println("第二个实例对象调用变量i的结果:" + t2.i);
  t2.Call();
 }
}
输出结果如下:
第一个实例对象调用变量i的结果:60
调用Call方法
0 1 2

第二个实例对象调用变量i的结果:3
调用Call方法
0 1 2 

从上述运行结果可以看到,由于使用了t2.i = 60语句改变了静态成员变量的值,使用对象t1调用成员变量的值也为60,这正是i值被定义为静态成员变量的结果,即使使用两个对象对同一个静态成员变量进行操作,依然可以改变静态成员变量的值,因为在内存中两个对象同时指向同一块内存区域。

2、对象的引用
引用指示存放一个对象的内存地址,并非存放一个对象,严格地说引用和对象是不同的,但是可以将这种区别忽略,如可以简单的说book是Book类的一个对象,而事实上应该是book包含Book对象的一个引用

3、对象的比较
在Java语言中有两种对象的比较方式,分别是“==”运算符和equals()方法。其区别是:equals()方法是String类中的方法,它用于比较两个对象引用所指的内容是否相等;而“==”运算符比较的是两个对象引用的地址是否相等。如下面的实例代码:
 public static void main(String[] args) {
  String c1 = new String("abc");
  String c2 = new String("abc");
  String c3 = c1;
  System.out.println("c2==c3的运算结果是:" + (c2 == c3));
  System.out.println("c2.equal(c3)的结果是:" + c2.equals(c3));
 }
运算结果是:
c2==c3的运算结果是:false
c2.equal(c3)的结果是:true
从上述结果看,由于c1与c2是两个不同的对象引用,两者在内存中的位置不同,er“String c3 = c1;”语句将c1的引用赋给c3,所以c1与c3这两个对象引用是相等的,也就是打印c1 == c3这样的语句将返回true值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章