Java基础_API

Day_13 API应用

一.API
1.定义:Application Programming Interface,即应用编程接口,一切可调用的东西都是API。
2.例如:
Java.lang包,这个包会自动导入。
java.lang.Object,
java.lang.String,java.lang.StringBuilder/StringBuffer,
正则表达式,包装类等。

二.Object
1.定义:所有对象的顶级父类,存在于java.lang包中,这个包不需要手动导包。
2.常用方法:
<1>boolean equals(Object obj),指示其它某个对象是否与此对象相等。
<2>protected void finalize(),当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
<3>int hashCode(),返回该对象的哈希码值日。
<4>String toString(),返回该对象的字符串表示。

三.toString简单案例

public class ToString {
    
    

	public static void main(String[] args) {
    
    
		
		Person p = new Person("熊大",20,10,"森林");
		
		System.out.println(p);
		
		System.out.println(p);

	}

}

class Person{
    
    

	private String name;
	private int age;
	private double salary;
	private String address;
	
	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;
	}

	public double getSalary() {
    
    
		return salary;
	}

	public void setSalary(double salary) {
    
    
		this.salary = salary;
	}

	public String getAddress() {
    
    
		return address;
	}

	public void setAddress(String address) {
    
    
		this.address = address;
	}

	public Person() {
    
    }
	
	public Person(String name,int age,double salary,String address)
	{
    
    
		
		this.name = name;
		this.age = age;
		this.salary = salary;
		this.address = address;
				
	}

	@Override
	public String toString() {
    
    
		return "Person [name=" + name + ", age=" + age + ", salary=" + salary + ", address=" + address + "]";
	}
	
}

四.equals简单案例

public class Equals {
    
    

	public static void main(String[] args) {
    
    
		
		//基础类型是按值比较。
		int i1 = 10;
		int i2 = 10;
		int i3 = 12;
		System.out.println(i1==i2);//True。
		System.out.println(i1==i3);//False。
		System.out.println();
		
		//对象为引用类型,引用类型按照内存地址比较。
		Tiger t1 = new Tiger();
		Tiger t2 = new Tiger();
		Tiger t3 = t1;
		
		System.out.println(t1);//直接输出对象会输入一串地址。
		System.out.println(t2);
		System.out.println(t3);
		System.out.println();
		
		System.out.println(t1.equals(t2));//False。
		System.out.println(t1==t2);//False。
		System.out.println();
		
		System.out.println(t1.equals(t3));//True。
		System.out.println(t1==t3);//True。

	}

}

class Tiger{
    
    
	
	
}

五.Hashcode简单案例

public class HashCode {
    
    

	public static void main(String[] args) {
    
    
		
		//比较八大基本类型时,判断的是值。
		int a = 1;
		int b = 1;
		
		System.out.println(a==b);//True
		System.out.println();
		
		//比较对象时,比较的是对象的地址。
		Integer x = 5;
		Integer y = 10;
		Integer z = x;//把x的地址赋给了z。
		
		System.out.println(x==y);
		System.out.println(x==z);
		System.out.println();
		
		System.out.println(x.equals(z));
		System.out.println();
		
		//测试hashCode()哈希值。
		System.out.println(x.hashCode());
		System.out.println(y.hashCode());
		System.out.println(z.hashCode());

	}

}

六.创建String对象

public class String_Create {
    
    

	public static void main(String[] args) {
    
    
		
		//方式1:new String(char [])
		char [] c = {
    
    'a','b','c','d'};
		String s = new String(c);
		System.out.println(s);
		System.out.println();
		
		//方式1:直接创建
		String s2 = "abcd";//常量池中分配新的内存。
		System.out.println(s2);
		System.out.println(s==s2);//地址不同。
		System.out.println(s.equals(s2));
		
		String s3 = "abcd";//访问常量池中已经存在的对象。
		System.out.println(s2==s3);//地址相同。

	}

}

七.String常用方法案例

import java.util.Arrays;

public class String_Method {
    
    

	public static void main(String[] args) {
    
    
		
		String s = "abcdefg";
		
		System.out.println(s.charAt(3));//返回指定索引处的char值。
		
		System.out.println(s.endsWith("fg"));//判断是否以指定后缀结束。
		
		String s1 = "abc";
		System.out.println(s.equals(s1));//判断两个字符串的内容是否相同。
		System.out.println(s.length());//查看长度。
		
		String s2 = "1,2,3,4,5";
		String [] strs = s2.split(",");//根据指定的符号切割字符串。
		System.out.println(Arrays.toString(strs));//查看数组元素。
		System.out.println(s2.startsWith("1,"));//True
		
		System.out.println(s.substring(3,7));//截取数组含头不含尾。
		
		System.out.println(String.valueOf(10));//把整数10转化为字符串形式。

	}

}

八.StringBuilder/StringBuffer
1.特点:
<1>封装了char[]数组。
<2>是可变的字符序列。
<3>提供了一组可以对字符内容修改的方法。
<4>常用append()来代替字符串做字符串连接。
<5>内部字符数组默认初始容量16:initial capacity of 16 characters。
<6>如果大于16会尝试扩容,新数组大小变为原来的两倍+2,如果还不够,直接扩充到需要的容量大小。Int newCapacity = value.length*2 + 2;
<7>StringBuffer1.0出道线程安全,StringBuilder1.5出道线程不安全。

九.StringBuilder和StringBuffer的区别
1.在线程安全上,Buffer由旧版本提供,线程是安全的。Builder是jdk1.5之后产生的,线程不安全。

2.在执行效率上,StringBuilder第一,StringBuffer第二,String第三。

3.源码体现:本质上都是在调用父类抽象类AbstractStringBuilder来干活,只不过Buffer把代码加了同步关键字,使得程序可以保证线程安全问题。

十.包装类
包装类与基本类型的对应关系:byte-Byte,short-Short,int-Integer,long-Long,float-Float,double-Double,char-Character,boolean-Boolean。

十一.自动装箱和自动拆箱
1.自动装箱:把基本类型包装成一包装类的对象。Integer a = 5;a是引用类型,引用了包装对象的地址。编译器会完成对象的自动装箱:Integer a = IntegervalueOf(5)。

2.自动拆箱:从包装对象中,自动取出基本类型值。int i = a;a是包装类型,没法给变量赋值,需要把5取出来。编译器会自动完成拆箱:int i = a.intValue();。

猜你喜欢

转载自blog.csdn.net/weixin_41858806/article/details/111997629