5、Java 常用的API

Math

  • Math包含执行数字运算的方法
  • Math类中无构造方法,但内部的方法都是静态的,则可以通过 类名.进行调用
// 常用方法
public static int abs(int a) 返回参数的绝对值
public static double ceil(double a)   返回大于或等于参数的最小double值,等于一个整 数
public static double floor(double a) 返回小于或等于参数的最大double值,等于一个整 数
public static int round(float a) 按照四舍五入返回最接近参数的int
public static int max(int a,int b) 返回两个int值中的较大值
public static int min(int a,int b) 返回两个int值中的较小值
public static double pow (double a,double b) 返回a的b次幂的值
public static double random() 返回值为double的正值,[0.0,1.0) 3、Math类的常用方法 3.2 System(应用

System

public static void exit(int status) 终止当前运行的 Java 虚拟机,非零表示异常终止 
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)
public class SystemDemo { 
	public static void main(String[] args) { 
	// 获取开始的时间节点 
	long start = System.currentTimeMillis(); 
	for (int i = 1; i <= 10000; i++) {
	System.out.println(i); }
	// 获取代码运行结束后的时间节点 
	long end = System.currentTimeMillis();
	System.out.println("共耗时:" + (end ­ start) + "毫秒"); 
	} 
}

Object类

Object类

  • Object是类层次结构的根,每一个类都可以将Object作为超类。所有类都直接或者间接的继承自该类。所有类具备的方法,所有类都会有一份。

toString方法

  • 以良好的格式,更方便的展示对象中的属性值
class Student extends Object {
	private String name;
	private int age;
	public Student() {
	}
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}
	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;
	}
	@Override
	public String toString() {
		return "Student{" +
		"name='" + name + '\'' +
		", age=" + age +
		'}';
}
}
public class ObjectDemo {
	public static void main(String[] args) {
		Student s = new Student();
		s.setName("林青霞");
		s.setAge(30);
		System.out.println(s);
		System.out.println(s.toString());
	}
}

Object类的equals方法

  • 用于对象之间的比较,返回true和false的结果
s1.equals(s2); s1和s2是两个对象
  • 不希望比较对象的地址值,想要结合对象属性进行比较的时

重写equals方法的方式

1. alt + insert 选择equals() and hashCode(),IntelliJ Default,一路next,finish
2. 在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上
class Student {
	private String name;
	private int age;
	public Student() {
	}
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}
	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;
	}
	@Override
	public boolean equals(Object o) {
		//this ­­ s1
		//o ­­ s2
		if (this == o) return true;
		if (o == null || getClass() != o.getClass()) return false;
		Student student = (Student)//student ­­ s2
		if (age != student.age) return false;
		return name != null ? name.equals(student.name) : student.name == null;
		}
}
public class ObjectDemo {
	public static void main(String[] args) {
		Student s1 = new Student();
		s1.setName("林青霞");
		s1.setAge(30);
		Student s2 = new Student();
		s2.setName("林青霞");
		s2.setAge(30);
		//需求:比较两个对象的内容是否相同
		System.out.println(s1.equals(s2));
	}
}

冒泡排序

  • 一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序
