Java学习笔记day12

常用类

Object

所有类的父类
	意味着: 
		1.所有类的对象都可以转换为Object类的对象
		2.Object提供的方法是所有对象都有的方法
提供的方法: 
	getClass(): 获取类对象
	hashCode(): 获取对象的哈希码值
		如果不重写该方法,可以理解为该值就是对象在堆内存中的地址
	toString(): 将对象转换为字符串
		注意: 使用sout打印对象时,默认调用对象的toString方法
	equals(): 比较是否相同
		注意: Object提供的方法是比较对象的内存地址是否相同
		重写步骤
			作用: 判断对象的属性值是否相同
			1.判断两个对象的内存地址是否相同
				如果相同,那么两个对象是同一个对象,所有属性值也相同
			2.判断传入的对象与调用equals方法的对象是否为同一个类的对象
				如果是同一个类的对象
					将传入的对象转换为该类对象
					使用转换后的对象的属性与调用equals方法的对象的属性一一对比
					如果属性值都相同,那么认为是相同的
			3.返回不相同
	finalize(): 对象被回收时,由系统调用
	
	线程间通讯
		notify()
		notifyAll()
		wait()
		wait(timeout)
		wait(timeout, nanos)
package demo01;

public class Person {
	private String name;
	private String sex;
	private int age;
	public Person() {
		super();
	}
	public Person(String name, String sex, int age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}
	
	@Override
	public boolean equals(Object obj) {
		if(this == obj) {
			return true;
		}
		if(obj instanceof Person) {
			Person p = (Person)obj;
			if(this.name.equals(p.name) && this.sex.equals(p.sex) && this.age == p.age) {
				return true;
			}
		}
		return false;
	}
}

package demo01;

public class Test {
	public static void main(String[] args) {
		Person p1 = new Person("张三", "男", 18);
		Person p2 = new Person("张三", "男", 18);
		System.out.println(p1.equals(p2));		
	}
}

运行结果

字符串相关

不可变字符串: String

常用的方法: 
	charAt(index): 获取字符串指定位置的字符
	length(): 获取字符串长度
	indexOf(子字符串): 获取子字符串在字符串中出现的位置,如果没有返回-1
	lastIndexOf(子字符串): 获取子字符串在字符串中最后一次出现的位置,如果没有返回-1
	contains(子字符串): 判断子字符串是否存在
	equals(字符串): 判断字符串内容是否相同,区分大小写
	equalsIgnoreCase(字符串): 判断字符串内容是否相同,不区分大小写
	toUpperCase(): 将字符串转换为大写
	toLowerCase(): 将字符串转换为小写
	endsWith(子字符串): 判断字符串是否以子字符串结束
	startsWith(子字符串): 判断字符串是否以子字符串开始
	
	split(子字符串): 将字符串切割
	substring(开始位置,结束位置): 截取
		注意: 包含开始位置,不包含结束位置
	replace(oldStr, newStr): 替换
	
	isEmpty(): 判断字符串是否为空字符串
	trim(): 删除字符串前后空白
	+: 字符串连接符

可变字符串: StringBuffer, StringBuilder

StringBuffer: 
	线程安全的
	JDK1.0
	效率低
	
StringBuilder: 
	线程不安全的
	JDK1.5
	效率高
	
方法: 
	append(被添加的字符串): 添加到尾部
	delete(start, end): 删除指定位置的字符串
	insert(index, 添加的字符串): 指定位置添加字符串

注意

	不建议使用不可变字符串(String)对其进行大量的修改,如果非要对其进行大量修改,请使用可变字符串
package demo02;

public class Test01 {
	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer();
//		StringBuilder sb = new StringBuilder();
		System.out.println("添加前: " + sb);
		sb.append("123");
		System.out.println("添加后: " + sb);
		sb.delete(0, 2);
		System.out.println("删除后: " + sb);
		sb.insert(1, "你好");
		System.out.println("插入后: " + sb);
	}
}

运行结果

package demo02;

public class Test02 {
	public static void main(String[] args) {
		//将不可变字符串转换为可变字符串
		String str = "java";
//		StringBuffer sb = new StringBuffer(str);
		StringBuilder sb = new StringBuilder(str);
		System.out.println(sb);
		
		//将可变字符串转换为不可变字符串
		String strs = sb.toString();
		System.out.println(strs);
	}
}

运行结果

BigDecimal

作用: 精准计算
注意: 创建该对象时,传入字符串
常用方法: 
	subtract: 减
	add: 加
	multiply: 乘
	divide: 除
	xxxValue: 将BigDecimal对象转换成指定的基本数据类型的值
		如: doubleValue()
package demo02;

import java.math.BigDecimal;

