今天学习新的模块,学习API的相关知识。
- Java API概述
- 基本数据类型包装类
- Object
- Arrays类
- String类
Java API概述
API(Application Programming Interface)应用程序编程接口
是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供,给开发人员进行使用帮助说明。
大家可以到JAVA官网下载或在线阅读API。
基本数据类型包装类
基本数据类型有:byte,short,int,long,float,double,char,boolean。
我们使用的基本数据类型很简单,但不利于我们面向对象的编程,为了解决这个问题,在设计时为每个数据类型设计了一个对应的代表。
java为这些基本数据类型提供了包装类,在类中包含着基本数据类型成员变量。
例如int类型的包装类是Integer:
public class Demo1 {
public static void main(String[] args) {
Integer a=new Integer(10);
int b=20;
Integer c=new Integer(30);
a.compareTo(b);
a.compareTo(c);
System.out.println(c.byteValue());
System.out.println(c.doubleValue());
System.out.println(c.equals(20));
System.out.println(c.floatValue());
System.out.println(Integer.toHexString(20));
System.out.println(Integer.toBinaryString(99));
System.out.println(Integer.hashCode(60));
System.out.println(Integer.toOctalString(30));
}
}
装箱和拆箱
装箱:将基本数据类型转换为包装类。使用Integer和valueOf(int)等方法。 拆箱:将包装类拆分为基本数据类型。使用是Integer的intValue等方法。
装箱和拆箱还可以分为自动装箱和自动拆箱。
//装箱
Integer i=Integer.valueOf(128);
//拆箱
int ii=i.intValue();
//自动装箱
Integer a=128; //Integer a=Integer.valueof(128);
Integer aa=128;
System.out.println(a==aa);
System.out.println(a.equals(aa));
System.out.println(Integer.parseInt("40"));//将字符串类型转换为int类型,但如果字符串里有字母会报错
System.out.println(Integer.valueOf("25"));
System.out.println(Integer.valueOf(25));
System.out.println();
//自动拆箱
Integer c=20;
int cc=c;
System.out.println(cc);
System.out.println(c.intValue());
System.out.println();
Object类
Object是所有类的父类,是类的根基,在我们编写的没个类中,
都默认继承了Object类。
public class Demo1 {
}
public class Demo1 extends Object{
}
//这两是相同的
下面学习Object类中的相关方法。
toString方法
当我们要对对象进行输出时,java会默认调用类中的toString方法,以字符串形式输出。
equals方法
但我们要对对象定义的是否相等进行判定时,可以使用equals方法。
要注意的是,== 引用类型比较,比较对象地址是否相等,而equals()比较的是对象中的内容是否相等。
下面是上述两种方法的代码体现。
public class ObjectDemo2 extends Object {
public static void main(String[] args) {
Car c = new Car("奥迪", 73000);
Car c1 = new Car("奥迪", 73000);
public boolean equals(Object obj) {
return (this == obj);
}
System.out.println(c.equals(c1));
System.out.println(c==c1);//false
Integer i = new Integer(10);
Integer ii = new Integer(10);
System.out.println(i.equals(ii));//true
}
}
public class Car extends Object{
private String name;
private int price;
public Car(String name, int price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Car){
Car otherCar = (Car)obj;
return this.name.equals(otherCar.name) && this.price==otherCar.price;
}
return false;
}
}
Arrays类
Arrays类是用于操作数组工具类,里面定义了常见操作数组的静态方法。
equals 方法
equals方法用来比较两个非同一数组是否相等,而数组本身的equals判断另一个数组是否它本身。如果两个相等,则返回true,否则返回false,参数的类型可以是原生数据类型和引用类型的任意一种类型。
sort -排序
toString() 方法
import java.util.Arrays;
public class Demo4 extends Animal {
public Demo4(int no, String name) {
super(no, name);
}
public static void main(String[] args) {
int []no={1,2,3,4,5};
String []name={"小狗","小象","小熊","小猫","小虎"};
int []a={1,3,5,2,4};
//Arrays.sort(a);
Arrays.sort(a,2,a.length);
System.out.println(Arrays.toString(a));
Arrays.sort(name);
System.out.println(Arrays.toString(name));
Animal animal1=new Animal(1,"小狗");
Animal animal2=new Animal(2,"小象");
Animal animal3=new Animal(3,"小熊");
Animal animal4=new Animal(4,"小猫");
Animal animal5=new Animal(5,"小虎");
Animal []animal=new Animal[5];
animal[1]=animal1;
animal[3]=animal2;
animal[2]=animal3;
animal[0]=animal4;
animal[4]=animal5;
Arrays.sort(animal);
System.out.println(Arrays.toString(animal));
}
}
public class Animal implements Comparable<Animal>{
int no;
String name;
public Animal(int no, String name) {
this.no = no;
this.name = name;
}
@Override
public String toString() {
return "Animal{" +
"no=" + no +
", name='" + name + '\'' +
'}';
}
@Override
public int compareTo(Animal o) {
return this.no-o.no;
}
}
import java.util.Arrays;
public class Demo5 {
public static void main(String[] args) {
int a[]={1,2,3,4,5,6,7,8};
System.out.println(Arrays.binarySearch(a,4));//折半查找,注意,数组需要有序数组
int []b=Arrays.copyOf(a,10);//数组扩容
System.out.println(Arrays.toString(b));
}
}
String类
在java中,所有的字符串都可以视为String类的实例,而字符串是由多个字符组成的一串数据。
当一个String对象被创建且定义后就不能改变,底层是使用char数组存储。
String字符串有两种创建方式:显示创建和隐式创建。
当使用new时,即显式创建,会在堆中创建对象,而隐式创建这是将创建的字符串直接在字符串常量池中存储,如果数值相同,就直接返回字符串常量池中的对象地址。
//隐式创建
String s1 = "sidhhsid";
//显式创建
String s2 = new String("sdsdj");
构造方法
public String()
public String(String str)
public String(byte[] bytes)
public String(char[] value)
判断功能
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean contains(String str)
boolean isEmpty()
boolean startsWith(String prefix)
boolean endsWith(String suffix)
获取功能
int length()
char charAt(int index)
int indexOf(String str)
int indexOf(String str,int fromIndex)
String substring(int start)
String substring(int start,int end)
public static void main(String[] args) {
/*
int length()
char charAt(int index)
int indexOf(String str)
int indexOf(String str,int fromIndex)
String substring(int start)
String substring(int start,int end)
*/
String s = "abcdefgc";
//01234567
System.out.println(s.length());//返回字符串长度
System.out.println(s.charAt(3));//返回指定位置上的字符
System.out.println(s.indexOf("c"));//获取指定字符首次出现的位置 从前向后
System.out.println(s.indexOf("c",s.indexOf("c")+1));//从指定位置开始找的
System.out.println(s.lastIndexOf("c"));//从后向前找
System.out.println(s.substring(2));//从指定的位置开始截取一个新的子串到结尾
System.out.println(s.substring(2,6));//从指定的位置开始截取一个到指定位置新的子串
System.out.println( StringUtil.subFileType("hello.java"));
}
}
转换功能
byte[] getBytes()
char[] toCharArray()
static String valueOf(char[] chs)
String toLowerCase()
String toUpperCase()
String concat(String str)
Stirng[] split(分割符)
下面是一些发放的体现代码:
String s1 = new String("abcd");
String s2 = new String("abcdefg");
System.out.println(s1.equals(s2));//比较字符串内容是否相等
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));//比较时忽略大小写
System.out.println(s2.contains("ab"));//是否包含指定的子串
String s3 = "";
System.out.println(s3.isEmpty());//判断是否为空
System.out.println(s2.startsWith("ab"));//判断以ac开头(子串)
System.out.println(s2.endsWith("fg"));//判断以ac结尾(子串)