1.Date:日期类
Calendar:日历类
package java_jichu;import java.text.SimpleDateFormat; import java.util.Date;public class java_3_29 {public static void main(String[] args) {Date d = new Date(); //创建一个Date对象d,表示当前的日期和时间;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); //调用格式转换的类和方法,并定义了一种转换格式String datafs = sdf.format(d); //把d转换为相应格式,并存在字符串中System.out.println(datafs);} }
这是将一个日期转成字符串;
知识点:
y(Y)-> 年 -> yyyy (表示用四个数来表示年);
m(M)->MM:月份 ,mm:分钟;
d(D)-> dd: 一个月中的日期;D:一年中的日期;
h(H)-> h:12进制,HH:24进制
s(S)-> s:秒 S:毫秒
2.日历:Calendar
日历类是一个抽象类,所以不能直接new构建,需要用它包含的一个方法getInstance构建;
例如:
package java_jichu;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;public class java_3_29 {public static void main(String[] args)throws Exception {Calendar instance = Calendar.getInstance();System.out.println(instance.get(Calendar.YEAR));} }
get方法可以获取想要的值;月份是从0开始的
instance.setTime(new Date()); //将日期传进来,让日历指向日期;
instance.add(Calendar.YEAR, 1); //把日历中的年加一
3.字符串的非空判断:
package java_jichu;public class java_3_29 {public static void main(String[] args)throws Exception {} } class StringUtil{public static boolean isEmpty(String str) {if (str == null) {return true;}if ("".equals(str)) {return true;}if ("".equals(str.trim())){return true;}return false;}public static boolean isNotEmpty(String str){return !isEmpty(str);} }
可以简洁化:
package java_jichu;public class java_3_29 {public static void main(String[] args)throws Exception {} } class StringUtil{public static boolean isEmpty(String str) {if (str == null || "".equals(str.trim())){return true;}return false;}public static boolean isNotEmpty(String str){return !isEmpty(str);} }
4.字符串的操作方法可以进行封装,字符串的工具类满足以下原则:
(1)工具类不应该创建对象才能使用,也就意味着,可以直接使用类中的属性和方法,一般都声明为静态的;
(2)工具类对外提供的属性和方法应该是公共的;
(3)为了使用者开发方便,应该尽量提供丰富的方法和属性;
5.基本数据类型:双等号比较数字
引用数据类型,双等号比较变量的内存地址
要进行相等判断,基本数据类型一般用双等号,而字符串比较用equals好一点,因为比较内存地址没有意义,我们一般想要比较的应该是内容;
而对象的比较,继承了Object的equals方法,这个equals方法和双等号没有本质的区别;
而包装类的用双等号比较的话,可能会超出缓存区范围,那么就会重新new出数据,那么可能与真实情况不相同,所以包装类用equals好一点;
总结:基本数据用双等号,引用数据用equals;
5.Java中的错误:
(1)类型转换出现错误:
String s = "123"; Integer i = (Integer)s; 会报错;
(2)递归没有跳出的逻辑:
StackOverflowError
(3)访问一个空对象的成员方法时,出现错误;
package java_jichu;import java.util.Random; import java.util.UUID;public class java_3_29 {public static void main(String[] args)throws Exception {User user = null;System.out.println(user.toString());} } class User{}
空对象不能访问成员属性和方法;
6.java中的异常:
分为两大类:运行期异常(RuntimeException)和编译期异常(Exception);
可以通过代码恢复正常逻辑执行的异常,称为运行期异常;
7.try-catch-finally语句:
try{
可能会出现异常的代码,如果出现异常,那么JVM会将异常进行封装,形成一个具体的异常类,然后将这个异常抛出;
所有的异常对象都可以被抛出;
}
catch(抛出的异常对象){
异常的解决方案
}
finally{
最终执行的代码逻辑;
}
常见的异常:
(1)除数为0的算术异常;
(2)空对象异常;
(3)索引越界;
(4)字符串索引越界
(5)格式化异常
(6)类型转换异常;
8.自定义异常:
package java_jichu;import java.util.Random; import java.util.UUID;public class java_3_29 {public static void main(String[] args)throws Exception {String account = "admin";String password = "123123";try{login(account, password);}catch (AccountException accountException){System.out.println("账号不正确,需要修正");}catch (PasswordException passwordException){System.out.println("密码不正确,需要修正");}catch (LoginException loginException){System.out.println("其他登陆异常");}}public static void login( String account, String password){if (!"admin".equals(account)) {throw new AccountException("账号不正确");}if (!"admin".equals(password)) {throw new PasswordException("密码不正确");}System.out.println("登陆成功");}}class AccountException extends LoginException{ public AccountException(String message){super(message);} } class PasswordException extends LoginException{public PasswordException(String message){super(message);} } class LoginException extends RuntimeException{ //让loginexception当runtimeexception的儿子,让他成为异常类;public LoginException(String message){ //构造方法需要传信息,信息又传给上一级super(message);} }