一:API的基本概念

              API(Application Programing Interface):应用程序编程接口,是java提供的一些预定义的函数(或者黑匣子)。

             目的:基于API实现程序的快速编写,在无需了解源码基础之上,即可完成功能开发。

             Java API通常是一些基础、通用的基础类库,通过这些基础的类库,可以构造复杂的功能。

二:如何学习Java API

①:针对一个API首先看概述,了解类的作用,

②:然后看构造函数,

③:了解类的创建方式。

④:最后看方法,了解提供的功能和实现。

三:如何使用Java API文档

  • 打开帮助文档
  • 点击显示,找到索引,找到输入框
  •  在输入框中输入你要查找的类,然后回车
  • 看该类的所在包,对于java.lang包下面的类不需要导包,其他都需要
  • 看该类的解释说明和类结构
  • 学习该类的构造方法和成员方法

四:常见的API

  1. java.lang  提供利用java编程语言进行程序设计的基础类。(核心类库)不用import可以直接调用。
  2. java  util包含集合框架,遗留的collection类,事件模型,日期和时间设施,国际化和各种实用工具类。
  3. java io 通过数据流,序列化和文件系统提供系统输入和输出。
  4. java awt 包含用于创建用户界面和绘制图形图像的所有的类。
  5. java net 为实现网络应用程序提供的类。**
  6. java sql  提供使用java 编程语言访问并处理存储在数据源(通常指关系型数据库)中的数据API。
  7. java beans  包含与开发beans 有关的类,即 基于javaBeans 架构的组件。
  8.  java math 提供用于执行任意精度整数算法(BigInteger)和任意精度小数算法(BigDecimal)的类。
  9. 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;
	}

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