Java 进阶学习笔记day_03 —— 常用Api

  • Post author:
  • Post category:java




构造代码块


格式:


	public class Show(){

	{
		// 要执行的代码
		System.out.println("构造代码块");
	}
	
	public Show(){
	
		// 空参构造
		System.out.println("空参构造");
	}
}


	public class Text{
		public static void main(){
			new Show(); 
			// 输出 构造代码块
			//     空参构造
			
		}
	}

每次调用构造方法时,都会执行一次,优先于构造方法执行



静态代码块_

	public class Show(){
	
		static {
			// 要执行的代码
			System.out.println("静态代码块");
		}
		
		public Show(){
		
			// 空参构造
			System.out.println("空参构造");
		}
	}
	
	
		public class Text{
			public static void main(){
				new Show(); 
				// 输出 静态代码块
				//     空参构造
				
			}
		}

随着类的加载而执行,并且只执行一次



常用API_



Object类_


  • java.lang.Object类是java语言的根类,所有java类的父类
  • 在java中所有的类都是直接或者间接继承Object类 (同样也继承了Object类的方法)


Object类中的两个常用方法:


  • String toString()

    返回该对象的字符串表示

  • public boolean equals(Object obj)

    比较两个对象的地址是否相等

由于toString() 和 equals() 方法不能满足比打印出对象属性的值和比较两个对象的属性是否相等,所以就需要重写方法

	// 重写ToString 方法
	public class Person {
    String name;
    int age;

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

    public Person() {
    }

    // alt+inset--->toString

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

	// 重写equals 方法
	@Override
    public boolean equals(Object o) {
        // 如果2个对象的地址值相对,直接返回true结束方法
        if (this == o) return true;

        // 如果参数为null或者2个对象的类不一致,就直接返回false结束方法
        if (o == null || getClass() != o.getClass()) return false;
        // 向下转型
        Person person = (Person) o;
        // 比较所有属性
        return age == person.age &&
                Objects.equals(name, person.name);
    }



Objects类_




java.util.Objects


public static boolean equals(Object a, Object b)

判断两个对象是否相等


	public static boolean equals(Object a, Object b) {  
    return (a == b) || (a != null && a.equals(b));  
}



Date类_


java.util.Date

类 用来表示从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数

0时区标准基准时间:

1970年1月1日00:00:00


东八区标准基准时间:

1970年1月1日08:00:00

  • Date类中的构造方法


public Date Date();

当前系统时间对应的日期对象


public Date Date(long mills);

距离标准基准时间 指定偏移毫秒数 对应的日期对象

		
	import java.util.Date;
	public class Text {
	    public static void main(String[] args) {
	    	// 获取当前系统时间
	        System.out.println(new Date());
	        // 获取距离标准基准时间1天的时期对象 
	        System.out.println(new Date(1000 * 60 * 60 * 24)); // 输出 Fri Jan 02 08:00:00 CST 1970
    }
}
  • Date类中的常用方法


public long getTime();获取当前日期对象距离标准基准时间的毫秒值



public boolean after(Date when) 判断此日期是否在指定日期之后



public boolean before(Date when) 判断此日期是否在指定日期之前


	import java.util.Date;

	public class Text {
	    public static void main(String[] args) {
	    	// 获取当前日期对象距离标准基准时间的毫秒值
	        System.out.println(new Date().getTime());
    }
}
	import java.util.Date;
	
	public class Text {
	    public static void main(String[] args) {
	    	// 判断两个时期对象时间的前后
	        System.out.println(new Date(1000 * 60 * 60 * 24).after(new Date())); // 输出 false
	        System.out.println(new Date(1000 * 60 * 60 * 24).before(new Date())); // 输出 true
	    }
}



DateFormat


  • java.text.DateFormat

    类 该类可以使得在Date对象与String对象之间进行来回转换

格式化 – 按照指定的格式,把Date对象转换为String对象

解析 – 按照指定的格式,把String对象转换为Date对象

由于DateFormat是一个

抽象类

,无法创建对象,应该使用其子类来实现Date和String之间的转换



SimpleDateFormat类_

  • 构造方法:


    public SimpleDateFormat(String pattern):传入日期指定格式,创建SimpleDateFormat对象.

	import java.text.SimpleDateFormat;

	public class Test {
	    public static void main(String[] args) {
	    	// 设置日期格式
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	    }
}
  • DateFormat类中的常用方法


public String format(Date date):将Date对象格式化为字符串。



public Date parse(String source):将字符串解析为Date对象


	import java.text.ParseException;
	import java.text.SimpleDateFormat;
	
	
	public class Test {
	    public static void main(String[] args) throws ParseException {
	
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	
			// 输入的格式要和指定的格式相同
	        String date = "1999-1-1";
	
	        System.out.println(sdf.parse(date)); // 输出 Mon Nov 30 00:00:00 CST 1999
			// 按指定的格式对时期格式进行字符串转化
	        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
			// 输出 2022年03月19日 15时29分02秒
	        System.out.println(sdf2.format(new Date()));
	    }
}



Calendar类_


  • java.util.Calendar

    类表示一个“日历类”,可以进行日期运算
  • 通过Calendar类的静态方法getInstance()来获取日历对象

	import java.util.Calendar;

	public class Text {
	    public static void main(String[] args)  {
	    	// 获取到日历对象
	        System.out.println(Calendar.getInstance());
	    }
}
  • Calendar类的注意事项

日历对象中的月份是0-11, 0表示1月,依次类推, 11表示12月

日历对象中的星期是1-7, 1表示星期天,依次类推,7表示星期六

  • Calendar类的常用方法


    public int get(int field) 获取某个字段的值

	import java.util.Calendar;
	
	public class Text {
	    public static void main(String[] args)  {
	        Calendar cl =  Calendar.getInstance();      
	       
	        System.out.println(cl.get(Calendar.YEAR)); // 输出 2022
	        System.out.println(cl.get(Calendar.MONTH) + 1); // 输出 3
	        System.out.println(cl.get(Calendar.DAY_OF_WEEK) - 1); // 输出 6
	    }
}


public void set(int field,int value) 设置某个字段的值


	import java.util.Calendar;
	public class Text {
	    public static void main(String[] args)  {
	        Calendar cl =  Calendar.getInstance();      
	        System.out.println(cl.get(Calendar.YEAR)); // 输出 2022
	        
	        cl.add(Calendar.YEAR,3);
	        System.out.println(cl.get(Calendar.YEAR)); // 输出 2025
	        
	        cl.add(Calendar.YEAR,-3);
	        System.out.println(cl.get(Calendar.YEAR));// 输出 2020
	        
	    }
}


void setTime(Date date) 修改当前日历对象表示的时间。


	import java.util.Calendar;
	public class Text {
	    public static void main(String[] args)  {
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

	        String name = "1666-06-06";
	        // 把String 格式的日期转化为Date日期格式
	        Date a = sdf.parse(name);
			// 获取当前日期并输出 
	        System.out.println(Calendar.getInstance().get(Calendar.YEAR));
	
	        Calendar cl = Calendar.getInstance();
	        // 把日期设置为 1666-06-06
	        cl.setTime(a);
			// 输出被设置的日期
	        System.out.println(cl.get(Calendar.YEAR));// 输出 1666
	       
	    }
}


public boolean after(Object when)判断当前日历对象是否在指定的日历对象之后



public boolean after(Object when)判断当前日历对象是否在指定的日历对象之后


	import java.util.Calendar;
	public class Text {
	    public static void main(String[] args)  {
	        Calendar cl =  Calendar.getInstance();      

	        cl.set(Calendar.YEAR,2033);

	        Calendar cl2 = Calendar.getInstance();
	        
	        System.out.println(cl.after(cl2)); // 输出 true
	    }
}



Math类_

  • java.lang.Math(类): Math包含执行基本数字运算的方法的工具类

Math类构造方法被私有修饰,不能创建对象

操作的时候,都是通过Math类名直接调用该类的静态方法即可

  • Math类的常用方法

    public static int abs(int a) 获取参数a的绝对值

    public static double ceil(double a) 向上取整 (得到大于参数的最小整数)

    public static double floor(double a) 向下取整(得到小于参数的最大整数)

    public static double pow(double a, double b) 获取a的b次幂

    public static long round(double a) 四舍五入取整

    public static int max(int a, int b) 返回两个 int 值中较大的一个

    public static int min(int a, int b) 返回两个 int 值中较小的一个



System类_

  • java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作

System类构造方法被私有修饰,不能创建对象

直接通过System类名调用该类的静态方法

  • System类的常用方法


public static void exit(int status)

终止当前运行的Java虚拟机,非零表示异常终止


public static long currentTimeMillis() 返回当前时间距离标准基准时间的毫秒值;


	public class Text {
    public static void main(String[] args)  {
    
		// 输出当前时间距离标准基准时间的毫秒值 1647677183698 (和Date.getTime()效果相同)
        System.out.println(System.currentTimeMillis());
		
        System.out.println("开始");//开始
        System.out.println("1");//1
        System.out.println("2");//2
        System.exit(0);// 程序结束 非 0 为异常结束
        System.out.println("3");
        System.out.println("4");
        System.out.println("结束");
    }
}



BigInteger类

  • java.math.BigInteger 表示一个超大的整数
  • BigInteger类的构造方法


public BigInteger BigInteger(String value); 根据字符串内容创建一个超大的整数对象

(字符串参数一定要传整数的字符串)

  • BigInteger类成员方法


public BigInteger add(BigInteger value) 加法运算



public BigInteger subtract(BigInteger value) 减法运算



public BigInteger multiply(BigInteger value) 乘法运算



public BigInteger divide(BigInteger value) 除法运算



BigDecimal类

  • java.math.BigDecimal类,表示一个超大的小数,并且可以解决小数运算的精度问题
  • BigDecimal类构造方法


    BigDecimal(String val)

    将 BigDecimal 的字符串表示形式转换为 BigDecimal
  • BigDecimal类常用方法


    public BigDecimal add(BigDecimal value) 加法运算



    public BigDecimal subtract(BigDecimal value) 减法运算



    public BigDecimal multiply(BigDecimal value) 乘法运算



    public BigDecimal divide(BigDecimal value) 除法运算



Arrays类

  • java.util.Arrays类:该类包含用于操作数组的各种静态方法(如排序和搜索)
  • Arrays类常用方法


    public static void sort(int[] a):按照数字顺序排列指定的数组 升序



    public static String toString(int[] a):返回指定数组的内容的字符串表示形式

	import java.util.Arrays;

	public class Text {
	    public static void main(String[] args)  {
	        int arr[] = {10,9,8,7,6,5,4,3,2,1,0};
	
	        System.out.println(Arrays.toString(arr));// 输出 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
			// 升序
	        Arrays.sort(arr);
	        System.out.println(Arrays.toString(arr));// 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
	    }
}



包装类_

  • 为了更好的维护基本类型数据,java为基本类型创建了对应的引用类型,这些类称为包装类
  • 静态方法

public static Integer valueOf(int i) 返回表示指定的 int 值的 Integer 实例

public static Integer valueOf(String s) 返回保存指定String值的 Integer 对象

  • 拆箱和装箱

    装箱: 把基本类型转换为对应的包装类类型—->包装类的构造方法比如

    Integer.valueOf

    静态方法可以实现

    拆箱: 把包装类类型转换为对应的基本类型—->包装类的比如

    intValue()

    非静态方法实现


  • 自动装箱和自动拆箱

自动装箱: 基本类型自动转换为对应的包装类类型—->直接把基本类型的值赋值给对应的包装类类型变量

自动拆箱: 包装类类型自动转换为对应的基本类型—->直接把包装类的对象赋值给对应的基本类型的变量



基本类型与字符串之间的转换_


  • 基本类型与字符串之间的转换
  • 基本类型–>字符串:


方式一: 基本类型的数据 + 空的字符串(“”)



方式二: 字符串的静态方法

public static String valueOf(基本类型的值);

  • 字符串–>基本类型:

通过包装类的静态方法 比如

parseInt类型(String s)

得到对应的基本类型—>除了Character包装类之外,所有包装类都有这个方法