java学习11

Object类

java.lang.Object类是Java中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object类。
如果一类没有特别指定父类,那么默认继承自Object类。

Object类的toString方法
String toString()
【返回该对象的字符串表示】
【直接打印对象的名字,其实就是在调用对象的toString方法】

注意:
看一个类是否重写了toString方法,直接打印这个对象的名字即可。

如果【没有重写】toString方法,那么打印的就是这个对象的地址值。

如果【重写了】toString方法,那么就按照重写的方式执行。

【Scanner和ArrayList都重写了toString方法】

Object类的equals方法
【指示其他对象是否与此对象“相等”】
public boolean equals(Object obj){
	return (this == obj);
}

【Object obj:可以传递任意的对象】
【 == :比较运算符,返回的是一个布尔值】
【基本数据类型:比较的是值】
【引用数据类型:比较的是两个对象的地址】
【this是调用equals的对象】
【obj是作为参数的对象】

Objects类

在JDK7中添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

Objects类的equals方法
【对两个对象进行比较,防止空指针异常】
public static boolean equals(Object a,Object b){
	return (a == b) || (a != null && a.equals(b));
}

Date类

java.util.Date类,表示日期和时间的类,表示特定的瞬间,精确到毫秒。【一毫秒等于千分之一秒,1000毫秒=1秒】

毫秒值的作用:可以对时间和日期进行计算。把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期。

【时间原点:1970年01月01日 00:00:00 (英国格林威治)】
【中国属于东八区,会把时间增加八小时。1970年01月01日 08:00:00 】

【时间原点到当前时间所经历的毫秒】
System.out.println(System.currentTimeMillis());
Date类的构造方法和成员方法
1. Date类的空参数构造方法
	【获取当前系统的日期和时间】
		Date()
	
2.	Date类的带参构造方法
	【传递毫秒值,把毫秒值转换为Date日期】
		Date(long date)
import java.util.Date;

public class Demo01Date {
	
	public static void main(String[] args) {
		
		//无参
		Date date1 = new Date();
		System.out.println(date1);//Sun Dec 06 16:37:29 CST 2020
		
		//有参
		Date date2 = new Date(0L);
		System.out.println(date2);//Thu Jan 01 08:00:00 CST 1970
		
	}

}
成员方法
【返回自1970年1月1日 00:00:00 GMT以来此Date对象所表示的毫秒数】
【把日期转换为毫秒,相当于System.currentTimeMillis()】
	long getTime()
Date date = new Date();
long time = date.getTime();
System.out.println(time);//1607248255655

DateFormat类

java.text.DateFormat类是日期/时间格式化子类的抽象类,通过这个类可以帮助我们完成日期和文本之间的转换,也就是可以在Date对象和String对象之间进行来回转换。

格式化:按照指定的格式,从Date对象转换为String对象。
解析:按照指定格式,从String对象转换为Date对象。

DateFormat是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类

	java.text.SimpleDateFormat extends DateFormat

构造方法
【用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat】
	
	SimpleDateFormat(String pattern)
	
	【参数:String pattern 传递指定的模式】
	【模式:区分大小写】
	
【写对应的模式会把模式替换为对应的日期和时间】
	yyyy-MM-dd HH:mm:ss
	【模式中的字母不能更改,但是连接模式的符号可以改变】

成员方法

1.【格式化】
	String format(Date date)
		使用步骤:
		1.创建SimpleDateFormat对象,构造方法中传递指定的模式
		2.调用SimpleDateFormat对象中的format方法,按照构造方法中指定的模式,把Date日期转化为符合模式的字符串(文本)

