JavaAPI 快速入门之第一章 Object类
一:API的基本概念API(Application Programing Interface):应用程序编程接口,是java提供的一些预定义的函数(或者黑匣子)。目的:基于API实现程序的快速编写,在无需了解源码基础之上,即可完成功能开发。Java API通常是一些基础、通用的基础类库,通过这些基础的类库,可以构造复杂的功能。二:如何学习Java API①:针对一个API首先看概述,了解类的作用,
一:API的基本概念
API(Application Programing Interface):应用程序编程接口,是java提供的一些预定义的函数(或者黑匣子)。
目的:基于API实现程序的快速编写,在无需了解源码基础之上,即可完成功能开发。
Java API通常是一些基础、通用的基础类库,通过这些基础的类库,可以构造复杂的功能。
二:如何学习Java API
①:针对一个API首先看概述,了解类的作用,
②:然后看构造函数,
③:了解类的创建方式。
④:最后看方法,了解提供的功能和实现。
三:如何使用Java API文档
- 打开帮助文档
- 点击显示,找到索引,找到输入框
- 在输入框中输入你要查找的类,然后回车
- 看该类的所在包,对于java.lang包下面的类不需要导包,其他都需要
- 看该类的解释说明和类结构
- 学习该类的构造方法和成员方法
四:常见的API
- java.lang 提供利用java编程语言进行程序设计的基础类。(核心类库)不用import可以直接调用。
- java util包含集合框架,遗留的collection类,事件模型,日期和时间设施,国际化和各种实用工具类。
- java io 通过数据流,序列化和文件系统提供系统输入和输出。
- java awt 包含用于创建用户界面和绘制图形图像的所有的类。
- java net 为实现网络应用程序提供的类。**
- java sql 提供使用java 编程语言访问并处理存储在数据源(通常指关系型数据库)中的数据API。
- java beans 包含与开发beans 有关的类,即 基于javaBeans 架构的组件。
- java math 提供用于执行任意精度整数算法(BigInteger)和任意精度小数算法(BigDecimal)的类。
- java applet 提供创建applet 所必须的的类和applet 用来和其他applet 上下文通信的类。
五:javaAPI中的数据类型
先认识JavaBase中的数据类型
- 基本类型:byte short int long float double char boolean
- 引用类型 String、数组、类(自定义类和系统类)、接口
而JavaAPI也对数据类型进行了分类,分类如下
- 值类型-byte short int long float double char boolean
- 引用值类型- String、数组、类(自定义类和系统类)、接口
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中
由此可见,javaBase中的数据类型与javaAPI的数据类型相似
值类型与引用值类型的区别:
1. 值类型相当于现金,通过值类型保存数据直接可以使用
2.引用值类型相当于存折,通过引用类型保存数据,还需要通过特定方式去获取再使用。
六:Object类的使用
①:概念
(1)Object是一个类,处于java.lang包,不需要导包 (2)Object是整个java中所有系统类或者自定义的老祖宗
java中的类直接或间接继承于Object类
(3)Object类中常用的方法
equals方法 比较2个对象是否相同
hascode方法 返回对象的哈希码值-------数字
toString方法 返回该对象中所有的属性值
②:equals方法的使用
引入 == 运算符的使用:
== 恒等于,是一种运算符 实现比较数据的
使用:①可以使用在基本数据类型变量和引用数据类型变量中
②如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
③如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
. 特点 :一般用于比较2个基本类型的是否相等
恒等于也可以作为对象的比较
注意事项:
== 符号使用时,必须保证符号左右两边的变量类型一致。
方法演示:
int a = 10;
int b = 10;
System.out.println(a==b);//true
String s1 = "张三";
String s2 = "李四";
System.out.println(s1 == s2);//false
//特殊现象:String定义值时,会在内存上开辟出一个字符串缓冲池
String s3 = "李四";
System.out.println(s2 == s3);//true
//定义字符串 标准格式
String s4 = new String("张三");
System.out.println(s4);
System.out.println(s1 == s4);//false 因为s4的定义没有去缓冲池寻找,直接通过new新开辟的一个空间
equals()的使用
①是一个方法,而非运算符
②只能适用于引用数据类型
//实例化2只狗 进行比较
Dog dog1 = new Dog();
Dog dog2 = new Dog();
System.out.println(dog1 == dog2);//false
package com.zking.api01.test;
public class Dog {
private String name;
private int age;
public Dog(String name,int age) {
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;
}
}
注意事项:如果是自定义的类定义后,没有做其他事项
使用equals比较这个类是否相同 默认比较的是地址。
想让equals比较2个对象是否相同 请在指定的自定义类中“重写”这个方法
可以自定义规则 判断2个对象是否相同。
System.out.println(dog1.equals(dog2));//false
Dog dog1 = new Dog("旺财", 10);
Dog dog2 = new Dog("来福", 11);
System.out.println(dog1 == dog2);//false
System.out.println(dog1.equals(dog2));//false
比较对象的内容 ---必须重写equals方法,在该方法中自定义规则进行比较
自己定义一个规则 只要比较2个对象的姓名是否相同 如果相同 说明2个对象是一样即可
Dog dog3 = new Dog("旺财",20);
System.out.println(dog3.equals(dog1));//true
/**
* 重写equals方法
*/
/*
@Override
public boolean equals(Object obj) {
//自己定义规则
//只要姓名一样 说明对象一样
//1.判断参数obj是否属于当前类对象
if(obj instanceof Dog) {
//将obj转成当前类对象Dog
Dog sb = (Dog)obj;
//2.判断obj的属性name与当前类this属性name是否一致
//这里的字符串属性为什么可以直接调用equals方法进行内容比较
//因为String类已经重写equals方法中所有的规则。
if(sb.getName().equals(this.getName())) {
System.out.println("自己定义了规则 只要姓名相同 对象就相同");
return true;
}else {
System.out.println("自己定义了规则 姓名不相等 对象就不相同");
return false;
}
}else {
System.out.println("传递的对象不一致,无法比较。直接false返回");
return false;
}
}
//优化equals方法
@Override
public boolean equals(Object obj) {
//1.定义一个布尔类型来控制是否相同
boolean flag = false;
//2.判断obj是否属于当前类对象
if(obj instanceof Dog) {
//3.强转成当前类对象
Dog sb = (Dog)obj;
//4.判断当前传递的对象的某个属性与当前类的某个属性是否相同
if(sb.getName().equals(this.getName())) {
flag = true;
}
}
return flag;
}
注意事项:
1. Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
2.像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是 两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。
3.通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写.
4.重写的原则:比较两个对象的实体内容是否相同.
hascode方法
- 返回对象的哈希码值-------数字
package com.zking.api01.test;
public class HashCodeTest {
public static void main(String[] args) {
//实例化Dog
Dog dog = new Dog("旺财",10);
//2018699554 该值是通过哈希算法算出来的
System.out.println(dog.hashCode());
//7852e922 地址
System.out.println(Integer.toHexString(dog.hashCode()));
}
}
public String myMethod() {
return this.getClass().getName()+"@"+Integer.toHexString(this.hashCode());
}
toString方法
- 返回该对象中所有的属性值
package com.zking.api01.test;
public class ToStringTest {
public static void main(String[] args) {
// toString:属于Object类
// 作用:返回该对象的字符串表现形式.(类名+@+hashcode的16进制结果)
Dog dog = new Dog("旺财",10);
System.out.println(dog.toString());
System.out.println(dog.myMethod());
// 可以通过重写的方式将toString进行重写,然后自定规则将该对象的所有属性拼接输出
//注意:如果自定义类中重写了toString方法,那么在打印对象的所有属性时,toString方法可以省略
System.out.println(dog);
}
}
@Override
public String toString() {
return this.name+"\t"+this.age;
}
更多推荐



所有评论(0)