public class Test03 {
	public static void main(String[] args) {
//		double money01 = 0.1;
//		double money02 = 0.01;
//		System.out.println(money01 - money02); //0.09000000000000001
		
		BigDecimal money01 = new BigDecimal(0.1 + "");
		BigDecimal money02 = new BigDecimal(0.01 + "");
//		BigDecimal money03 = money01.subtract(money02); //0.09
//		BigDecimal money03 = money01.add(money02); //0.11
//		BigDecimal money03 = money01.multiply(money02); //0.001
		BigDecimal money03 = money01.divide(money02);
		System.out.println(money03);
		double d = money03.doubleValue();
		System.out.println(d);
	}
}

运行结果

时间相关

Date

概念: 时间

构造函数: 
	Date(): 获取当前系统时间
	Date(long time): 获取距离1970年1月1日00:00:00(格林威治时间)time毫秒的时间
	
方法: 
	getTime(): 获取该对象对应的时间距离1970年1月1日00:00:00的时间差
	d1.after(Date d2): 判断d1是否在d2之后
	d1.before(Date d2): 判断d1是否在d2之前
package demo02;

import java.util.Date;

public class Test04 {
	public static void main(String[] args) {
		//获取当前系统时间
		Date date = new Date();
		System.out.println(date);
		//获取距离1970年1月1日00:00:00(格林威治时间)1000毫秒的时间
		Date date2 = new Date(1000L);
		System.out.println(date2);
		
		//获取当前时间距离1970年1月1日00:00:00(格林威治时间)的毫秒值
		long time = date.getTime();
		System.out.println(time);
		
		Date date3 = new Date(time - 1000 * 60);
		//判断date对应的时间是不是在date3之后
		boolean b = date.after(date3);
		System.out.println(b);
		//判断date对应的时间是不是在date3之前
		b = date.before(date3);
		System.out.println(b);
	}
}

运行结果

Calendar

概念: 日历

常用方法: 
	static getInstance(): 获取Calendar的对象
	set(int field, int value): 修改
		field: 表示要修改什么
			Calendar.YEAR: 年
			Calendar.MONTH: 月
			Calendar.DAY_OF_MONTH: 日
			Calendar.HOUR_OF_DAY: 小时
			Calendar.MINUTE: 分钟
			Calendar.SECOND: 秒
			Calendar.MILLISECOND: 毫秒
	get(int field): 获取
	getTime(): 将Calendar对象转换为Date对象
package demo02;

import java.util.Calendar;
import java.util.Date;

public class Test05 {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		
		calendar.set(Calendar.YEAR, 2000); //修改年
		calendar.set(Calendar.MONTH, 3); //修改月
		calendar.set(Calendar.DAY_OF_MONTH, 1); //修改日
		calendar.set(Calendar.HOUR_OF_DAY, 13); //修改小时
		calendar.set(Calendar.MINUTE, 14); //修改分钟
		calendar.set(Calendar.SECOND, 52); //修改秒
		calendar.set(Calendar.MILLISECOND, 520); //修改毫秒
		
		System.out.println(calendar);
		int i = calendar.get(Calendar.MILLISECOND); //获取当前时间的毫秒值
		System.out.println(i);
		//将Calendar对象转换为Date对象
		Date date = calendar.getTime();
		System.out.println(date);
	}
}

运行结果

SimpleDateFormat

概念: 时间日期格式化
作用: 
	将Date对象转换为指定格式的字符串
	或
	将指定格式的字符串转换为Date对象
注意: 
	y: 年
	M: 月
	d: 日
	h: 12小时制
	H: 24小时制
	m: 分钟
	s: 秒
	S: 毫秒
	
构造函数: 
	SimpleDateFormat(String pattern)
		pattern: 时间格式
			如: yyyy/MM/dd HH:mm:ss:SSS
常用的方法: 
	format(Date date): 将Date对象转换为指定格式的字符串
	parse(String str): 将指定格式的字符串转换为Date对象
package demo02;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test06 {
	public static void main(String[] args) throws ParseException {
		Date date = new Date();
		System.out.println(date);
		//2022年10月10日 20:26:12
		/**
		 * y: 年
		 * M: 月
		 * d: 日
		 * H: 小时	(24小时制)
		 * h: 小时	(12小时制)
		 * m: 分钟
		 * s: 秒
		 * S: 毫秒
		 */
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		//将date对象转换为特定格式的字符串
		String str = sdf.format(date);
		System.out.println(str);
		
		String time = "2000年1月1日 8:00:00";
		//将特定格式的字符串转换为Date对象
		Date date2 = sdf.parse(time);
		System.out.println(date2);
	}
}

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值