格式:
public class Show(){
{
// 要执行的代码
System.out.println("构造代码块");
}
public Show(){
// 空参构造
System.out.println("空参构造");
}
}
public class Text{
public static void main(){
new Show();
// 输出 构造代码块
// 空参构造
}
}
每次调用构造方法时,都会执行一次,优先于构造方法执行
静态代码块_
public class Show(){
static {
// 要执行的代码
System.out.println("静态代码块");
}
public Show(){
// 空参构造
System.out.println("空参构造");
}
}
public class Text{
public static void main(){
new Show();
// 输出 静态代码块
// 空参构造
}
}
随着类的加载而执行,并且只执行一次
Object类_
java.lang.Object类是java语言的根类,所有java类的父类
Object类中的两个常用方法:
String toString()
返回该对象的字符串表示public boolean equals(Object obj)
比较两个对象的地址是否相等由于toString() 和 equals() 方法不能满足比打印出对象属性的值和比较两个对象的属性是否相等,所以就需要重写方法
// 重写ToString 方法
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
// alt+inset--->toString
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
// 重写equals 方法
@Override
public boolean equals(Object o) {
// 如果2个对象的地址值相对,直接返回true结束方法
if (this == o) return true;
// 如果参数为null或者2个对象的类不一致,就直接返回false结束方法
if (o == null || getClass() != o.getClass()) return false;
// 向下转型
Person person = (Person) o;
// 比较所有属性
return age == person.age &&
Objects.equals(name, person.name);
}
Objects类_
java.util.Objects
类
public static boolean equals(Object a, Object b)
判断两个对象是否相等
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
java.util.Date
类 用来表示从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数
0时区标准基准时间: 1970年1月1日00:00:00
东八区标准基准时间: 1970年1月1日08:00:00
public Date Date();
当前系统时间对应的日期对象
public Date Date(long mills);
距离标准基准时间 指定偏移毫秒数 对应的日期对象
import java.util.Date;
public class Text {
public static void main(String[] args) {
// 获取当前系统时间
System.out.println(new Date());
// 获取距离标准基准时间1天的时期对象
System.out.println(new Date(1000 * 60 * 60 * 24)); // 输出 Fri Jan 02 08:00:00 CST 1970
}
}
public long getTime();获取当前日期对象距离标准基准时间的毫秒值
public boolean after(Date when) 判断此日期是否在指定日期之后
public boolean before(Date when) 判断此日期是否在指定日期之前
import java.util.Date;
public class Text {
public static void main(String[] args) {
// 获取当前日期对象距离标准基准时间的毫秒值
System.out.println(new Date().getTime());
}
}
import java.util.Date;
public class Text {
public static void main(String[] args) {
// 判断两个时期对象时间的前后
System.out.println(new Date(1000 * 60 * 60 * 24).after(new Date())); // 输出 false
System.out.println(new Date(1000 * 60 * 60 * 24).before(new Date())); // 输出 true
}
}
java.text.DateFormat
类 该类可以使得在Date对象与String对象之间进行来回转换格式化 - 按照指定的格式,把Date对象转换为String对象
解析 - 按照指定的格式,把String对象转换为Date对象
由于DateFormat是一个抽象类,无法创建对象,应该使用其子类来实现Date和String之间的转换
SimpleDateFormat类_
public SimpleDateFormat(String pattern):传入日期指定格式,创建SimpleDateFormat对象.
import java.text.SimpleDateFormat;
public class Test {
public static void main(String[] args) {
// 设置日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
}
}
public String format(Date date):将Date对象格式化为字符串。
public Date parse(String source):将字符串解析为Date对象
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Test {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 输入的格式要和指定的格式相同
String date = "1999-1-1";
System.out.println(sdf.parse(date)); // 输出 Mon Nov 30 00:00:00 CST 1999
// 按指定的格式对时期格式进行字符串转化
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
// 输出 2022年03月19日 15时29分02秒
System.out.println(sdf2.format(new Date()));
}
}
java.util.Calendar
类表示一个“日历类”,可以进行日期运算
import java.util.Calendar;
public class Text {
public static void main(String[] args) {
// 获取到日历对象
System.out.println(Calendar.getInstance());
}
}
日历对象中的月份是0-11, 0表示1月,依次类推, 11表示12月
日历对象中的星期是1-7, 1表示星期天,依次类推,7表示星期六
public int get(int field) 获取某个字段的值
import java.util.Calendar;
public class Text {
public static void main(String[] args) {
Calendar cl = Calendar.getInstance();
System.out.println(cl.get(Calendar.YEAR)); // 输出 2022
System.out.println(cl.get(Calendar.MONTH) + 1); // 输出 3
System.out.println(cl.get(Calendar.DAY_OF_WEEK) - 1); // 输出 6
}
}
public void set(int field,int value) 设置某个字段的值
import java.util.Calendar;
public class Text {
public static void main(String[] args) {
Calendar cl = Calendar.getInstance();
System.out.println(cl.get(Calendar.YEAR)); // 输出 2022
cl.add(Calendar.YEAR,3);
System.out.println(cl.get(Calendar.YEAR)); // 输出 2025
cl.add(Calendar.YEAR,-3);
System.out.println(cl.get(Calendar.YEAR));// 输出 2020
}
}
void setTime(Date date) 修改当前日历对象表示的时间。
import java.util.Calendar;
public class Text {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String name = "1666-06-06";
// 把String 格式的日期转化为Date日期格式
Date a = sdf.parse(name);
// 获取当前日期并输出
System.out.println(Calendar.getInstance().get(Calendar.YEAR));
Calendar cl = Calendar.getInstance();
// 把日期设置为 1666-06-06
cl.setTime(a);
// 输出被设置的日期
System.out.println(cl.get(Calendar.YEAR));// 输出 1666
}
}
public boolean after(Object when)判断当前日历对象是否在指定的日历对象之后
public boolean after(Object when)判断当前日历对象是否在指定的日历对象之后
import java.util.Calendar;
public class Text {
public static void main(String[] args) {
Calendar cl = Calendar.getInstance();
cl.set(Calendar.YEAR,2033);
Calendar cl2 = Calendar.getInstance();
System.out.println(cl.after(cl2)); // 输出 true
}
}
Math类构造方法被私有修饰,不能创建对象
操作的时候,都是通过Math类名直接调用该类的静态方法即可
System类构造方法被私有修饰,不能创建对象
直接通过System类名调用该类的静态方法
public static void exit(int status)
终止当前运行的Java虚拟机,非零表示异常终止
public static long currentTimeMillis() 返回当前时间距离标准基准时间的毫秒值;
public class Text {
public static void main(String[] args) {
// 输出当前时间距离标准基准时间的毫秒值 1647677183698 (和Date.getTime()效果相同)
System.out.println(System.currentTimeMillis());
System.out.println("开始");//开始
System.out.println("1");//1
System.out.println("2");//2
System.exit(0);// 程序结束 非 0 为异常结束
System.out.println("3");
System.out.println("4");
System.out.println("结束");
}
}
public BigInteger BigInteger(String value); 根据字符串内容创建一个超大的整数对象
(字符串参数一定要传整数的字符串)
public BigInteger add(BigInteger value) 加法运算
public BigInteger subtract(BigInteger value) 减法运算
public BigInteger multiply(BigInteger value) 乘法运算
public BigInteger divide(BigInteger value) 除法运算
BigDecimal(String val)
将 BigDecimal 的字符串表示形式转换为 BigDecimalpublic BigDecimal add(BigDecimal value) 加法运算
public BigDecimal subtract(BigDecimal value) 减法运算
public BigDecimal multiply(BigDecimal value) 乘法运算
public BigDecimal divide(BigDecimal value) 除法运算
public static void sort(int[] a):按照数字顺序排列指定的数组 升序
public static String toString(int[] a):返回指定数组的内容的字符串表示形式
import java.util.Arrays;
public class Text {
public static void main(String[] args) {
int arr[] = {10,9,8,7,6,5,4,3,2,1,0};
System.out.println(Arrays.toString(arr));// 输出 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
// 升序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));// 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
}
public static Integer valueOf(int i) 返回表示指定的 int 值的 Integer 实例
public static Integer valueOf(String s) 返回保存指定String值的 Integer 对象
拆箱和装箱
装箱: 把基本类型转换为对应的包装类类型---->包装类的构造方法比如Integer.valueOf
静态方法可以实现
拆箱: 把包装类类型转换为对应的基本类型---->包装类的比如 intValue()
非静态方法实现
自动装箱和自动拆箱
自动装箱: 基本类型自动转换为对应的包装类类型---->直接把基本类型的值赋值给对应的包装类类型变量
自动拆箱: 包装类类型自动转换为对应的基本类型---->直接把包装类的对象赋值给对应的基本类型的变量
方式一: 基本类型的数据 + 空的字符串("")
方式二: 字符串的静态方法public static String valueOf(基本类型的值);
通过包装类的静态方法 比如parseInt类型(String s)
得到对应的基本类型—>除了Character包装类之外,所有包装类都有这个方法