一、时间获取
java获取时间的常用方法有:Date类或Calendar类
获取时间的操作:
1.创建时间的对象,获取系统当前的时间
Date date = new Date();
这样我们可以获取当前系统时间,但是输出来的格式为西方时间格式,所以我们需要简单的将它转化为中文时间格式的2018年7月4日,或2018-7-4的格式
这时候就要借用SimpleDateFormat这个类来进行转换,这个类位于java.text中;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
输入我们想要的时间格式的字符串进去,它就会帮我们将date转换成相应的时间格式
其中每个字符都对应有不同的表示意思:
字母 日期或时间元素
y 年 Year
M 年中的月份
D 年中的天数
d 月份中的天数
F 月份中的星期
E 星期中的天数
H 一天中的小时数
k 一天中的小时数
K am/pm 中的小时数
h am/pm 中的小时数
m 小时中的分钟数
s 分钟中的秒数
S 毫秒数
实例代码:
获取时间的操作:
1.创建时间的对象,获取系统当前的时间
Date date = new Date();
这样我们可以获取当前系统时间,但是输出来的格式为西方时间格式,所以我们需要简单的将它转化为中文时间格式的2018年7月4日,或2018-7-4的格式
这时候就要借用SimpleDateFormat这个类来进行转换,这个类位于java.text中;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
输入我们想要的时间格式的字符串进去,它就会帮我们将date转换成相应的时间格式
其中每个字符都对应有不同的表示意思:
字母 日期或时间元素
y 年 Year
M 年中的月份
D 年中的天数
d 月份中的天数
F 月份中的星期
E 星期中的天数
H 一天中的小时数
k 一天中的小时数
K am/pm 中的小时数
h am/pm 中的小时数
m 小时中的分钟数
s 分钟中的秒数
S 毫秒数
实例代码:
Date date=new Date(); //实例化时间对象,获取了西方格式的当前系统时间
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //转化为中国时间格式
String time=sdf.format(date);
System.out.println(time);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //转化为中国时间格式
String time=sdf.format(date);
System.out.println(time);
2.
还有一个可以获取时间的类Calendar类
获取Calendar类的对象的方法
Calendar c = Calendar.getInstance(); 实例化系统的当前时间,因抽象类不可实例化,系统有.getInstance();方法获取对象
获取时间的方法c.get(field);将filed换成对应的时间关键字就可以获取该时间的信息
用日历类calendar
由于是个抽象类,所以它不能直接被new来实例化,系统特有获取对象的方法
由于是个抽象类,所以它不能直接被new来实例化,系统特有获取对象的方法
//获取年份
c.get(Calendar.YEAR);
c.get(Calendar.YEAR);
//获取月份,西方的时间不同于中国时间,西方月份是从0开始算,所以转换成中国时间时要加1
c.get(Calendar.MONTH);
c.get(Calendar.MONTH);
//获取具体日
c.get(Calendar.DAY_OF_MONTH); //这个月的具体日
c.get(Calendar.DAY_OF_MONTH); //这个月的具体日
因日历类Calendar可赋值,用c.set(Calendar.)方法赋值,所以可用来计算时间
实例代码:
c.set(Calendar.YEAR, 2015);
c.set(Calendar.MONTH, 3);
c.set(Calendar.DATE, 6);
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月" +c.get(Calendar.DATE)+"日"+
c.set(Calendar.MONTH, 3);
c.set(Calendar.DATE, 6);
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月" +c.get(Calendar.DATE)+"日"+
c.get(Calendar.WEEK_OF_YEAR)+"周");
二、String类、StringBuffer 和 StringBuilder 类
1.
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
2.
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
总结:
String 长度大小不可变,变了即意味着生成了新的对象
StringBuffer 和 StringBuilder 长度可变
StringBuffer 线程安全 StringBuilder 线程不安全
StringBuilder 速度快
实例代码:
Scanner input=new Scanner(System.in);
System.out.println("请输入数字");
String num=input.next();
StringBuffer sbf=new StringBuffer(num);
System.out.println("请输入追加数字");
String num2=input.next();
sbf.append(num2); //追加的字符 append();方法
System.out.println(sbf.length());
for (int i = sbf.length()-3; i>0; i=i-3) { //从数末开始,每隔3个数插入逗号
sbf.insert(i, ","); //插入方法 .insert();
}
System.out.println(sbf.toString()); // toString(),转化为字符串方法
System.out.println("请输入数字");
String num=input.next();
StringBuffer sbf=new StringBuffer(num);
System.out.println("请输入追加数字");
String num2=input.next();
sbf.append(num2); //追加的字符 append();方法
System.out.println(sbf.length());
for (int i = sbf.length()-3; i>0; i=i-3) { //从数末开始,每隔3个数插入逗号
sbf.insert(i, ","); //插入方法 .insert();
}
System.out.println(sbf.toString()); // toString(),转化为字符串方法
序号 | 方法描述 |
---|---|
1 | public StringBuffer append(String s) 将指定的字符串追加到此字符序列。 |
2 | public StringBuffer reverse() 将此字符序列用其反转形式取代。 |
3 | public delete(int start, int end) 移除此序列的子字符串中的字符。 |
4 | public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。 |
5 | replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。 |
下面的列表里的方法和 String 类的方法类似:
1 | int capacity() 返回当前容量。 |
2 | char charAt(int index) 返回此序列中指定索引处的 char 值 |
3 | void ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。 |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst 。 |
5 | int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。 |
6 | int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 |
7 | int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。 |
8 | int lastIndexOf(String str, int fromIndex) 返回 String 对象中子字符串最后出现的位置。 |
9 | int length() 返回长度(字符数)。 |
10 | void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch 。 |
11 | void setLength(int newLength) 设置字符序列的长度。 |
12 | CharSequence subSequence(int start, int end) 返回一个新的字符序列,该字符序列是此序列的子序列。 |
13 | String substring(int start) 返回一个新的 String ,它包含此字符序列当前所包含的字符子序列。 |
14 | String substring(int start, int end) 返回一个新的 String ,它包含此序列当前所包含的字符子序列。 |
15 | String toString() 返回此序列中数据的字符串表示形式。 |