常用API&异常
一、常用API
API (Application Programming Interface) :应用程序编程接口
Java中的API :
指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
1、字符串
1.String类
- 不可变性 final
- 操作量较少
- 效果上相当于char[],但底层原理是byte[]
JDK8及以前是字符数组,JDK9及以后是字节数组
构造方法:
public String()
public String(char[] chs)
public String(byte[] bys)
String s = “abc” //推荐使用直接赋值的方式
public class StringDemo01 {
public static void main(String[] args) {
String s1 ="abc";
System.out.println("s1:"+s1);
char[] chr ={'a','b','c'};
String s2 =new String(chr);
System.out.println("s2:"+s2);
byte[] byt ={97,98,99};
String s3 =new String(byt);
System.out.println("s3:"+s3);
}
}
运行结果:
==&equals比较:之后补充
基本类型:比较的是数据值是否相同
引用类型:比较的是地址值是否相同
equals()
将此字符串与指定对象进行比较。
2.StringBuilder
-
可变长
-
单线程,数据量较大
- 效率高,不安全
-
方法
- length() 长度
- append() 拼接
- reverse() 反转
- toString() //StringBuilder转换为String
- …通过帮助文档
-
链式编程:
- s.append( “Hello\t”).append(“World\t”).append(“你好,”).append(“世界”);
-
StringBuilder和String相互转换
- StringBuilder转换为String:toString()
- String转换为StringBuilder:构造方法:StringBuilder(String s)
3.StringBuffer类
-
可变长
-
多线程,数据量较大
- 效率低,安全
-
方法
- append()
-
…通过帮助文档
例子
String str =“a”+1+2
a12
String str =‘a’+1+2
100
String str = String.valueOf(‘a’+1+2)
String str =1+2+“a”
3a
2、常用API
Math类
-
常见的数学运算:类
Math
包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数。 -
方法:(通过类名直接调用)
- abs() 绝对值
- ceil() 向上取整(返回double类型
- floor() 向下取整(返回double类型)
- round() 四舍五入(返回int)
- max 取较大值
- min 取较小值
- pow(int a,int b) 返回a的b次幂的值
- random 生成随机数
- UUID
-
…通过帮助文档
System类
- System类包含几个有用的类字段和方法。 它无法实例化。
- 常用方法:
- exit() 终止当前Java虚拟机,非零表示异常终止
- currentTimeMillis() 返回当前时间(以毫秒为单位)
- nanoTime 返回时间源的当前值,以纳秒为单位
Object类
- 所有类都直接或间接继承自Object
- 构造方法 Object()
-
方法
- equals()
equeals() & == 的比较
- toString()
建议所有子类重写此方法,Alt+Insert 默认生成equals、toString
- hashcode()
- clone
- getClass()
- notify() 通知
- wait()
3、包装类
- 自动装箱和拆箱(面试可能问)
- 装箱:把基本数据类型转换为对应的包装类类型
- 拆箱:把包装类类型转换为对应的基本数据类型
基本类型包装类:
byte Byte
short Short
int integer
long Long
float Float
double Double
char Character
boolean Boolean
具体之后补充…
1.Integer
Integer是int的包装类,默认值是null,new Integer()实际上是生成一个指针指向此对象,属于引用类型;
构造方法(已过时): new Integer(100) new Integer(“100”)
推荐方式 Integer.valueOf(100) Integer.valueOf(“100”)
int与String相互转换:
int=>String:
int number=100;
1.""+number
2.String.valueOf(number)//推荐这种
String=>int:
String s =“100”;
1.Integer i =Integer.valueOf(s) ; int x=i.intValue();//String—Integer—int
2.Integer.paraseInt();
延伸:关于Integer和int的比较 //…更多的会在之后学习补充
具体之后补充…
4、Date类
Date:精确到毫秒
- Date类表示特定的时刻,精度为毫秒。
-
构造方法:
- Date()
- Date(long date) (基准时间+data:1970年起的指定毫秒数)
-
常用方法:
- getTime() :获取的是日期对象从1970年1月1日00:00:00到现在的毫秒
- setTime(long time) :设置时间给的是毫秒值 //与Date(long date)效果类似
SimpleDateFormat
- 构造方法
- SimpleDateFormat()
- SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”)
- 格式化和解析日期:
- Date到String: format(Date date) 将日期格式化成日期/时间字符串
- String到Date: parse(String source) 从给定字符串的开始解析文本以生成日期
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
//解析日期1:Date to String
String s = sdf.format(date);//日期 格式化为 字符串
System.out.println(s);
//解析日期2:String to Date
String d ="2021-01-25 11:19:00";
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date x=sdf1.parse(d);
System.out.println(x);
}
}
输出结果
日期工具类:
1.dateToString
2.stringToDate
public class DateUtils {
private DateUtils() {}
public static String DateToString(Date date, String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
//解析日期1:Date to String
return sdf.format(date);
}
public static Date StringToData(String s, String format) throws ParseException {
SimpleDateFormat sdf =new SimpleDateFormat(format);
//解析日期2:String to Date
return sdf.parse(s);
}
}
Calendar日历类(建议使用)
-
Calendar(抽象类)为在某一特定时刻和一组日历字段之间的转换方法
-
提供了类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化
-
Calendar rightNow=Calendar.getInstance ();//多态形式 获取对象
public class CalendarDemo { public static void main(String[] args) { Calendar c=Calendar.getInstance (); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1; int date = c.get(Calendar.DATE); int hour = c.get(Calendar.HOUR); int minute = c.get(Calendar.MINUTE); int second = c.get(Calendar.SECOND); System.out.println(year+"年"+month+"月"+date+"日"+hour+"时"+minute+"分"+second+"秒"); } } 输出:2021年1月25日3时38分8秒
-
方法
- get(int field) :返回给定日历字段的值
- add(int field,int amount) 根据日历规则,将指定的时间量添加或减去给定的日历时间字段
c.add(Calendar.DATE,-3); 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+"日"); 输出:2021年1月22日
- set(int year,int month,int date) :设置当前日历的年月日
c.set(2028,1,25);//2028年2月25日 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+"日"); 输出:2028年2月25日
注:
Calendar(日历类)中月份是从0开始(范围0~11),故要+1,,如下:
int month = c.get(Calendar.MONTH)+1;
0 代表1月,1代表2月,以此类推;
5、File类
- 创建文件
- 查看文件
- 修改文件
- 删除文件
属于IO流与文件部分内容,之后补充
二、异常
Java异常处理与日志
程序调试和单元测试:Debug+Junit
1、异常体系结构
Throwable
1.Exception
-
运行时异常(RuntimeException) ~~~主要处理
-
1/0
-
ClassnNotFound
-
NullPoint
-
UnKownType
-
ArrayIndexoutofBounds(数组下标越界)
-
…
-
-
检查型异常(CheckedException)~~~ 一般不管
- 非Runtime Exception(非运行时异常)
- 一般属于用户错误或问题引起的异常
2.Error(错误)
-
AWT错误(AWTError) ~~~ 一般不管
- 前端绘制界面错误
-
JVM错误(VirtulMachineError)
-
StackOverFlow(面试可能问)
-
OutofMemory(面试可能问):内存溢出
-
拓展:
Thorwable成员方法:(常用方法)
- getMessage() 返回此 throwable 的详细消息字符串
- toString() 返回此可抛出的简短描述
- printStackTrace() 把异常的错误信息输出在控制台]
Error 与 Exception 的区别:
Error:通常是灾难性的致命错误,是程序无法控制和处理的
Exception:通常情况下是可以被程序处理的,并再程序中尽可能的去处理这些异常。
2、异常关键字(五个)
1.try、catch、finally
try {
可能出现异常的代码;
}
catch(想要捕获的异常类名 变量名) {
异常的处理代码;
}
finally{
无论是否发现异常都执行;
}
- try()
- 判断可能出现异常的代码;
- catch(){}
- 异常的处理代码; 捕获异常
- 像if-else一样可以写多个:异常先小后大
- finally():
- 无论是否发现异常都执行;用于善后工作,释放资源。
- 可以选择不要finally ==》 try{}catch(){}
捕获异常快捷键:Ctrl+Alt+T,包裹代码块
2.thow和thows
thow和thows用于抛出异常
-
thow
- 主动抛出异常
- 用在方法体内,跟的是异常对象名
-
thows
- 方法抛出
- public void 方法() throws 异常类名 { }
自定义异常
- 继承Exception
后期学习补充:。。。。。。