java - API_常用类
1.概述
API应用程序编程接口
API文档:是对java预先定义的类或接口功能和方法功能的说明文档,目的是提供给开发人员进行使用帮助说明
2.基本数据类型包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类.
包装类(如:Integer,Double等)这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作。
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
对于包装类说,这些类的用途主要包含两种:
1.作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
2.包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法
包装类常见方法
以下方法以java.lang.Integer为例
public static final int MAX_VALUE 最大的int型数(231-1)
public static final int MIN_VALUE 最小的int型数(-231)
public int intValue() 返回封装数据的int型值
public static int parseInt(String s)将字符串解析成int型数据,返回该数据
public static Integer valueOf(String s)返回Integer对象,其中封装的整型数据为字符串s所表示。
public String toString()返回一个表示该 Integer 值的 String 对象。
public static String toString(int i)返回一个表示指定整数的 String 对象
装箱和拆箱Auto-boxing/unboxing
1.装箱
自动将基本数据类型转换为包装器类型
装箱的时候自动调用的是Integer的valueOf(int)方法
2.拆箱
自动将包装器类型转换为基本数据类型
拆箱的时候自动调用的是Integer的intValue方法
3.Object类
Object类是所有java类的祖先(根基类).每个类都使用Object作为超类(父类).所有对象(包括数组)都实现这个类的方法.
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
public class Person{…}
等价于:
public class Person extends Object{…}
3.1.toString方法
Object类中定义有public String toString()方法,其返回值是String类型,描述当前对象的有关信息.
在进行String与其他类型数据的连接操作时(如:System.out.println(“info”+person)),将自动调用该对象类的toString()方法
可以根据需要在用户自定义类型中重写toString()方法.
3.2equal方法
Object类中定义有:
public boolean equals(Object obj)方法
提供定义对象是否"相等"的逻辑.
Object的equals方法定义为:x.equals(y),当x和y是同一个对象的引用时返回true否则返回false
JDK提供的一些类,如String,Date等,重写了Object的equals方法,调用这些类的equals方法,x.equals(y),当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回true否则返回false.
import java.util.Arrays;
public class ObjectDemo extends Object{
public static void main(String[] args) {
ObjectDemo obj = new ObjectDemo();
int[] a = new int[5];//数组也是继承了Object
a.hashCode();
Person p = new Person("jim",18);
System.out.println(p);
System.out.println("info==="+p);
String s1 = new String("abc");
String s2 = new String("abc");
// == 基本类型比较的就是具体的值
// == 再对引用类型进行比较时,比较的是引用的对象地址是否相同
System.out.println(s1==s2);
//一般类都重写Object类中equals(), 他们有自己的实现方式,比较的是对象中包含的内容(具体值)是否相等
System.out.println(s1.equals(s2));
}
}
package com.ff.javaapi.day1;
public class Person extends Object{
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
//对toString方法的重写
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
4.Arrays类
java.util.Arrays类
用于操作数组工具类,里面定义了常见操作数组的静态方法。
4.1equals 方法
比较两个非同一数组是否相等,而数组本身的equals判断另一个数组是否它本身。
声明:public static boolean equals(type[]a,type[]a2)
参数的类型可以是原生数据类型和引用类型的任意一种类型。
返回:如果两个相等,则返回true,否则返回false
4.2sort-排序
-
sort()函数的基本格式(默认排序为升序排序)
**Arrays.sort(int[] a, int fromIndex, int toIndex);**Arrays.sort(数组名,起始下标,终止下标);
例如
import java.util.Arrays; import java.util.Scanner; import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc= new Scanner(System.in); int n=sc.nextInt(); int[] a= new int[10001]; for(int i=0;i<n;i++){ a[i]=sc.nextInt(); } Arrays.sort(a,0,n); for(int i=0;i<n;i++){ if(i==n-1){ System.out.println(a[i]); } else{ System.out.print(a[i]+" "); } } } }
-
如果一个数组初始化时已经赋值。则sort函数可以另外一种格式
Arrays.sort(数组名);
例如
import java.util.*; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int num[]= { 5,4,3,2,1}; Arrays.sort(num); for(int i=0;i<5;i++) { System.out.println(num[i]); } } }
-
自定义排序
sort(List list, Comparator c):根据指定比较器产生的顺序对指定列表进行排序,也就是自定义排序,第一个参数是传入的要排序的列表,第二个参数是指定的比较器。
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,
则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序
则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)例如----输入n个数,然后降序排序。
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; class shu{ int x; } class cmp implements Comparator<shu>{ public int compare(shu a,shu b){ if(a.x<b.x){ return 1; } else if(a.x>b.x){ return -1; } else{ return 0; } //可以简化成 //return b.x-a.x } } public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); shu num[] = new shu[100]; for(int i=0;i<n;i