访问对象属性和方法

例1:

 1 public class Test {
 2   int i = 47;
 3   public void call(){
 4     for (i = 0; i < 3; i++){
 5         System.out.print(i+" ");
 6           if(i == 2){
 7             System.out.println("\n");
 8             }
 9         }
10    }
11     public Test(){
12     }
13     public static void main(String[] args) {
14        Test t1 = new Test();
15        Test t2 = new Test();
16        t2.i = 60;
17        System.out.println(+t1.i);
18        t1.call();
19        System.out.println(+t2.i);
20        t2.call();
21     }
22
23 }

运行结果:

47
0 1 2

60
0 1 2

分析:

在上述代码的主方法中首先实例化一个对象,然后使用“.”操作符调用成员变量和成员方法,但是从运行结果可以看到,虽然使用两个对象调用同一个成员变量,结果却不同,因为在打印这个成员变量值之前将该值重新赋值为60,单在赋值使用时的是第二个对象t2对象调用成员变量,所以在第一个对象t1调用成员变量打印该值时仍然是成员变量的初始值。由此可见,两个对象的产生是相互独立的,改变了t2的值,不会影响到t1的 i 的值。在内存中如下图所示:

如果希望成员变量不被其中任何一个对象改变,可以使用static关键字,代码如下:

 1 public class Test {
 2   static int i = 47;
 3   public void call(){
 4     for (i = 0; i < 3; i++){
 5         System.out.print(i+" ");
 6           if(i == 2){
 7             System.out.println("\n");
 8             }
 9         }
10    }
11     public Test(){
12     }
13     public static void main(String[] args) {
14        Test t1 = new Test();
15        Test t2 = new Test();
16        t2.i = 60;
17        System.out.println(+t1.i);
18        t1.call();
19        System.out.println(+t2.i);
20        t2.call();
21     }
22
23 }

运行结果:

60
0 1 2

3
0 1 2

 分析:

从上述运行结果中可以看到,由于使用t2.i=60语句改变了静态成员变量的值,使用对象t1调用成员变量的值也是60,这正是i值被定义为静态成员变量的效果,即使使用两个对象对同一个静态成员变量进行操作,依然可以改变静态成员变量的值,因为在内存条中两个对象指向同一块内存区域,t1.i++语句执行后,i的值变为3,当再次调用call()方法时又被重新赋值为0,做循环打印操作。

时间: 2024-12-19 04:55:24

访问对象属性和方法的相关文章

summery 总结篇 访问对象属性的方法

访问一个对象的属性有两种方法: (1),通过“.”来访问:object.propertyName; (2),通过[]来访问:object[propertyName]; 访问一个对象的方法只能通过“.”来访问,object.methodName(); 列题演示: function Person() { this.sex=" 男 "; // 定义一个属性 sex this.age=22; // 定义一个属性 age this.say=function(){ // 定义一个方法 say()

浅析JavaScript访问对象属性和方法及区别

属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸.跳跃等. 在JavaScript中通常使用"."运算符来存取对象的属性的值.或者使用[]作为一个关联数组来存取对象的属性. 对象的属性和方法统称为对象的成员. 访问对象的属性 在JavaScript中,可以使用" . "和" [ ] "来访问对象的属性. 1. 使用" . "来访问对象属性 语法: objectNam

Java内存理解 &amp;&amp; 反射访问私有属性或方法

理解了内存,就理解了一切,就理解了各种各样的语言.所有的语言无非都是这样:局部变量分配内存永远在栈里面,new出来的东西分配内存永远是在堆里,静态的东西分配内存永远是在数据区.剩下的代码肯定是在代码区.所有的语言都是这样. 对于在API文档里面找某个类,如果一个类不用引入包就可以直接使用,那么这个类肯定是在java.lang这个包里. 接口是抽象方法(public)和常量值(public static final)的集合. 抽象类一定要有abstract关键字. Java反射之访问私有属性或方法

Javascript对象属性与方法汇总

1 Javascript对象属性与方法汇总 2 发布时间:2015-03-06 编辑:www.jquerycn.cn 3 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符串.数组.日期等对象的属性与常用方法,有需要的朋友参考下. 4 本节主要内容: 5 Javascript对象属性与方法 6 7 对Javascript对象属性方法做一个详细的汇总介绍,供jquery中文网的朋友参考. 8 9 数组(Array):系列元素的有序集合 10 属性: 11 l

JS所有内置对象属性和方法汇总

JS三大对象 对象,是任何一个开发者都无法绕开和逃避的话题,她似乎有些深不可测,但如此伟大和巧妙的存在,一定值得你去摸索.发现.征服. 我们都知道,JavaScript有3大对象,分别是本地对象.内置对象和宿主对象. 在此引用ECMA-262(ECMAScript的制定标准)对于他们的定义: 本地对象 与宿主无关,独立于宿主环境的ECMAScript实现提供的对象. 简单来说,本地对象就是 ECMA-262 定义的类(引用类型). 这些引用类型在运行过程中需要通过new来创建所需的实例对象. 包

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

JavaScript 中关于Date的内置对象属性和方法的总结

Date 属性: 1.constructor    所建立对象的函数参考 2.prototype      能够为对象加入的属性和方法 方法: 1.getDay()    返回一周中的第几天(0-6) 2.getYear()    返回年份.2000年以前为2位,2000(包含)以后为4位 3.getFullYear()     返回完整的4位年份数 4.getMonth()      返回月份数(0-11) 5.getDate()       返回日(1-31) 6.getHours()  

JavaScript之Ajax-1 Ajax(Ajax原理、Ajax对象属性和方法)

一.Ajax原理 Ajax简介 - Asynchronous JavaScript And Xml 异步的 JavaScript 和 Xml - Ajax 是一种用来改善用户体验的技术,其实质是,使用XMLHttpRequest对象异步地向服务器发送请求 - 服务器返回部分数据,而不是一个完整的页面,以页面无刷新的效果更改页面中的局部内容 Ajax工作原理 获取Ajax对象 二.Ajax对象属性和方法 异步对象的属性和方法 onreadystatechange - onreadystatecha

js object 对象 属性和方法的使用

1 //object 对象 属性和方法的使用 2 var person = new Object(); 3 4 person.name="张海"; 5 person.age="60"; 6 7 person.say=function(){ 8 console.log(person.name+"他在说话!"+"\t他已经"+person.age+"岁"); 9 }; 10 person.eat=functio