2.【解析】
	Date parse(String source)
		使用步骤:
			1.创建SimpleDateFormat对象,构造方法中传递指定的模式
			2.调用SimpleDateFormat对象中的parse方法,把符合构造方法中模式的字符串,解析为Date日期
		【注意】
			public Date parse(String source) throws parseException
			parse方法声明了一个异常叫做parseException
			如果字符串的模式和构造方法的模式不一样,那么程序就会抛出此异常
			调用一个抛出异常的方法,就必须处理这个异常,要么throw继续抛出这个异常,要么try catch自己处理
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormat {
	
	public static void main(String[] args) throws ParseException {
		
		//使用format方法
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date1 = new Date();
		String d1 = sdf1.format(date1);
		System.out.println(d1);//2020-12-06 19:00:34
		
		//使用parse方法
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date2 = sdf2.parse("2020-12-06 18:27:26");
		System.out.println(date2);//Sun Dec 06 18:27:26 CST 2020
		
	}

}
标识字母(区分大小写)含义
y
M
d
H
m
s

Calendar类

java.util.Calendar 日历类

Calendar类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)

Calendar类无法直接创建对象使用,里面有一个静态方法叫getInstance(),该方法返回了Calendar对象的子类对象。

static Calendar getInstance()
【使用默认时区和语言获得一个日历】
import java.util.Calendar;

public class Demo04Calendar {
	
	public static void main(String[] args) {
		
		Calendar c = Calendar.getInstance();//多态,父类接收子类对象
		System.out.println(c);
		
	}

}
Calendar类的常用成员方法
1.public int get(int field)
	【返回给定日历字段的值】

2.public void set(int field,int value)
	【将给定的日历字段设置为给定值】
	【参数:int value ,给指定字段设置的值】

3.public abstract void add(int field,int amount)
	【根据日历的规则,为给定的日历字段添加或减去指定的时间量】
	【参数:int amount ,增加/减少指定的值,正数时增加,负数时减少】

4.public Date getTime()
	【返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象】
	【把日历对象转换为日期对象】

成员方法的参数
	int field:日历类的字段,可以使用Calendar类的静态成员变量获取
		public static final int YEAR = 1;//年
		public static final int MONTH = 1;//月
		public static final int DATE = 1;//月中的某一天
		public static final int DAY_OF_MONTH = 1;//月中的某一天
		public static final int HOUR = 1;//时
		public static final int MINUTE = 1;//分
		public static final int SECOND = 1;//秒
import java.util.Calendar;
import java.util.Date;

public class Demo05CalendarMethod {
	
	public static void main(String[] args) {
		
		getMethod();//2020
		
		setMethod();//2000
		
		addMethod();//2021
		
		getTimeMethod();//Sun Dec 06 20:56:40 CST 2020
		
	}
	
	//public int get(int field)返回给定日历字段的值
	public static void getMethod() {
		//使用getInstance创建一个Calendar类对象
		Calendar c = Calendar.getInstance();
		int year = c.get(Calendar.YEAR);
		System.out.println(year);
	}
	
	//public int set(int field,int value)将给定的日历字段设置为给定值
	public static void setMethod() {
		//使用getInstance创建一个Calendar类对象
		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, 2000);
		
		c.set(2000, 0, 5);//同时设置年月日,set方法的重载
		
		int year = c.get(Calendar.YEAR);
		System.out.println(year);
//		int month = c.get(Calendar.MONTH);
//		System.out.println(month);
//		int date = c.get(Calendar.DAY_OF_MONTH);
//		System.out.println(date);
		
	}
	
	//public abstract void add(int field,int amount)根据日历的规则为给定日历字段添加或减去指定时间量
	public static void addMethod() {
		//使用getInstance创建一个Calendar类对象
		Calendar c = Calendar.getInstance();
		c.add(Calendar.YEAR, 1);//把年增加一年
		
		int year = c.get(Calendar.YEAR);
		System.out.println(year);
	}
	
	//public Date getTime()将日历对象转换为日期对象
	public static void getTimeMethod() {
		//使用getInstance创建一个Calendar类对象
		Calendar c = Calendar.getInstance();
		Date date = c.getTime();
		System.out.println(date);
	}

}

System类

java.lang.System类提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。

