目录
DateFormat类 & SimpleDateFormat
Object
是类层次结构的根类。每个类都使用
Object
作为超类。所有对象(包括数组)都实现这个类的方法。
toString()
返回该对象的字符串表示。通常,
toString
方法会返回一个“以文本方式表示”此对象的字符串。 此方法不常见于开发,可能在测试时使用结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
package lei;
/**
* @author Lzy
* @creat 2021-02-02-15:16
* getClass().getName() + '@' + Integer.toHexString(hashCode())
* getClass():返回一个字节码对象
* Integer.toHexString():返回指定参数的十六进制字符串形式
* hashCode():返回该对象的哈希码值(内部地址)
*/
public class Object {
public static void main(String[] args) {
Man m = new Man();
System.out.println(m.toString());
System.out.println(m);//输出一个对象默认输出的是对象toString方法
}
}
class Man extends Object {
}
对toString()改写赋值 :
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
package lei;
public class Object {
public static void main(String[] args) {
Man m = new Man();
m.name = "li";
m.age = 20;
System.out.println(m.toString());
System.out.println(m);//输出一个对象默认输出的是对象toString方法
}
}
class Man extends Object {
String name;
int age;
@Override
public String toString() {
return "Man{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
equals()
用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。
在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。
System类
System 类包含一些有用的类字段和方法。它不能被实例化。
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :
从src源数组的srcPos索引开始,复制length个元素
从destPost位置开始将这些元素放至到dest数组中
static long currentTimeMillis()
返回以毫秒为单位的当前时间
static void exit(int status)
终止当前正在运行的 Java 虚拟机
static void gc()
运行垃圾回收器
package Test;
/**
* @author Lzy
* @creat 2021-03-02-13:19
* System:包含一些有用的类字段和方法,它不能实例化
* static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
* static long currentTimeMillis()
* static void exit(int status)
* static void gc()
*/
public class SystemDemo {
public static void main(String[] args) {
// method();
// method2();
// method3();
// method4();
}
private static void method4() {
/* static void gc() 尽可能从丢弃对象中回收空间 通过finalize方法 此方法用处不广泛*/
new Demo();
System.gc();
}
private static void method3() {
/*static void exit(int status): 终止虚拟机 */
for(int i = 0; i < 10000; i++){
System.out.println(i);
if(i == 50) System.exit(0);
}
}
private static void method2() {
/* static long currentTimeMillis():以毫秒返回当前系统时间,用于计算程序运算时间
直接调用的话这个计算时间是相对时间,相对于 1970-1-1 00:00:00
*/
long start =System.currentTimeMillis();
for (int i = 0; i < 1000; i++) System.out.println(i);
long end = System.currentTimeMillis();
System.out.println(end - start);
}
private static void method() {
/* static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
复制数组 参数1:源数组 参数2:源数组的起始索引位置 参数3:目标数组 参数4:目标数组的起始索引位置 参数5:指定接受的元素个数
*/
int[] src = {1,2,3,4,5};
int[] dest = new int[5];
System.arraycopy(src,1,dest,0,4);
for (int i = 0; i < dest.length; i++){
System.out.print(dest[i]);
}
}
static class Demo{
@Override
protected void finalize() throws Throwable {
System.out.println("执行回收");
}
}
}
Date类
void setTime long getTime
package Test;
import java.util.Date;
/**
* @creat 2021-03-05-16:39
* Date的常用方法
* 毫秒值 --- Date 设置 返回值是void 参数long void setTime(long time)
* Date --- Date 获取 返回值long 无参 long getTime()
*/
public class DataDemo {
public static void main(String[] args) {
Date d = new Date();//默认是当前时间
System.out.println(d);//可直接输出格式化时间
System.out.println(d.toLocaleString());//以字符串打印当前获取时间(此方法已过时)
System.out.println(d.getTime());//获取当前时间与相对时间之间的时间间隔(单位:毫秒)
System.out.println("-------------");
d.setTime(1000 * 60 * 60 * 24); //相对于1970-1-1 8:00:00 后移24小时
System.out.println(d.toLocaleString());
}
}
DateFormat类 & SimpleDateFormat
package Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Lzy
* SimpleDateFormat: 格式化 Date -- String 例: 2021-3-5 或 2021年3月5日
* String format(Date date)
* 解析: String -- Date Date parse(String source) 检验构建模式是否符合规范
* 构造方法: SimpleDateFormat():默认的模式进行对象构建
* SimpleDateFormat(String Pattern): 使用指定的模式进行对象构建,参照模式字母表进行选择
*/
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
method1();
System.out.println("----2-----");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 HH:mm:ss");
Date date = new Date();
String s = sdf.format(date);//格式化,日期对象转化 年月日 时分秒
System.out.println(s);
}
private static void method1() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat();//使用默认模式进行对象的构建
Date date = new Date();
//格式化 把日期对象转换成字符串
String s = sdf.format(date);
System.out.println(s);//21-3-5 下午5:59
//解析 把字符串转换成日期对象
Date d = sdf.parse("21-3-5 下午5:59");
System.out.println(d.toLocaleString());
}
}
Calendar类
日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象
package Test;
import java.util.Calendar;
/**
* @author Lzy
* @creat 2021-03-08-8:08
*获取 int get(int field) 返回给定日历字段值 修改 void set(int field, int value) 修改指定字段值
*添加 void add(int field, int amount) 在指定字段加上指定值(可为负数,即减去)
* */
public class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //使用默认时区与语言环境获得日历
c.set(Calendar.YEAR, 2022); //修改年
c.add(Calendar.MONTH, 3); //在月份上做加法
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;//月份是零开始计入的,因此加1
int day = c.get(Calendar.DAY_OF_MONTH);//获得天数为月的第 n 天
int d = c.getFirstDayOfWeek();
System.out.println(year + "年" + month + "月" + day + "日"+ "周" + d);
}
}
包装类
8种基本类型对应的包装类
常用方法
package Test;
/**
* @author Lzy
* @creat 2021-03-08-8:43
* 包装类就是封装了基本数据类型的类,为我们提供了更多复杂的方法和一些变量
* Integer:
* * String --- int 方式1:int intValue() 方式2: static int parseInt(String s)
* *
* int --- String 方式1: + "" 方式2:String toString()
* *
* * 构造方法:
* * Integer(int value)
* * Integer(String s)
*/
public class IntegerDemo {
public static void main(String[] args) {
Integer integer = new Integer("7");
System.out.println(integer);
//第一种String转换int int intValue()
int a = integer.intValue();
System.out.println(a + 3);
//第二种String转换int static int parseInt(String s)
int b = Integer.parseInt("13");
System.out.println(b + 7);
//第一种int转换String 通过加字符串自动转换 此方法较为常用
System.out.println("int转换String");
Integer integer1 = new Integer(30);
//这里可以看到加 "--" 前 完成30+5数值运算 转换为String后 3 + 5 为字符串连接
System.out.println(integer1 + 5 + "--" + 3 + 0);
//第二种int转换String toString()
String s = Integer.toString(40);
System.out.println(s + 0);
//成员方法表示
Integer integer2 = new Integer(50);
System.out.println(integer2 + 0);
//转换前进行的是数值运算 转换后进行的是字符串拼接
String s1 = integer2.toString();
System.out.println(s1 + 0);
}
}
自动装箱和拆箱
在需要的情况下,基本类型与包装类型可以通用。有些时候我们必须使用引用数据类型时,可以传入基本数据类型
自动拆箱:对象转成基本数值
自动装箱:基本数值转成对象
package Test;
import java.util.ArrayList;
public class IntegerDemo1 {
public static void main(String[] args) {
Integer i1 = 10;//自动装箱 相当于 Integer i = new Integer(10);
Integer i2 = 15;
Integer i3 = i1 + i2;
System.out.println(i3);
ArrayList list = new ArrayList();
list.add(5);//自动装箱 相当于 list.add(new Integer(5));
System.out.println(list);
}
}
正则表达式
正则表达式是专门解决字符串规则匹配的工具。正则表达式也是一个字符串,用来定义匹配规则。
参照帮助文档,在Pattern类中有简单的规则定义,可以结合字符串类的方法使用
package Test;
/**
* @author Lzy
* @creat 2021-03-11-19:52
* 校验qq号码 要求必须是5-15位 不能以0开头 必须都是数字
* 正则表达式:就是一套规则,可以用于匹配字符串
* boolean matches(String regex) :判断当前字符串是否匹配指定的正则表达式,如果匹配则返回true,否则返回false
*/
public class RegexDemo {
public static void main(String[] args) {
String qq = "473463";
//正则表达定义中间不能有空格或符号
boolean flag = qq.matches("[1-9][0-9]{4,14}");
System.out.println(flag);
}
}