概述

如果要问Java为什么是用起来非常舒服的语言,那很大一部分的功劳就是JavaAPI的。API定义了许多封装好的类和方法供我们使用,来处理特定的问题,所以学习常用的API是非常重要的。

同时,面向对象的核心思想就是用合适的对象去做合适的事情。什么是合适的对象呢?一种是自己根据需要创建的类而生成的对象,另一种是sun官方描述的好多常用的类,我们使用这些类创建的对象,这也就是API的概念。

sun定义的那么多类的终极父类是Objec类。Object描述的是所有类的通用属性与方法。

所以,API的介绍就是从Object类开始的。

Object对象

1. toString方法:返回的是对象的描述信息

当我们直接输出一个对象的时候,这时候就会调用被输出对象的toString方法。代码如下:

class Person{

public String name;

public String sex;

public int age;

public Person(String name,String sex,int age){

this.age = age;

this.name = name;

this.sex = sex;

}

}

public class Demo1 {

public static void main(String[] args){

System.out.println(p);

}

}

代码执行后输出的结果是:java.lang.Object@de6ced

可以看出,直接调用toString方法输出的是:类名@哈希码值的十六进制形式。

对于上述代码,如果给出的需求是这样的:调用输出方法的时候,输出这个对象(Person)姓名、年龄、性别。这个时候又应该如何实现呢?

根据我们之前学的继承,假如父类的指定的功能不能满足要求,那么子类可以复写父类的功能函数。那么该对象再调用toString()方法时,则会调用子类复写的toString方法。

所以为了达到这个目的,需要对Person类的toString方法重写。

//重写toString方法

public String toString(){

return "姓名:" + name + " 性别:" + sex + " 年龄" + age;

}

这个时候,输出的内容就满足我们的需求了。

这里一个重要的编程习惯就是:我们在进行开发时,要对自定义的类重写toString方法,对对象进行详细的描述说明。

2. equals方法:返回的是比较的结果

利用equals方法来比较两个对象,如果相等返回true,否则false,比较的是对象的内存地址值。

public class Demo1 {

public static void main(String[] args){

Person p = new Person("王浩","男",33);

Person p1 = new Person("王浩","男",33);

System.out.println(p.equals(p1));

}

}

还是使用Person这个类,创建的两个对象。根据我们前面学习的知识,比较之后输出的结果肯定是false。因为创建的这两个对象的内存地址不同,所以会产生这样的输出结果。

如果我们将代码这样改写:

public class Demo1 {

public static void main(String[] args){

Person p = new Person("王浩","男",33);

Person p1 = p;

System.out.println(p.equals(p1));

}

}

这时候,输出的结果就是true了。因为此时p和p1指向的是同一块内存地址。

那么,接下来我们有一个需求:将equals比较的条件换成姓名、性别、年龄,如果以上三项相同,则表示相同。根据toString方法的启示,这里当然也要对equals方法进行重写。

class Person{

public String name;

public String sex;

public int age;

public Person(String name,String sex,int age){

this.age = age;

this.name = name;

this.sex = sex;

}

public boolean equals(Object obj){

Person p = null;

//判断obj对象是否属于Person类

if(obj instanceof Person){

//obj对象如果是Person的类,则对obj进行类型转换

p = (Person)obj;

}

if(this.name.equals(p.name)&&this.sex.equals(p.sex)&&this.age==p.age){

return true;

}

return false;

}

}

public class Demo1 {

public static void main(String[] args){

Person p = new Person("王浩","男",33);

Person p1 = new Person("王浩","男",33);

System.out.println(p.equals(p1));

}

}

此时输出的结果就是true了。

注意:代码中的instanceof的作用是判断某个对象是否属于某个类,这个关键字的应用还是相当广范的。

最后,我们要对自定义的类重写equals(),使得比较两个对象的时候比较对象的属性是否相等,而不是内存地址

3. hashCode方法:返回该对象的哈希码值

这个方法采用系统底层的哈希算法实现,同一个对象的呷西码是唯一的,同时,java规定如果两个对象equals返回true,那么这两个对象的hashCode码必须一致。

所以,一旦对equals方法重写,那么一般来讲也要对hashCode方法重写。对于hashCode方法不做过多赘述。

