这里写目录标题
- 一、常用API
- 1.1Math
- 1.1.1Math类概述
- 1.1.2Math中方法的调用方式
- 1.1.3Math类的常用方法
- 1.2System
- 1.3 Object类的toString方法
- 1.4 Object类的equals方法
- 1.5Arrays
- 二、日期类
- 2.1Date类
- 2.1.1Date类概述
- 2.1.2Date类构造方法
- 2.2Date类的常用方法
- 2.3SimpleDateFormat类
- 2.3.1SimpleDateFormat类概述
- 2.3.2SimpleDateFormat类构造方法
- 2.3.3SimpleDateFormat类的常用方法
- 2.4Calendar类
- 2.4.1Calendar类概述
- 2.4.2Calender类常用方法
- 2.5二月天案例(应用)
- 三、异常
- 3.1异常
- 3.2JVM默认处理异常的方式
- 3.3try-catch方式处理异常
- 3.4Throwable成员方法
- 3.4.1常用方法
- 3.5编译时异常和运行时异常的区别
- 3.6throws方式处理异常
- 3.7throws和throw的区别
- 3.8自定义异常
一、常用API
1.1Math
1.1.1Math类概述
Math 包含执行基本数字运算的方法
1.1.2Math中方法的调用方式
Math类中无构造方法,但内部的方法都是静态的,则可以通过 类名.进行调用
1.1.3Math类的常用方法
public class Test2 {
public static void main(String[] args) {
double a=-13,b=2.1,c=2.9,d=4;
System.out.println("abs:"+Math.abs(a));
System.out.println("ceil:"+Math.ceil(b));
System.out.println("floor:"+Math.floor(c));
System.out.println("round:"+Math.round(b));
System.out.println("round:"+Math.round(c));
System.out.println("max:"+Math.max(b,c));
System.out.println("min:"+Math.min(b,c));
System.out.println("pow:"+Math.pow(b,d));
System.out.println("random:"+Math.random());
}
}
运行结果:
1.2System
System类的常用方法 :
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) + "毫秒");
}
}
1.3 Object类的toString方法
概述:
Object 是类层次结构的根,所有类都直接或者间接的继承自该类,该类所具备的方法,所有类都会有一份查看方法源码的方式:选中方法,按下Ctrl + B
- 重写toString方法的方式
- Alt + Insert 选择toString
- 在类的空白区域,右键 -> Generate -> 选择toString
- toString方法的作用:
- 以良好的格式,更方便的展示对象中的属性值
toString方法是Object类中常用的一个方法,使用时有以下两种情况:
(1)默认情况(未被重写的时候)
会默认返回:全类名(包名+类名)+@+哈希值的十六进制
在Object类中toString方法的源码是这样定义的
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
(2)被重写的情况
一般情况下,我们经常会重写toString方法来打印或者拼接对象的属性
重写后,默认是把对象的属性输出
在IDEA中重写toString的快捷键是alt+insert -->toString,重写的默认toString方法代码如下
class Student{
private String name;
private int age;
private String job;//定义了Student类的属性,来看toString方法返回的东西
public Student(String name, int age, String job) {
this.name = name;
this.age = age; //构造器
this.job = job;
}
//重写toString方法,输出对象的属性
@Override
public String toString() { //这是输出对象属性的toSring方法,当然也可以自己更改
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", job='" + job + '\'' +
'}';
}
}
注意细节:当输出一个对象时,toString方法默认被调用
比如面(2)中的代码,如果在main函数中创建一个Student类的student对象,输出student的时候会默认调用toString方法
System.out.println(student); //两行代码等价
System.out.println(student.toString());
1.4 Object类的equals方法
public boolean equals(Object obj)指示某个其他对象是否与此对象“相等”。
equals 方法在非空对象引用上实现相等关系:
基本数据类型:比较的是值
引用数据类型:比较的是两个对象的地址值
- equals方法的作用
- 用于对象之间的比较,返回true和false的结果
- 举例:s1.equals(s2); s1和s2是两个对象
- 重写equals方法的场景
- 不希望比较对象的地址值,想要结合对象属性进行比较的时候。
- 重写equals方法的方式
- alt + insert 选择equals() and hashCode(),IntelliJ Default,一路next,finish即可
- 在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上。
1.5Arrays
常用方法:
工具类设计思想
1、构造方法用 private 修饰
2、成员用 public static 修饰
public class Test2 {
public static void main(String[] args) {
int[] a={5,8,1,6,4};
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
运行结果:
二、日期类
2.1Date类
2.1.1Date类概述
Date 代表了一个特定的时间,精确到毫秒
2.1.2Date类构造方法
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);
}
}
运行结果:
北京时间:
2.2Date类的常用方法
public static void main(String[] args) {
//创建日期对象
Date d = new Date();
//public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
System.out.println(d.getTime());
System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");
//public void setTime(long time):设置时间,给的是毫秒值
// long time = 1000*60*60;
long time = System.currentTimeMillis();
System.out.println(time);
d.setTime(time);
System.out.println(d);
}
运行结果:
2.3SimpleDateFormat类
2.3.1SimpleDateFormat类概述
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
2.3.2SimpleDateFormat类构造方法
2.3.3SimpleDateFormat类的常用方法
- 格式化(从Date到String)
- public final String format(Date date):将日期格式化成日期/时间字符串
- 解析(从String到Date)
- public Date parse(String source):从给定字符串的开始解析文本以生成日期
public class Test2 {
public static void main(String[] args) throws ParseException {
//创建日期对象
Date d = new Date();
System.out.println(d);//d为当前时间
SimpleDateFormat sdf = new SimpleDateFormat();//默认模式
System.out.println(sdf);
String s=sdf.format(d);
System.out.println(s);//将日期格式化成默认模式的日期/时间字符串
System.out.println("--------------------------");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf2);
String s1=sdf2.format(d);
System.out.println(s1);//将日期格式化成指定模式的日期/时间字符串
System.out.println("----------------------------");
String s2="2048-08-09 11:11:11";
Date dd=sdf.parse(s);//默认格式解析字符串(指定格式的字符串会报错)
System.out.println(dd);
Date dd1=sdf2.parse(s2);//指定格式解析字符串(字符串需要指定格式(与指定格式相同格式))
System.out.println(dd1);
}
}
运行结果:
2.4Calendar类
2.4.1Calendar类概述
Calendar为日历字段提供了一些方法(转换,操作)
Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。
该方法返回一个Calendar 对象。
其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();
2.4.2Calender类常用方法
public class Test2 {
public static void main(String[] args) {
//获取日历类对象
Calendar c = Calendar.getInstance();
System.out.println(c);
//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 + "日");
//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 + "日");
}
}
运行结果:
2.5二月天案例(应用)
- 案例需求
获取任意一年的二月有多少天 - 代码实现
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 + "天");
}
}
三、异常
3.1异常
异常概述:
异常就是程序出现了不正常的情况
异常的体系结构:
3.2JVM默认处理异常的方式
- 如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有如下两个步骤:
- 把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
- 程序停止执行
3.3try-catch方式处理异常
try {
可能出现异常的代码;
} catch(异常类名 变量名) {
异常的处理代码;
}
3.4Throwable成员方法
3.4.1常用方法
public class Test2 {
public static void main(String[] args) {
try {
int[] a={1,2};
System.out.println(a[2]);
}catch (Exception e){
System.out.println(e.getMessage());
System.out.println("---------------------");
System.out.println(e.toString());
System.out.println("---------------------");
e.printStackTrace();
}
}
}
运行结果:
3.5编译时异常和运行时异常的区别
- 编译时异常
- 都是Exception类及其子类
- 必须显示处理,否则程序就会发生错误,无法通过编译
- 运行时异常
- 都是RuntimeException类及其子类
- 无需显示处理,也可以和编译时异常一样处理
3.6throws方式处理异常
public void 方法() throws 异常类名 {
}
注意事项:
- 这个throws格式是跟在方法的括号后面的
- 编译时异常必须要进行处理,两种处理方案:try…catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理
- 运行时异常可以不处理,出现问题后,需要我们回来修改代码
3.7throws和throw的区别
3.8自定义异常
自定义异常类:
public class ScoreException extends Exception {
public ScoreException() {}
public ScoreException(String message) {
super(message);
}
}
老师类:
public class Teacher {
public void checkScore(int score) throws ScoreException {
if(score<0 || score>100) {
// throw new ScoreException();
throw new ScoreException("你给的分数有误,分数应该在0-100之间");
} else {
System.out.println("成绩正常");
}
}
}
测试类:
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数:");
int score = sc.nextInt();
Teacher t = new Teacher();
try {
t.checkScore(score);
} catch (ScoreException e) {
e.printStackTrace();
}
}
}