4月28日学习总结——,时间获取、StringBuffer

一、时间获取

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 毫秒数

实例代码:
  Date date=new Date();  //实例化时间对象,获取了西方格式的当前系统时间
  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来实例化,系统特有获取对象的方法
//获取年份
c.get(Calendar.YEAR);
//获取月份,西方的时间不同于中国时间,西方月份是从0开始算,所以转换成中国时间时要加1
c.get(Calendar.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.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(),转化为字符串方法
序号 方法描述
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()
返回此序列中数据的字符串表示形式。

猜你喜欢

转载自blog.csdn.net/chenjingqi101/article/details/80170496