Java——object类
body, table{font-family: 微软雅黑; font-size: 10pt}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}
|
public int hashCode();
//就是通过该类在堆上的地址,通过hash算法,算出一个数
public final Class getClass();
//大写 Class 是一种类型;//返回该类的具体类型
|
public String toString();
public boolean equals(Object obj);
|
protected void finalize();
protected Object clone();
|
| Student.java | MyObjectDemo.java |
|
package com.java.objectdemo;
//类不写默认的是继承Object类
public class Student implements Cloneable{ //这种没有任何成员或者抽象方法的接口,被称为 标记接口
String name;
int age;
boolean gender;
public Student(){
}
public boolean equals(Object obj) {
Student stu=(Student) obj;
if(this.name!=null&&stu.name!=null){
if(this.name.equals(stu.name)&&this.age==stu.age&&this.gender==stu.gender )
return true;
}
return false;
}
//protected void finalize() {} //和c++的析构函数两回事
//当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
public Student(String name,int age,boolean gender){
this.name=name;
this.age=age;
this.gender=gender;
}
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
public String toString() {
return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]";
}
}
|
package com.java.objectdemo;
public class MyObjectDemo {
public static void main(String[] args) {
Student student=new Student();
System.out .println(student.toString()); //对象的字符串表示,建议重写
//默认这里会输出:com.java.objectdemo.Student@15db9742
System.out.println(student); //当我们使用一个对象引用直接输出的时候,系统默认是调用该类的 toString 方法,如果该类没有这个方法就直接调用基类Object的toString方法
//com.java.objectdemo.Student@15db9742
Student student1=new Student("meihao",24,true);
System.out.println( "student1= "+student1);
//student1= com.java.objectdemo.Student@6d06d69c
//这里调用toString方法 返回 getClass().getName() + '@' + Integer.toHexString(hashCode())
System.out.println(student.hashCode()); //366712642
Student student2=new Student();
System.out.println(student2.hashCode()); //2018699554
System.out.println(student2.getClass()); //class com.java.objectdemo.Student
Class oClass; //Class 是一个类,该类是用来代表一个student.class 字节码文件对象
System.out.println("(student1==student2) = "+(student1==student2));
//(student1==student2) = false
//调用equals方法,比较的是地址值是不是一样的;this==object ?
System.out.println("(student1.equals(student2)) = "+(student1.equals(student2))); //(student1.equals(student2)) = false
Student stu1=new Student("qw",20,true);
Student stu2=new Student("qw",20,true);
System.out.println("(stu1==stu2) = "+(stu1==stu2));
//(stu1==stu2) = false
System.out.println("(stu1==stu2) = "+(stu1.equals(stu2)));
//(stu1==stu2) = true
Student st1=new Student("张三",18,true);
Student st2=new Student("张三丰",108,true);
try{
Student st3=(Student)st2.clone(); //创建并返回对象的一个副本;深拷贝,新建一个相同内容对象
Student st4=st2; //浅拷贝,只是多了一个链接
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
}
}
|
Java——object类的更多相关文章
- java Object 类
Object o=new Object(); 其中有两个受保护的方法: 1.protected void finalize() 2.protected ...
- Java Object类及其equals方法
基本概念: Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: Object类是所有Java类的祖先.每个类都使用 Object 作为超 ...
- [Java学习] Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: 1 ...
- Java Object类的方法
1. Java中所有的类都直接或者间接地继承自Object类.当没有显式地声名一个类的父类时,它会隐式地继承Object类. 2. Object类中定义了适合于任何Java对象的方法. String ...
- Java Object类的equals()方法
所有类都从Object类中继承了equals方法,Object类中equals方法源代码如下: public boolean equals(Object obj) { retu ...
- Java Object类的toString()方法
Java只要定义一个类,那么它都在继承,没有说明它在继承哪个类的时候,则默认继承java.lang.Object类,也就是说Object类是所有类的父类.看下面一段代码. public class O ...
- 160810、Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...
- 四. Java继承和多态10. Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...
- AJPFX关于Java Object类常用方法小总结
java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...
随机推荐
- 【分布式计算】30分钟概览Spark分布式计算引擎
本文主要帮助初学者快速了解Spark,不会面面俱到,但核心一定点到. Spark是继Hadoop之后的下一代分布式内存计算引擎,于2009年诞生于加州大学伯克利分校AMPLab实验室,现在主要由Dat ...
- 【第二十六章】 hystrix-dashboard + turbine
一.使用turbine的意义 引入多个hystrix stream: 1.使用hystrix-dashboard的可以添加多个stream的功能 图中添加的两个stream会在真正monitor的时候 ...
- HDU 3065 病毒侵袭持续中(AC自动机(每个模式串出现次数))
http://acm.hdu.edu.cn/showproblem.php?pid=3065 题意:求每个模式串出现的次数. 思路: 不难,把模板修改一下即可. #include<iostrea ...
- UVa 12563 劲歌金曲(0-1背包)
https://vjudge.net/problem/UVA-12563 题意: 在一定的时间内连续唱歌,最后一首唱11分钟18秒的劲歌金曲,问最多能长多长时间. 思路: 0-1背包问题,背包容量为t ...
- React Native 组件之TouchableHightLight
TouchableHighlight 这个组件一般是用于封装视图 给视图添加事件“触摸按下”(类似于click事件) <TouchableHighlight onPress={this._onP ...
- python自动制作gif并添加文字
引言 最近租的房子快到期了,哎,因为去年是第一次找房子租,结果遇到了一个东北黑中介,押一付三,房子有啥问题,灯坏了,下水道堵了,原来签合同的时候说的客气,说是马上就会上门解决,结果实际上我每次 ...
- Java中的this
首先this作为关键字其实是随着对象的创建而产生的,当我们调用对象的一个方法的时候: 例如: A a = new A(); a.f(1) 其实我们可以理解为a.f(a,1) 编译器默默的把所操作的对 ...
- Hibernate五大核心接口简介
所有的Hibernate应用中都会访问Hibernate的5个核心接口. Configuration接口:配置Hibernate,根启动Hibernate,创建SessionFactory对象. Se ...
- Linux进程内存布局(翻译)
Anatomy of a Program in Memory 在一个多任务OS中,每个进程都运行在它自己的内存沙箱中.这个沙箱就是虚拟地址空间,在32位下就是一块容量为4GB的内存地址.内核将这些虚拟 ...
- MySQL会创建临时表的几种情况
1.UNION查询: 2.用到TEMPTABLE算法或者是UNION查询中的视图: 3.ORDER BY和GROUP BY的子句不一样时: 4.表连接中,ORDER BY的列不是驱动表中的:(指定了联 ...