目录
一、Java API概述
API(Application Programming Interface)应用程序编程接口
是对java预先定义的类或接口功能和函数功能的说明文档,
目的是提供 给开发人员进行使用帮助说明.
本章会学习java提供的一些基础常用类,以便后期学习需要.
后面的章节以具体模块化学习为主,本质就是学习java中提供的类的功能
二、Object
java.lang.Object 是java类体系中的最顶级的,万类之组。
1.toString方法
toString()
当输出一个对象时,上默认调用类中toString()方法,把对象以字符申形式输出,
类中如果没有toString(),那么会调用父类(Object)中的toString();
public String toString() {
object类中的默认输出类的名字和对象在内存中地址(10进制 转为16进行)
return getClass().getName() + "@"+ Integer.toHexString(hashCode());
}
public class ToStringDemo {
public static void main(String[] args) {
Person p1 = new Person("张三", 18);
String s=p1.toString();
System.out.println(p1.toString());
System.out.println(s);
System.out.println(p1);
}
}
2.equal方法
public boolean equals(Object obj) { return (this == obj); } == 用于基本类型比较时,比较的是值是否相等 == 用于引用类型比较时,比较的是两个引用的地址是否相等
以后如果比较两个对象的地址是否相等时,直接使用=比较即可
所以其他的类为了比较两个对象中包含的内容是否相等,都对Object中的equals(),进行了重写,改为判断内容是否相等
equals()用来比较对象中的内容是否相等
public class TestEquals {
public static void main(String[] args) {
int a = 10;
int b = 10;
System.out.println(a == b);
Person p1 = new Person("张三1", 18);
Person p2 = new Person("张三1", 18);
System.out.println(p1.equals(p2));//凡是new出来的,内存地址肯定不同
System.out.println(p1 == p2);
System.out.println(p1.equals(p2));
String s = new String("abc");
String s1 = new String("abc");
System.out.println(s == s1);//false
System.out.println(s1.equals(s));//true
}
}
public class Person extends Object {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/*
重写父类中toString()方法
*/
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (obj instanceof Person) {
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age;
}
return false;
}
}
三、Arrays
1.equals 方法
import java.util.Arrays;
public class ArraysEqualsDemo {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5, 6};
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比较的两个数组中的内容是否相等
}
}
2.sort方法
public class Student implements Comparable<Student> {
private int num;
private String name;
public Student(int num, String name) {
this.num = num;
this.name = name;
}
/*
此方法是用来指定排序规则
此方法公在sortO进行调用
*/
@Override
public int compareTo(Student o) {
return this.num - o.num;
// return this.name .compareTo(o.name) ;
}
@Override
public String toString() {
return "Student{" +
"num=" + num +
", name='" + name + '\'' +
'}';
}
}
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));
Student s1 = new Student(101, "张三1");
Student s2 = new Student(102, "张三2");
Student s3 = new Student(103,"张三3");
Student s4 = new Student(104,"张三4");
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("c".compareTo("a"));
}
}
3.binarySearch
binarySearch -使用二分搜索算法搜索指定数组
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, 2);
System.out.println(index);
//在给定范围内查找
int index1 = Arrays.binarySearch(a, 0, 4, 5);
System.out.println(index1);
}
}
4. copyOf方法
数组复制: java中的数组在创建时,指定长度,一旦给定长度不能改变 30--->扩容40 new 40 将原数组中的内容复制到一个指定长度的新数组中
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));
}
}
四、基本数据类型包装类
java中的基本数据类型,由8种关键字声明的,不是面向对象的设计. 为了对基本类型更加方便的操作,java为每一种基本类型创建了一个类来进行表示 核心是类中还是包含了一个基本数据类型,还包含了很多关于基本类型操作的方法 这样我们使用包装类型,表示一个数据,符合面向对象思想
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(a);
}
}
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);
}
}