/*
冒泡排序:
一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,
依次对所有的数据进行操作,直至所有数据按要求完成排序
*/
public class ArrayDemo {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {55,22,65,97,11,16,105,99};
        System.out.println("排序前:"+ arrayToString(arr));
        // 这里减1,是控制每轮比较的次数
        for (int x = 0; x<arr.length-1-x;x++){
            // ­1是为了避免索引越界,­x是为了调高比较效率
            for (int i = 0; i < arr.length-1-x; i++) {
                if (arr[i] > arr[i+1]){
                    int temp =arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;

                }
            }
        }
        System.out.println("排序后:" + arrayToString(arr));
    }
    //把数组中的元素按照指定的规则组成一个字符串:[元素1, 元素2, ...]
    public static String arrayToString(int[] arr){
        StringBuffer sb = new StringBuffer();
        sb.append("[");
        for (int i=0;i<arr.length;i++){
            if (i == arr.length -1){
                sb.append(arr[i]);
            }
            else{
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

输出:
在这里插入图片描述

Arrays
Arrays的常用方法

public static String toString(int[] a) 返回指定数组的内容的字符串表示形式
public static void sort(int[] a) 按照数字顺序排列指定的数组
工具类设计思想
1、构造方法用 private 修饰
2、成员用 public static 修饰

包装类

  • 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
  • 用于基本数据类型与字符串之间的转换

基本类型对应的包装类

基本数据类型   包装类
byte         Byte
short        Short
int          Integer
long         Long
float        Float
double       Double
char         Character
boolean      Boolean

Integer类

  • 包装一个对象中的原始类型 int 的值
public Integer(int value)               根据 int 值创建 Integer 对象(过时)
public Integer(String s)                根据 String 值创建 Integer 对象(过时)
public static Integer valueOf(int i)    返回表示指定的 int 值的 Integer 实例
public static Integer valueOf(String s) 返回一个保存指定值的 Integer 对象 String
public class IntegerDemo {
	public static void main(String[] args) {
		//public Integer(int value):根据 int 值创建 Integer 对象(过时)
		Integer i1 = new Integer(100);
		System.out.println(i1);
		//public Integer(String s):根据 String 值创建 Integer 对象(过时)
		Integer i2 = new Integer("100");
		// Integer i2 = new Integer("abc"); //NumberFormatException
		System.out.println(i2);
		System.out.println("--------");
		//public static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例
		Integer i3 = Integer.valueOf(100);
		System.out.println(i3);
		//public static Integer valueOf(String s):返回一个保存指定值的Integer对象String
		Integer i4 = Integer.valueOf("100");
		System.out.println(i4);
	}
}

int和String类型的相互转换
int转换为String

  • 直接在数字后加一个空字符串
  • 通过String类静态方法valueOf()
public class IntegerDemo {
	public static void main(String[] args) {
		//int --- String
		int number = 100;
		//方式1
		String s1 = number + "";
		System.out.println(s1);
		//方式2
		//public static String valueOf(int i)
		String s2 = String.valueOf(number);
		System.out.println(s2);
		System.out.println("--------");
	}
}

String转换为int
转换方式

  • 方式一:先将字符串数字转成Integer,再调用valueOf()方法
  • 方式二:通过Integer静态方法parseInt()进行转换
public class IntegerDemo {
	public static void main(String[] args) {
		//String --- int
		String s = "100";
		//方式1:String --- Integer --- int
		Integer i = Integer.valueOf(s);
		//public int intValue()
		int x = i.intValue();
		System.out.println(x);
		//方式2
		//public static int parseInt(String s)
		int y = Integer.parseInt(s);
		System.out.println(y);
	}
}

自动拆箱和自动装箱

  • 自动装箱:把基本数据类型转换为对应的包装类类型
  • 自动拆箱:把包装类类型转换为对应的基本数据类型
Integer i = 100; //自动装箱
i += 200;       // i = i + 200;  i+200自动装箱; i = i + 200; 自动装箱

时间日期类

Date类

  • Date代表了一个特定的时间,精确到毫秒
  • Date类构造方法
public Date()   分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date) 分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
public class DateDemo01 {
	public static void main(String[] args) {
		//public Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
		Date d1 = new Date();
		System.out.println(d1);
		//public Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
		long date = 1000*60*60;
		Date d2 = new Date(date);
		System.out.println(d2);
	}
}

Date类常用方法

public long getTime() 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
public void setTime(long time) 设置时间,给的是毫秒值

SimpleDateFormat类

  • SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期
public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern)  构造一个SimpleDateFormat使用给定的模式和默认的日期格式

SimpleDateFormat类的常用方法
-格式化(从Date到String)
- public final String format(Date date):将日期格式化成日期/时间字符串

解析(从String到Date)

  • public Date parse(String source):从给定字符串的开始解析文本以生成日期
public class SimpleDateFormatDemo {
	public static void main(String[] args) throws ParseException {
		//格式化:从 Date 到 String
		Date d = new Date();
		// SimpleDateFormat sdf = new SimpleDateFormat();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String s = sdf.format(d);
		System.out.println(s);
		System.out.println("--------");
		//从 String 到 Date
		String ss = "2048-08-09 11:11:11";
		//ParseException
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date dd = sdf2.parse(ss);
		System.out.println(dd);
	}
}

Calendar类

Calendar为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
Calendar提供了一个类方法getlnstance用于获取这种类型的一般有用的对象
该方法返回一个Calendar 对象
其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();

public int get(int field) 返回给定日历字段的值
public abstract void add(int field, intamount)  根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,intdate) 设置当前日历的年月日
public class CalendarDemo {
	public static void main(String[] args) {
		//获取日历类对象
		Calendar c = Calendar.getInstance();
		//public int get(int field):返回给定日历字段的值
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH) + 1;
		int date = c.get(Calendar.DATE);
		System.out.println(year + "年" + month + "月" + date + "日");
		//public abstract void add(int field, int amount):根据日历的规则,将指定的时间量添加或减去给定的日历字段
		//需求1:3年前的今天
		// c.add(Calendar.YEAR,-3);
		// year = c.get(Calendar.YEAR);
		// month = c.get(Calendar.MONTH) + 1;
		// date = c.get(Calendar.DATE);
		// System.out.println(year + "年" + month + "月" + date + "日");
		//需求2:10年后的10天前
		// c.add(Calendar.YEAR,10);
		// c.add(Calendar.DATE,-10);
		// year = c.get(Calendar.YEAR);
		// month = c.get(Calendar.MONTH) + 1;
		// date = c.get(Calendar.DATE);
		// System.out.println(year + "年" + month + "月" + date + "日");
		//public final void set(int year,int month,int date):设置当前日历的年月日
		c.set(2050,10,10);
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH) + 1;
		date = c.get(Calendar.DATE);
		System.out.println(year + "年" + month + "月" + date + "日");
	}
}

案例,获取任意一年的二月有多少天

public class CalendarTest {
	public static void main(String[] args) {
		//键盘录入任意的年份
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年:");
		int year = sc.nextInt();
		//设置日历对象的年、月、日
		Calendar c = Calendar.getInstance();
		c.set(year, 2, 1);
		//3月1日往前推一天,就是2月的最后一天
		c.add(Calendar.DATE, -1);
		//获取这一天输出即可
		int date = c.get(Calendar.DATE);
		System.out.println(year + "年的2月份有" + date + "天");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值