黑马程序员技术交流社区

标题: 对象及其三大特征(上) [打印本页]

作者: 与梦逆风而行    时间: 2014-11-29 20:55
标题: 对象及其三大特征(上)
本帖最后由 与梦逆风而行 于 2014-11-29 21:14 编辑

因为字数的问题帖子分成了3部分,希望不要影响到大家的阅读。
http://bbs.itheima.com/thread-154781-1-1.html   (上)http://bbs.itheima.com/thread-154782-1-1.html    ( 中 )
http://bbs.itheima.com/thread-154784-1-1.html   (下)

1对象
1.访问对象成员
1.引用对象的成员变量
对象名.变量名

2.引用对象的成员方法
对象名.方法名(参数)
Vector v = new Vector();
v.addElement(“helloworld”);
int[] a= {1, 2, 3, 4, 5};  
int size = a.length;
System.out.println();
2.对象内存结构
1.创建对象将在JVM堆内存中开辟对应的成员变量内存存储空间,并对其进行初始化值的设定
2.所有的对象均存在于堆内存中,即便是static修饰的对象,内存存储位置也在堆内存,只是外部引用指向该位置
3.对象内存回收
1.对象的引用一旦不存在,该对象所占用的内存空间将永远不会被JVM访问到,该空间即变为垃圾内存,垃圾内存可以通过JVM自动回收的方式进行清理,也可以由程序员手工清除,具体的操作步骤详见System类中的gc方法
3.存在引用的对象内存空间将永远不被回收,如果内存中存在的此类对象过多,将造成内存不足的情况发生
4.对象作为方法的参数
1.类是一种数据类型,在进行方法参数设计时,可以为类传递对象作为参数,即对象作为方法的参数
2.对象作为方法的参数与基本数据类型作为方法的参数不同,基本数据类型传递的数据为对应的值,而对象作为方法的参数传递的是对象内存空间的引用
5.对象作为方法的返回值
1.类是一种数据类型,在进行方法返回值的设定时,可以将该类型作为方法返回值类型,此时方法返回的结果应为一个对象或null
2.对象作为方法的返回值与对象作为方法的参数十分相似,返回的也是该对象的引用
6.数组对象
数组在进行内存空间的创建时,占用的内存空间位于堆内存范围内,数组可以看做是一种特殊的对象,操作数组同样也是使用引用的格式来进行

7.对象数组
对象数组是一种特殊的数组,即数组中保存的元素是对象,在数组的内存表示格式中,对应的值不再是一个基本数据类型对应的二进制表示形式,而是一个对象的引用地址
8.This
1.为加强程序的阅读性,在类的实例方法中,为每一个实例变量或实例方法的引用前面添加this关键字,指代该调用使用的是当前类的实例
2.This关键字可以理解为成员的调用者对应的内存空间,简单来说A对象调用function(),在方法中所有的this指代的就是A对象,如果换B对象调用该方法,所有的this指代的就是B对象
3.this关键字在某些情况不能省略
4.This作为对象的默认引用有两种情形:
1.构造器中引用该构造器正在初始化的对象。
2.在方法中引用调用该方法的对象。
This关键字最大的作用就是让类中的一个方法,访问该类里另一个或Field.
9.匿名对象
匿名对象即没有名称的对象,也可以称为没有引用的对象,匿名对象仅在创建时有效,在其内存空间被使用完毕前,如果没有对其进行引用,则匿名对象将永久性成为垃圾内存
10.方法的所属性
Java语言中方法的所属性主要体现在如下几个方面:
1.方法不能独立定义,方法只能在类体里定义。
2.从逻辑定义上来看,方法要么属于该类本身,要么属于该类的一个对象。
3.永远不能立执行方法,执行方法必须使用类或对象进行调用。
11面试题
Person p = newPerson();他在内存中做了哪些事?

1.将Person.class文件加载到内存中;
2.在堆内存中创建一个对象Person;
3.把Person中的属性进行默认初始化;
4.把Person中的属性进行显示初始化;
5.调用构造代码块(如果没有,不执行这个操作)
6.调用构造函数进行初始化;
7.在栈内存中声明Person类型的变量p;
8.把堆内存的地址(引用)赋给栈内存中p。





作者: 斷灬dian    时间: 2015-1-4 21:43
赞一个!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2