java 常用的api_Java中常用的API(一)——Object
概述
如果要问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相关推荐
- java 中常用英语_java中常用英语
英语|JAVA笔试题常见英语_电子/电路_工程科技_专业资料.Java 笔试题常见英语 What will be the output when you compile and execute the ...
- Java输入/输出流体系中常用的流分类
java输入/输出流体系中常用的流分类 分类 字节输入流 字节输出流 字符输入流 字符输出流 抽象基类 InputStream OutputStream Reader Writer 访问文件 File ...
- 复习Java小球游戏代码分享Java面试题MySQL中常用的锁生活【记录一个咸鱼大学生三个月的奋进生活】021
记录一个咸鱼大学生三个月的奋进生活021 复习Java小球游戏 游戏界面的代码 小球运动线程的代码 运行游戏的代码 运行结果 代码分享 学习Java面试题(MySQL中常用的锁) 照片分享 复习Jav ...
- python数据处理常用函数_Python中常用操作字符串的函数与方法总结
Python中常用操作字符串的函数与方法总结 这篇文章主要介绍了Python中常用操作字符串的函数与方法总结,包括字符串的格式化输出与拼接等基础知识,需要的朋友可以参考下 例如这样一个字符串 Pyth ...
- java bitmap jar_Java面试中常用的BitMap代码
引言 阿里内推面试的时候被考了一道编程题:10亿个范围为1~2048的整数,将其去重并计算数字数目. 我看到这个题目就想起来了<编程珠玑>第一章讲的叫做BitMap的数据结构,但是我并没有 ...
- android java包_android SDk中常用的java包介绍
下面是android SDK中API中的主要java包的功能简介: android.app :提供高层的程序模型.提供基本的运行环境 android.content :包含各种的对设备上的数据进行访问 ...
- java栈API_Java中的堆栈API——Stack
标签: 堆栈(stack)是线性表的一种,只能在该线性表的表尾进行插入.获取或删除的操作.该线性表具有LIFO(后进先出)的特点,那么Java中如何实现这一功能呢,呵呵呵,Java已经为我们提供了AP ...
- java pdf库_Java中常用的操作PDF的类库
iText iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好的给合.使用 ...
- java类加密_Java中常用加密类型
1.对称加密 image.png 密钥:加解密钥相同 缺点:无法确保密钥被安全传递 常用算法:DES.3DES(TripleDES).AES等 2.非对称加密 image.png image.png ...
最新文章
- 如何重装Domino服务器或者将Domino服务器从一台机器迁移到另外一台
- python3 open函数_python中open函数的基本用法示例
- synchronized 原理知多少
- ubuntu16.04字体安装
- 会声会影x4素材_如何利用会声会影制作抖音短视频
- 如何学习才能成为优秀的Web前端开发工程师?
- java带参数的构造方法_java练习本(20190603)
- keil中L6002U的error原因之一
- 2018.10.31 NOIP模拟 一串数字(数论+贪心)
- html中放大镜字体图标,CSS3 放大镜应用图标
- Word合并所有段落再按字数划分段落
- Pytorch中tensor.view().permute().contiguous()函数理解
- 无线蓝牙模块在汽车DSP的应用
- 10, excel vba 修改单元格的颜色
- (保姆级教学)ADS设计高频微波整流电路之二——版图联合仿真
- Dorado7框架升级成SSM,并且使用Vue进行前端开发
- python抢票代码_如何使用python爬取抢票?
- 众摇滚乐人合唱的《礼物》
- 记录一次elasticsearch挂掉之后无法启动 kibana Status: Red -分析过程
- oracle 11G 11.2.0.4 RAC环境打补丁