java学习笔记(day21)
0x00 Calendar类
1.概述
java.util.Calendar类:日历类
Calendar类是一个抽象类,里面提供了很多操作日历字段的方法。
Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象。
static Calendar getInstance() 使用默认失去和语言环境获得一个日历。
2.Calendar类常用的成员方法
- public int get(int field):返回给定日历字段的值。
- public void set(int field,int value):将给定的日历字段设置为给定值。
- public abstract void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- public Date getTime():返回一个表示次Calendar类的静态成员变量获取。
成员方法的参数跟DateFormat相同。
0x01 System类
概述
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。
System类的常用方法
- public static long currentTimeMillis:返回以毫秒为单位的当前时间。
- public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):将数组中指定的数据拷贝到另一个数组中。
练习:public static long currentTimeMillis
该方法可以用来验证程序的效率
验证for循环打印数字1-9999所需要使用的时间(毫秒)
package day21;
public class ForDemo01 {
// 验证for循环打印数字1-9999所需要使用的时间(毫秒)
public static void main(String[] args) {
long s = System.currentTimeMillis();
for (int i = 1; i <=9999 ; i++) {
System.out.println(i);
}
long e = System.currentTimeMillis();
System.out.println("程序总耗时"+(e-s)+"毫秒");
}
}
练习:public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
参数:
src - 源数组
srcPos - 源数组中的起始位置(起始索引)
dest - 目标数组
destPos - 目标数组中的起始位置
length - 要复制的数组元素的数量
将src数组的前三个元素,复制到dest数组的前三个位置上。
src数组{1,2,3,4,5}
dest数组 {5,6,7,8,9}
package day21;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import java.util.Arrays;
public class ArrayDemo02 {
public static void main(String[] args) {
int src[] = {1,2,3,4,5};
int dest[] = {5,6,7,8,9};
System.out.println("复制前的dest数组"+ Arrays.toString(dest));
System.arraycopy(src,0,dest,0,3);
System.out.println("复制后的dest数组"+Arrays.toString(dest));
}
}
0x02 StringBuilder类
String类
字符串是常量;它们的值在创建之后不能更改。
字符串的底层是一个被final修饰的数组,不能改变,是一个常量。
private final byte[] value;
进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下。
StringBuilder类
字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)
底层也是一个数组,但是没有被final修饰,可以改变长度。
byte[] value = new byte[16]
StringBuilder在内存中始终是一个数组,占用空间少,效率高。
如果超出了StringBuilder的容量,会自动的扩容。
常用构造方法
- StringBuilder():构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
- StringBuilder(Sting str):构造一个字符串生成器,并初始化为指定的字符串内容。
代码演示
package day21;
public class StringDemo03 {
public static void main(String[] args) {
StringBuilder bu1 = new StringBuilder();
System.out.println("bu1:"+bu1);
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2:"+bu2);
}
}
常用成员方法
- public StringBuilder oppend(...):添加任意类型数据的字符串形式,并返回当前对象自身。
代码演示
package day21;
public class AppendDemo04 {
public static void main(String[] args) {
StringBuilder bu1 = new StringBuilder();
StringBuilder bu2 = bu1.append("abc");
System.out.println(bu1);
System.out.println(bu2);
System.out.println(bu1 == bu2);
}
}
使用append方法无须接受返回值。
- public String toString():该方法可以让StringBuilder对象转变成String对象
代码演示
package day21;
public class ToStringDemo05 {
public static void main(String[] args) {
String str = "hello";
System.out.println("str:"+str);
StringBuilder bu = new StringBuilder(str);
bu.append("word");
//往StringBuilder里添加数据
System.out.println("bu:"+bu);
//进行转换
String s = bu.toString();
System.out.println("s:"+s);
}
}
StringBuilder和String可以相互转换;
String -> StringBuilder
使用StringBuilder的构造方法。
0x03 包装类
概念:
基本数据类型,使用起来非常方便,但是没有对应的方法来操作这些基本类型的数据。可以使用一个类,把基本类型的数据装起来,在类中定义一些方法,这个类叫做包装类,我们可以使用类中的方法来操作这些基本类型的数据。
装箱和拆箱
装箱:把基本类型的数据,包装到包装类中。(基本类型的数据 -> 包装类)
构造方法:
Integer(int value)构造一个新分配的Integer对象,它表示指定的Int值。
Integer(String s)构造一个新分配的Integer对象,它表示String参数所指示的int值。(传递的字符串必须是基本类型的字符串。)
静态方法:
static Interger valueOf(int i)返回一个表示指定的int值的Integer实例。
static Integer valueOf(String s)返回保存指定String的值的Integer对象。
拆箱:在包装类中取出基本类型的数据(包装类 -> 基本类型的数据)
成员方法:
int intValue() 以 int类型返回该Integer的值。
自动装箱和自动拆箱
基本数据类型的数据和包装类之间可以自动的相互转换
package day21;
public class IngeterDemo06 {
public static void main(String[] args) {
/*
自动装箱:直接把int类型的整数赋值到包装类。
Integer in = 1;相当于Integer in = new Integer(1)
*/
Integer in = 1;
/*
自动拆箱:in是包装类,无法直接参与运算,可以自动转换为基本数据类型,再进行计算。
in + 2;就相当于in.intValue() + 2 = 3 in = in.intValue() + 2 = 3 又是一个自动装箱
*/
in = in + 2;
}
}
基本类型与字符串之间的相互转换
基本类型 -> 字符串
- 基本类型的值+“”
- 包装类的静态方法toString(参数)
- String类的valueOf(参数)
字符串 -> 基本类型
- 包装类的静态方法parseXXX("数值类型的字符串")
Integer类:static int parseInt(String s)
Double类:static double parseDouble(String s)