java语言 百文网手机站

Java中日期与字符串的处理

时间:2021-03-28 11:00:32 java语言 我要投稿

Java中日期与字符串的处理

  Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,下面为大家介绍一下Java中日期与字符串的处理,一起来看看!

  日期相关的API

  java.util.Date 类,是一个日期类,含年、月、日、时、分、秒信息。

  构造方法:

  public Date(); 空参构造,得到当前系统时间的日期。

  public Date(long date); //根据指定的毫秒数来构造一个日期。

  java.util.Calendar 类,是一个日历类。它包含 日期的所有信息.

  方法:

  public static Calendar getInstance();

  public int get(int field);

  public void set(int field, int value);

  public void setTime(Date date);

  public Date getTime();

  还有大量的常量,这些常量就是 field的值.

  YEAR,MONTH, DATE,DAY_OF_MONTH, DAY_OF_WEEK. ....

  java.text.SimpleDateFormat类,日期格式器类[上一讲提到过]

  构造方法:

  public SimpleDateFormat(String pattern).

  注:pattern是指格式化日期的字符串。

  yyyy 代全4位数字年份

  MM 代表2位数字月份

  dd 代表2位数字月日

  ...

  有关pattern的细节,可以查看API文档。

  如,我们可以构造一个SimpleDateFormate对象.

  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

  常用方法:

  public String format(Date date); //格式化日期.

  public Date parse(String dateStr); //把字符串转成日期

  在JAVA中,时间就指至1970年1月1日午夜至现在所经过的毫秒数.它是一个长整型的数。

  如何获取这个长整型?

  long t = System.currentTimeMillils();

  针对日期的操作,可以封装一个工具类,用来创建日期、格式化日期或是解析日期字符串等。

  如:

  public class DateUtil{

  public static Date create(int y,int m, int d){

  return create(y,m,d,0,0,0);

  }

  public static Date create(int y,int m, int d, int h, int minute,int second){

  //创建日历对象

  Calendar c = Calendar.getInstance();

  //绑定全新日期与时间

  c.set(Calendar.Year,y);

  ...

  c.set(Calendar.SECOND, second);

  //返回一个日期

  return c.getTime();

  }

  public static String format(Date d){

  final String pattern = "yyyy-MM-dd";

  return format(d,pattern);

  }

  public static String format(Date d, String pattern){

  SimpleDateFormat sdf = new SimpleDateFormat(pattern);

  return sdf.format(d);

  }

  ...

  }

  String类的特点:

  a).它是不可变的`,一旦创建好,就不可再变。

  b).底层就是字符数组.

  c).由于字符串是编程中操作最频繁的数据,所以,JVM针对字符串做了优化处理。提供了 “串池”,如下: ["串池" 也是堆空间。]

  创建字符串的2种方式:

  方式一: 采用“串池”存放.

  String str = "Jack";

  String str2 = "Jack";

  因为创建第一个str时,由于串池中没有"Jack"这个字符串,所以,在串池中创建了Jack,而当第二个对象str2创建时,此时,串池是已经有了Jack,所以,直接返回Jack的地址给str2.这样的话,串池中只有1个Jack. 大大降低资源的占有率,从而提高效率。

  所以:

  System.out.println(str == str2); //此时会输出 true

  方式二:

  String str = new String("Jack");

  String str2 = new String("Jack");

  以上方式采用new操作符,会在堆空间中申请2块空间,来分别存放Jack 数据。所以:

  System.out.println(str == str2); //此时会输出 false

  所以,建议创建字符串对象时,都采用方式一(串池的方式)

  String str = "Hello";

  str = str + "World"; //会产生临时对象,占用更多的空间(资源)

  为了改进字符串拼接效率较低的情况,API中提供了StringBuilder 和 StringBuffer 两个来做字符串的拼接操作。它们的效是非常高的。

  java.lang.StringBuilder

  构造方法:

  public StringBuilder();

  public StringBuilder(String str);

  其它方法:

  public StringBuilder append(String str);

  public String toString();

  StringBuilder与StringBuffer的区别:

  StringBuffer是多线程安全的,是重量级的。

  StringBuilder不是线程安全的,是轻量级的。

  所以,在非多线程环境下,使用StringBuilder。

  字符串类型相关类与接口:

  接口:java.lang.CharSequence

  方法:

  charAt(int index);

  int length();

  String toString();

  实现类:

  java.lang.String

  java.lang.StringBuilder

  java.lang.StringBuffer

  String相关操作方法:

  查询字符序列的方法:

  indexOf(String str);

  indexOf(String str, int fromIndex);

  lastIndexOf(String str);

  lastIndexOf(String str, int fromIndex);

  startsWith(String str);

  endsWith(String str);

  contains(String str);

  求子串的方法:

  subString(int start, int end); 含start,不含end

  subString(int start); //从start至结尾

  其它方法

  concat(String str);

  trim(); //去掉前后的空白字符

  isEmpty(); 当length()方法0时,为true

  replace(String oldStr,String newStr);

  replace(char oldChar, char newChar);

  split(String pattern); //把字符串按给定的字符切割。

  getBytes(); //把字符串 编码 成字节数组

  toCharArray(); //把字符串转换成新的字符数组


【Java中日期与字符串的处理】相关文章:

关于基于Java字符串==与 equals11-24

Java字符串(String)09-27

Java 异常处理09-27

java学习之日期的运算代码11-30

Java中同步与并发的运用12-01

Java中定义与声明的区别10-05

java常用字符串介绍12-06

全面理解java中的异常处理机制精选11-23

java中extends与implements区别11-29

Java中Number 与 Math 类10-03