Object类
来源:互联网 发布:网络应急演练方案 编辑:程序博客网 时间:2024/04/29 00:55
① Object类是所有类的父类,直接或是间接的父类。
② Object类型的引用可以存储任意类型的对象。
③ Object中的方法是所有类都具备。
常用方法:
a. getClass():返回值引用中实际对象类型。
作用:通常用于判断两个引用中存储的实际对象类型是否一致;【重点】
一致-true; 不一致-false.
b. int hashCode():对象在内存中地址的整数表现形式。【了解】
c. public String toString():返回对象字符的结果。【重点】
覆盖的原则:将所有的属性拼接成字符串,作为返回值。
作用:方便打印输出对象所有的属性内容。
d. public boolean equals(Object obj):比较对象的内容是否一致。【重点】
==:如果两端比较的变量是基本数据类型,比数值。
如果两端比较的变量是引用数据类型,比地址。
开发中"=="比较两个对象是否为同一个对象,
结果为:true-同一个对象
结果为:false-不同的对象
覆盖的步骤:
1. 判断this和obj是否指向同一个对象
2. 判断obj是否为null
3. 判断两个引用中存储的实际对象类型是否一致
4. 强制类型转换
5. 将属性逐一比较
面试题目:写出"=="和equals方法的区别???
e. finalize():垃圾回收器在回收垃圾对象,调用此方法。【开发中不要将任何核心代码写在此方法中】【面试重点】
垃圾对象:没有任何引用指向的对象。
垃圾回收:回收垃圾对象,释放内存存储空间。
垃圾回收器(GC)用于垃圾回收。
垃圾回收器回收垃圾对象的时机:
① 自动回收垃圾对象:JVM内存耗尽时,不能再为新创建的对象
分配存储空间时,垃圾回收器会自动的回收所有垃圾对象
(垃圾回收器会自动的调用finalize方法)
② 手动回收机制:利用System.gc(),通知JVM做垃圾回收,
如果垃圾回收器空闲,则回收,否则,暂不回收。
eg:几个常见的方法
package test_object;
/*
*
*equals
*
*/
public class TestEquals {
public static void main(String[] args) {
/*int a=12;
int b=20;
System.out.println(a==b);*/
Student2 s1 = new Student2("ww",38);
Student2 s2 = new Student2("ww",38);
System.out.println(s1==s2);
/* Student s3=s1;
System.out.println(s1==s3);*/
System.out.println(s1.equals(s2));
}
}
class Student2{
private String name;
private int age;
public Student2() {
super();
// TODO Auto-generated constructor stub
}
public Student2(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean equals(Object obj){
//1. 将this和obj比较,判断this和Obj是否指向同一个对象
if(this==obj){
return true;
}
//2. 判断 obj是否为null
if(obj==null){
return false;
}
//3. 判断两个引用中存储的实际对象类型是否一致
if(this.getClass()!=obj.getClass()){
return false;
}
//4. 强制类型
Student2 s=(Student2)obj;
//5. 将每一个属性逐一比较:基本数据类型用"==";对象比较用equals比较
if(this.age ==s.age && this.name.equals(s.name)){
return true;
}else{
return false;
}
}
}
---------------------------------------------------------------------------------------------------
package test_object;
/*
*HashCode返回对象内存地址以整数的形式表现
*/
public class TestHashCode {
public static void main(String[] args) {
MyClass mc = new MyClass();
MyClass mc2 = new MyClass();
System.out.println(mc.hashCode());
System.out.println(mc2.hashCode());
}
}
class MyClass{}
------------------------------------------------------------------------------------------------------
package test_object;
/*
*toString方法返回该对象字符串表示形式
*
/
public class TestToString {
public static void main(String[] args) {
// Student s1 = new Student("ww",38);
/*System.out.println(s1.toString());
//System.out.println(s1.getClass().getName()+"@"+Integer.toHexString(s1.hashCode()));
System.out.println(s1);*/
// System.out.println(s1);
/*int a=12;
System.out.println(a);*/
Student s1 = new Student("ls",39);
Student s2 = new Student("杨sl",28);
/*System.out.println(s1.getName()+"\t"+s1.getAge());
System.out.println(s1);*/
int sum=s1.getAge()+s2.getAge();
System.out.println(sum/2);
}
}
class Student{
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
// System.out.println("-----------------test--------------");
//return name+" "+age;//覆盖的原则:将所有的属性内容拼接为一个字符串,作为结果。
return "name="+this.name+",age="+this.age;//this.可以省略
}
}
------------------------------------------------------------------------------------------------------------
package demo2017114;
/*
* getClass返回实际对象类型
*/
public class TestgetClass {
public static void main(String[] args) {
Animal111 an=new Dog();
System.out.println(an.getClass()); //返回实际对象类型
}
}
class Animal111{
public String eat(){
return "吃东西";
}
}
class Dog extends Animal111{
public String eat(){
return "吃了一个萝卜";
}
}
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- C++ oop 作业
- Git使用详细教程
- Python Mat格式文件读取
- 洛谷 p1086 花生采摘
- 剑指offer---两个栈实现队列
- Object类
- 磁盘
- hadoop常用命令参数介绍
- JAVA Socket编程学习5--IO模型
- MAC OSX系统下利用VMware Fusion双虚拟机使用Windbg调试windows驱动
- Math 类和BigDecimal 类
- 多个panel控件重合使用时,某个panel控件不显示问题?
- 实验六树和二叉树的实验2
- Android 进程状态