java 常用的api_Java中常用的API(一)——Object相关推荐

  1. java 中常用英语_java中常用英语

    英语|JAVA笔试题常见英语_电子/电路_工程科技_专业资料.Java 笔试题常见英语 What will be the output when you compile and execute the ...

  2. Java输入/输出流体系中常用的流分类

    java输入/输出流体系中常用的流分类 分类 字节输入流 字节输出流 字符输入流 字符输出流 抽象基类 InputStream OutputStream Reader Writer 访问文件 File ...

  3. 复习Java小球游戏代码分享Java面试题MySQL中常用的锁生活【记录一个咸鱼大学生三个月的奋进生活】021

    记录一个咸鱼大学生三个月的奋进生活021 复习Java小球游戏 游戏界面的代码 小球运动线程的代码 运行游戏的代码 运行结果 代码分享 学习Java面试题(MySQL中常用的锁) 照片分享 复习Jav ...

  4. python数据处理常用函数_Python中常用操作字符串的函数与方法总结

    Python中常用操作字符串的函数与方法总结 这篇文章主要介绍了Python中常用操作字符串的函数与方法总结,包括字符串的格式化输出与拼接等基础知识,需要的朋友可以参考下 例如这样一个字符串 Pyth ...

  5. java bitmap jar_Java面试中常用的BitMap代码

    引言 阿里内推面试的时候被考了一道编程题:10亿个范围为1~2048的整数,将其去重并计算数字数目. 我看到这个题目就想起来了<编程珠玑>第一章讲的叫做BitMap的数据结构,但是我并没有 ...

  6. android java包_android SDk中常用的java包介绍

    下面是android SDK中API中的主要java包的功能简介: android.app :提供高层的程序模型.提供基本的运行环境 android.content :包含各种的对设备上的数据进行访问 ...

  7. java栈API_Java中的堆栈API——Stack

    标签: 堆栈(stack)是线性表的一种,只能在该线性表的表尾进行插入.获取或删除的操作.该线性表具有LIFO(后进先出)的特点,那么Java中如何实现这一功能呢,呵呵呵,Java已经为我们提供了AP ...

  8. java pdf库_Java中常用的操作PDF的类库

    iText iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好的给合.使用 ...

  9. java类加密_Java中常用加密类型

    1.对称加密 image.png 密钥:加解密钥相同 缺点:无法确保密钥被安全传递 常用算法:DES.3DES(TripleDES).AES等 2.非对称加密 image.png image.png ...

最新文章

  1. 如何重装Domino服务器或者将Domino服务器从一台机器迁移到另外一台
  2. python3 open函数_python中open函数的基本用法示例
  3. synchronized 原理知多少
  4. ubuntu16.04字体安装
  5. 会声会影x4素材_如何利用会声会影制作抖音短视频
  6. 如何学习才能成为优秀的Web前端开发工程师?
  7. java带参数的构造方法_java练习本(20190603)
  8. keil中L6002U的error原因之一
  9. 2018.10.31 NOIP模拟 一串数字(数论+贪心)
  10. html中放大镜字体图标,CSS3 放大镜应用图标
  11. Word合并所有段落再按字数划分段落
  12. Pytorch中tensor.view().permute().contiguous()函数理解
  13. 无线蓝牙模块在汽车DSP的应用
  14. 10, excel vba 修改单元格的颜色
  15. (保姆级教学)ADS设计高频微波整流电路之二——版图联合仿真
  16. Dorado7框架升级成SSM,并且使用Vue进行前端开发
  17. python抢票代码_如何使用python爬取抢票?
  18. 众摇滚乐人合唱的《礼物》
  19. 记录一次elasticsearch挂掉之后无法启动 kibana Status: Red -分析过程
  20. oracle 11G 11.2.0.4 RAC环境打补丁

热门文章

  1. acl 日志记录方式介绍
  2. PL/SQL Developer连接本地Oracle 11g 64位数据库
  3. java web中中文乱码问题汇总
  4. javabean简述
  5. windows批处理使用记录
  6. cglib中Enhancer的简单使用
  7. 小马儿随笔——实地参观A级数据中心
  8. word 另存为xml后,读取xml的图片数据
  9. 是什么狙杀了ERP实施成功?
  10. 【OpenCv】Cannot parallelize deblocking type 1, decoding such frames in sequential order