权限修饰符
-
public : 公共的
-
protected: 受保护的
-
(空的): 默认
-
private: 私有的
构造代码块
-
位置: 类中方法外
-
执行: 每次调用构造方法之前都会执行一次
-
使用场景: 执行构造方法之前需要执行的代码就可以放在构造代码块中,eg: 统计该类创建的对象个数
静态代码块
-
格式:
static{}
-
位置: 类中方法外
-
执行: 随着类的加载而执行,并且只执行一次,优先于构造方法执行
-
使用场景: 只需要执行一次的代码就可以放在静态代码块中 eg: 加载驱动,加载配置文件...
局部代码块
-
格式:
{}
-
位置: 在方法中
-
执行: 调用方法,执行到局部代码块的位置才执行
-
使用场景: 主要用来提交释放内存,节省内存空间,但意义不大
-
静态代码块优先于构造代码块执行
-
构造代码块优先于构造方法执行
Object类的概述
概述: java.lang.Object类是java中所有类的父类\根类,也就是说java中所有的类都继承了Object类
-
继承Object类:
-
直接继承Object类:
public class Person /*extends Object*/{}
-
间接继承Object类:
public class Student extends Person{}
-
public toString();返回该对象的字符串表示
-
public boolean equals(Object obj); 判断2个对象是否相等;
toString方法
使用场景: 如果打印对象的时候不希望打印的是地址值,那么就重写toString方法
equals方法
-
Object类的equals方法默认比较的是地址值
-
如果希望比较的不是地址值,而是所有的属性值,那么就按alt+insert,选择equals() and hashCode()重写就行
在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。方法如下:
-
public static boolean equals(Object a, Object b)
:判断两个对象是否相等。
Date类
java.util.Date类表示日期,内部精确到毫秒.表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
-
public Date();创建当前系统时间对应的日期对象
-
public Date(long mills);距离标准基准时间 指定偏移毫秒数 对应的日期对象
-
public long getTime();获取当前日期对象距离标准基准时间的毫秒值
-
public boolean after(Date when) 判断此日期是否在指定日期之后
-
public boolean before(Date when) 判断此日期是否在指定日期之前
-
DateFormat类的概述
-
概述: java.text.DateFormat 该类可以使得在Date对象与String对象之间进行来回转换.
-
格式化: 按照指定的格式,把Date对象转换为String对象。
-
解析: 按照指定的格式,把String对象转换为Date对象。
-
-
注意: DateFormat是一个抽象类,无法创建对象,应该使用其子类来实现Date和String之间的转换
-
SimpleDateFormat类
-
概述:java.text.SimpleDateFormat类继承DateFormat类,所以该类也可以实现Date和String对象之间的相互转化
-
构造方法:
-
public SimpleDateFormat(String pattern);创建日期格式化对象,并且指定日期格式;
-
日期格式:
-
y:年
-
M:月
-
d:日
-
H:时
-
m:分
-
s:秒
-
....
-
-
常见的日期格式:
-
yyyy-MM-dd HH:mm:ss
-
yyyy年MM月dd日 HH:mm:ss
-
-
DateFormat类中的常用方法
-
public String format(Date date):将Date对象格式化为字符串。
-
public Date parse(String source):将字符串解析为Date对象。
日期格式化对象中指定的日期要和解析的字符串日期格式一致,否则会报解析异常ParseException
日期类练习
需求
-
键盘输入一个字符串类型的出生日期时间,打印你来到世界多少天?
分析
- 键盘录入出生日期时间
- 获取当前系统日期时间,并转化为距离标准基准时间的毫秒值
- 出生日期时间转化为Date日期,再获取出生日期时间距离标准基准时间的毫秒值
- 计算2个时间的毫秒值差,换算成天数,打印输出
实现
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws ParseException {
//- 键盘录入出生日期时间
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的出生日期,格式为yyyy-MM-dd:");
String birthday = sc.nextLine();
//- 获取当前系统日期时间,并转化为距离标准基准时间的毫秒值
long nowTime = new Date().getTime();
//- 出生日期时间转化为Date日期,再获取出生日期时间距离标准基准时间的毫秒值
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayDate = sdf.parse(birthday);
long birthdayTime = birthdayDate.getTime();
//- 计算2个时间的毫秒值差,换算成天数,打印输出
System.out.println("来到世界:" + (nowTime - birthdayTime) / 1000 / 60 / 60 / 24 + "天");
}
}
Calendar类
-
public static Calendar getInstanse();
Calendar类的常用方法
-
public int get(int field) 获取某个字段的值。
-
public void set(int field,int value) 设置某个字段的值
-
public void add(int field,int amount) 为某个字段增加/减少指定的值
-
void setTime(Date date) 修改当前日历对象表示的时间。
-
public boolean after(Object when)判断当前日历对象是否在指定的日历对象之后
-
public boolean before(Object when) 判断当前日历对象是否在指定的日历对象之前
Math类
-
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类
-
System类的概述
-
概述: java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。
-
特点:
-
System类构造方法被私有修饰,不能创建对象
-
直接通过System类名调用该类的静态方法
-
-
-
System类的常用方法
-
public static void exit(int status)终止当前运行的Java虚拟机,非零表示异常终止
-
public static long currentTimeMillis() 返回当前时间距离标准基准时间的毫秒值;
-
BigInteger类
-
BigInteger类的概述
-
概述: java.math.BigInteger 表示一个超大的整数
-
-
BigInteger类的构造方法
-
public 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(double val)
将double类型的数据封装为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类
-
Arrays类概述
-
java.util.Arrays类:该类包含用于操作数组的各种静态方法(如排序和搜索)。
-
-
Arrays类常用方法
-
public static void sort(int[] a):按照数字顺序排列指定的数组 升序
-
public static String toString(int[] a):返回指定数组的内容的字符串表示形式
-
包装类
-
构造方法
-
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) 返回保存指定String值的 Integer 对象
-
自动装箱和自动拆箱
-
自动装箱: 基本类型自动转换为对应的包装类类型---->直接把基本类型的值赋值给对应的包装类类型变量
-
自动拆箱: 包装类类型自动转换为对应的基本类型---->直接把包装类的对象赋值给对应的基本类型的变量