目录
概述
Object类
Object类_toString()
代码展示
重写toString()方法前后输出
Object类_equals()
代码展示
重写equals()方法前后输出对比
Arrays类
equals()方法
Binary Search(二分查找)
copyOf()方法
sort()方法
了解sort()方法
进阶
基本数据类型包装类
例一
例二
概述
常用类API
常用类:Java系统中提供的一些使用频率较高的类
API:(Application Programming Interface):应用程序编程接口
Java系统中所提供的一系列类和接口
api文档:官方给广大Java开发者、学习者提供对类和接口功能的说明文档
Object类
object
java.lang.object是Java类体系中的最顶级的类,万类之祖,
Object类_toString()
代码展示
package com.ffyc.javaapi.objectdemo;
public class Person extends Object{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/*
重写父类中toString方法
*/
@Override
public String toString() {
return "Person{" +
"name='" + this.name + '\'' +
", age=" + this.age +
'}';
}
}
toString()
当输出一个对象时,会默认调用类中toString()方法,把对象以字符串形式输出,
类中如果没有toString(),那么会调用父类(Object.toString)
public String toString(){
//Object类中默认输出类的名字和对象在内存中的地址(10进制 转为16进制)
return getClass().getName() + "@" + Integer.toHexString(hashCode())
}
package com.ffyc.javaapi.objectdemo;
public class ToStringDemo {
*/
public static void main(String[] args) {
Person person1 = new Person("三儿",18);
Person person2 = new Person("小舞",100000);
System.out.println(person1);//没有进行对toString方法重写前输出:com.ffyc.javaapi.objectdemo.Person@1b6d3586
System.out.println(person2);
}
}
重写toString()方法前后输出
重写前
重写后
Object类_equals()
代码展示
package com.ffyc.javaapi.objectdemo;
public class Person extends Object{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/*
重写父类中equals方法
*/
@Override
public boolean equals(Object obj) {
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}
public boolean equals(Object obj){
return (this == obj);
}
== 用于基本类型,比较值是否相等
== 用于引用类型比较时,比较的是两个引用的地址是否相等
package com.ffyc.javaapi.objectdemo;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class TestEquals {
public static void main(String[] args) {
int a = 10;
int b = 10;
System.out.println(a==b);
Person person1 = new Person("三儿",18);//凡是new出来的,内存地址肯定不同
Person person2 = new Person("三儿",18);
Person person3 = person2;
System.out.println(person1.equals(person2));
//以后如果比较两个对象的地址是否相等时,直接使用==比较即可
System.out.println(person1==person2);
System.out.println(person3==person2);
//所以其他的类为了比较两个对象中包含的内容是否相等,都对Object中的equals(),进行了重写,改为判断内容是否相等
System.out.println(person1.equals(person2));
//equals()用来比较对象中的内容是否相等
String s1 = new String("aaa");
String s2 = new String("aaa");
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true
}
}
重写equals()方法前后输出对比
重写前
重写后
Arrays类
equals()方法
equals是object类中的方法,只能用于判断引用类型
equals方法默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。
比如String和Integer类中的equals源代码
package com.ffyc.javaapi.arraysdemo;
import java.util.Arrays;
public class ArraysEquals {
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6};//数组也是对象,也是继承Object
int[] b = {1,2,3,4,5,6};
System.out.println(a==b);//false 比较的是两个数组对象的地址
System.out.println(a.equals(b));//false 数组也是对象,也继承了Object类,数组名.equals() 调用的是Object类中的equals
System.out.println(Arrays.equals(a,b)); //true比较的两个数组中的内容是否相等
}
}
Binary Search(二分查找)
package com.ffyc.javaapi.arraysdemo;
import java.util.Arrays;
public class ArraysBinarySearch {
public static void main(String[] args) {
int [] a = {1,2,3,4,5,6,7};
//二分查找算法, 需要数组是有序,如果数组中不包含要找的key,返回负数,找到了返回元素所在的索引位置
int index = Arrays.binarySearch(a,8);
System.out.println(index);
//指定区间的查找 包含开始索引,到结束索引-1.
int index1 = Arrays.binarySearch(a,0,4,5);
System.out.println(index1);
}
}
copyOf()方法
数组复制:
java中的数组在创建时,指定长度,一旦给定长度不能改变
30--->扩容40 new 40
将原数组中的内容复制到一个指定长度的新数组中
package com.ffyc.javaapi.arraysdemo;
import java.util.Arrays;
public class ArraysCopyof {
public static void main(String[] args) {
int [] a = {1,2,3,4,5};
int[] b = Arrays.copyOf(a,10);
System.out.println(Arrays.toString(b));
}
}
sort()方法
了解sort()方法
即对一个数组的所有元素进行排序
而且排序的时候是从小到大
package com.ffyc.javaapi.arraysdemo;
import java.util.Arrays;
public class ArraysSort {
public static void main(String[] args) {
//基本数据类型
int [] a = {5,2,3,4,1,6};
Arrays.sort(a);//对整个数组默认进行升序排序
Arrays.sort(a,0,4);//对指定区间进行升序排序,包含开始位置,不包含结束位置(显示结束位置的上一位)
System.out.println(Arrays.toString(a));
//引用数据类型
String[] s = {"b","a","c","d"};
Arrays.sort(s);
System.out.println(Arrays.toString(s));
}
}
进阶
当存在两种或两种以上数据类型时,通过重写sort()方法进行排序
package com.ffyc.javaapi.arraysdemo;
public class Student implements Comparable<Student>{
private int num;
private String name;
public Student(int num, String name) {
this.num = num;
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"num=" + num +
", name='" + name + '\'' +
'}';
}
/*
此方法用来制定和排序规则
此方法会在sort()进行调用
*/
@Override
public int compareTo(Student o) {
return this.num - o.num;//小于0 等于0 大于0(通过num排序)
//return this.name.compareTo(o.name);(通过name排序)
}
}
package com.ffyc.javaapi.arraysdemo;
import java.util.Arrays;
public class ArraysSort {
public static void main(String[] args) {
Student s1 = new Student(001,"三儿");
Student s2 = new Student(002,"十三");
Student s3 = new Student(003,"洛雪");
Student s4 = new Student(004,"一心");
Student[] students = new Student[4];
students[0] = s2;
students[1] = s1;
students[2] = s4;
students[3] = s3;
Arrays.sort(students);
System.out.println(Arrays.toString(students));
//System.out.println("a".compareTo("b"));字符串比较大小,返回一个int值
}
}
基本数据类型包装类
Java中基本数据类型,由8种关键字设声明的,不是面向对象的设计。
为了对基本类型更加方便的操作,Java为每一种基本类型创建了一个类来进行表示。
核心是类中还是包含了一个基本数据类型,还包含了很多关于基本类型操作的方法。
这样我们使用包装类型,表示一个数据,符合面向对象思想
例一
package com.ffyc.javaapi.datatype;
public class MyInt {
int value;
public MyInt(int value) {
this.value = value;
}
public int maxint(){
return Integer.MAX_VALUE;
}
public int minint(){
return Integer.MIN_VALUE;
}
public static void main(String[] args) {
int a = 10;
MyInt b = new MyInt(10);
System.out.println(b.maxint());
System.out.println(b.minint());
System.out.println(Integer.toBinaryString(3));
}
}
例二
package com.ffyc.javaapi.datatype;
public class IntegerDemo1 {
public static void main(String[] args) {
int x = 10;
Integer a = new Integer(x);
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.SIZE);
System.out.println(Integer.BYTES);
System.out.println(Integer.toBinaryString(333));
}
}