System类的常用方法
1.public static long currentTimeMillis()
	【返回以毫秒为单位的当前时间】
	【可以用于测试程序效率】

2.public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
	【将数组中指定的数据拷贝到另一个数组中】
		参数:
			src - 源数组
			srcPos - 源数组中的起始位置
			dest - 目标数组
			destPos - 目标数组中的起始位置
			length - 要复制的数组元素的数量
import java.util.Arrays;

public class Demo06System {
	
	public static void main(String[] args) {
		demo1();//耗时155毫秒
		
		demo2();
		/*
		 * 复制前:[6, 7, 8, 9, 10]
		 * 复制后:[1, 2, 3, 9, 10]
		 */
	}

	/*
	 * 将src数组前三个元素,复制到dest数组前三个位置上
	 * 复制前:src:[1,2,3,4,5] dest:[6,7,8,9,10]
	 * 复制后:src:[1,2,3,4,5] dest:[1,2,3,9,10]
	 */
	private static void demo2() {
		//定义源数组
		int[] src = {1,2,3,4,5};
		//定义目标数组
		int[] dest = {6,7,8,9,10};
		System.out.println("复制前:" + Arrays.toString(dest));
		
		System.arraycopy(src, 0, dest, 0, 3);
		System.out.println("复制后:" + Arrays.toString(dest));
	}

	//验证for循环打印数字1-9999需要耗费的时间
	private static void demo1() {
		//在执行前获取一次时间
		long startTime = System.currentTimeMillis();
		
		for(int i = 1; i <= 9999; i++) {
			System.out.println(i);
		}
		
		//在循环结束后获取一次时间
		long endTime = System.currentTimeMillis();
		
		System.out.println("耗时" + (endTime - startTime) + "毫秒");
		
	}

}

字符串是常量,它的值在创建之后不能改变

字符串底层是一个被final修饰的数组,不可改变是一个常量。

进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下。

StringBuilder类

java.lang.StringBuilder类,字符串缓冲区,可以提高字符串操作的效率(看成一个长度可以变化的字符串)

底层是一个数组,但是未被final修饰,可以改变长度。

StringBuilder在内存中始终是一个数组,占用空间少,效率高。

如果超出了StringBuilder的容量,会自动扩容。

StringBuilder的构造方法
1.StringBuilder()
	【构造一个不带任何字符的字符串生成器,起初容量为16个字符】

2.StringBuilder(String str)
	【构造一个字符串生成器,并初始化为指定字符串】
public class Demo01StringBuilder {
	
	public static void main(String[] args) {
		
		//空参构造函数
		StringBuilder s1 = new StringBuilder();
		System.out.println("s1:"+s1);//s1:
		
		//带参构造函数
		StringBuilder s2 = new StringBuilder("aaa");
		System.out.println("s2:"+s2);//s2:aaa
		
	}

}

StringBuilder的常用成员方法
public StringBuilder append(...)
	【添加任意类型数据的字符串形式,并返回当前对象本身(this)】
public class Demo02StringBuilder {
	
	public static void main(String[] args) {
		
		StringBuilder s = new StringBuilder();
		s.append(1).append(3).append("周");
		System.out.println(s);//13周
		
	}

}
public String toString()
	【将当前StringBuilder对象转化为String对象】

StringBuilder和String相互转换

String转换为StringBuilder可以使用StringBuilder的构造方法StringBuilder(String str)
StringBuilder转换为String可以使用StringBuilder中的toString方法

public class Demo03StringBuilder {
	
	public static void main(String[] args) {
		
		String s1 = "hello";
		System.out.println("s1:"+s1);//s1:hello
		
		//String -> StringBuilder
		StringBuilder stb = new StringBuilder(s1);
		stb.append(" world");
		System.out.println("stb:"+stb);//stb:hello world
		
		//StringBuilder -> String
		String s2 = stb.toString();
		System.out.println("s2:"+s2);//s2:hello world
		
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值