JAVA学习记录(一)——Number\Character\String\数组\Date\Calendar\GregorianCalendar

    • jdk环境配置
    • Java Number类
      • 装箱拆箱
      • Number类的成员方法
    • Java Character类
      • 简介
      • Character 方法
    • Java String类
      • 创建字符串
      • 字符串长度length
      • 连接字符串
      • 创建格式化字符串
      • String 方法
    • Java StringBuffer和StringBuilder类
      • StringBuffer 方法
    • Java 数组
      • 声明数组变量
      • 创建数组
      • 遍历数组
        • for
      • foreach
      • Arrays 类
    • Java日期时间
      • Date

        • 构造函数
        • 日期方法
        • 获取当前日期时间
        • 日期比较
        • 使用SimpleDateFormat格式化日期
        • 简单的DateFormat格式化编码
        • 使用printf格式化日期
        • 日期和时间转换字符
        • 日期和时间转换字符
      • Calendar类
        • 简介
        • 创建一个代表系统当前日期的Calendar对象
        • 创建一个指定日期的Calendar对象
        • Calendar类对象字段类型
        • Calendar类对象信息的设置
          • Set设置
          • Add设置
        • Calendar类对象信息的获得
      • GregorianCalendar类
        • 构造函数
        • GregorianCalendar类方法
        • 实例

jdk环境配置

(1)在”系统变量”中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击”编辑”,不存在则点击”新建”。

变量设置

变量名:JAVA_HOME

变量值:C:\Program Files\Java\jdk1.7.0

//这里是你JDK的安装路径,可以更换

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个”.”

变量名:Path

变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

这是java的环境配置,配置完成后直接启动eclipse,它会自动完成java环境的配置。

(2)测试JDK是否安装成功

1、”开始”->;”运行”,键入”cmd”;

2、键入命令”java -version”,”java”,”javac”几个命令

Java Number类

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double等。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java语言为每一个内置数据类型提供了对应的包装类。

所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类。

这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number类属于java.lang包。

装箱拆箱

下面是一个装箱与拆箱的例子:

public class Test{

   public static void main(String args[]){
      Integer x = 5; // boxes int to an Integer object
      x =  x + 10;   // unboxes the Integer to a int
      System.out.println(x);
   }
}

Number类的成员方法

序号  方法与描述
1   xxxValue()
将number对象转换为xxx数据类型的值并返回。
2   compareTo()
将number对象与参数比较。
3   equals()
判断number对象是否与参数相等。
4   valueOf()
返回一个Integer对象指定的内置数据类型
5   toString()
以字符串形式返回值。
6   parseInt()
将字符串解析为int类型。
7   abs()
返回参数的绝对值。
8   ceil()
对整形变量向左取整,返回类型为double型。
9   floor()
对整型变量向右取整。返回类型为double类型。
10  rint()
返回与参数最接近的整数。返回类型为double。
11  round()
返回一个最接近的int、long型值。
12  min()
返回两个参数中的最小值。
13  max()
返回两个参数中的最大值。
14  exp()
返回自然数底数e的参数次方。
15  log()
返回参数的自然数底数的对数值。
16  pow()
返回第一个参数的第二个参数次方。
17  sqrt()
求参数的算术平方根。
18  sin()
求指定double类型参数的正弦值。
19  cos()
求指定double类型参数的余弦值。
20  tan()
求指定double类型参数的正切值。
21  asin()
求指定double类型参数的反正弦值。
22  acos()
求指定double类型参数的反余弦值。
23  atan()
求指定double类型参数的反正切值。
24  atan2()
将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。
25  toDegrees()
将参数转化为角度。
26  toRadians()
将角度转换为弧度。
27  random()
返回一个随机数。

Java Character类

简介

使用字符时,我们通常使用的是内置数据类型char。

char ch = ‘a‘;

// Unicode for uppercase Greek omega character
char uniChar = ‘\u039A‘;

// 字符数组
char[] charArray ={ ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘ };

在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象,例如:

Character ch = new Character(‘a‘);

在某些情况下,Java编译器会自动创建一个Character对象。

例如,将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。

// Here following primitive char ‘a‘
// is boxed into the Character object ch
Character ch = ‘a‘;

// Here primitive ‘x‘ is boxed for method test,
// return is unboxed to char ‘c‘
char c = test(‘x‘);

Character 方法

序号  方法与描述
1   isLetter()
是否是一个字母
2   isDigit()
是否是一个数字字符
3   isWhitespace()
是否一个空格
4   isUpperCase()
是否是大写字母
5   isLowerCase()
是否是小写字母
6   toUpperCase()
指定字母的大写形式
7   toLowerCase()
指定字母的小写形式
8   toString()
返回字符的字符串形式,字符串的长度仅为1

Java String类

字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。

创建字符串

(1)最简单的方式:

String greeting = "Hello world!";

(2)String类有11种构造方法,这些方法提供不同的参数来初始化字符串,比如提供一个字符数组参数:

public class StringDemo{

   public static void main(String args[]){
      char[] helloArray = { ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘.‘};
      String helloString = new String(helloArray);
      System.out.println( helloString );
   }
}

(3)String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。 如果需要对字符串做很多修改,那么应该选择使用StringBuffer & StringBuilder 类。

字符串长度——length()

连接字符串

String类提供了连接两个字符串的方法:

(1)concat()

string1.concat(string2);

返回string2连接string1的新字符串。也可以对字符串常量使用concat()方法,如:

"My name is ".concat("Zara");

(2)使用’+’操作符来连接字符串

"Hello," + " world" + "!"
public class StringDemo {
   public static void main(String args[]) {
   String string1 = "saw I was ";
   System.out.println("Dot " + string1 + "Tod");
}
}

创建格式化字符串

输出格式化数字可以使用printf()和format()方法。String类使用静态方法format()返回一个String对象而不是PrintStream对象。

String类的静态方法format()能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。如下所示:

System.out.printf("The value of the float variable is " +
                  "%f, while the value of the integer " +
                  "variable is %d, and the string " +
                  "is %s", floatVar, intVar, stringVar);
String fs;
fs = String.format("The value of the float variable is " +
                   "%f, while the value of the integer " +
                   "variable is %d, and the string " +
                   "is %s", floatVar, intVar, stringVar);
System.out.println(fs);

String 方法

1   char charAt(int index)
返回指定索引处的 char 值。
2   int compareTo(Object o)
把这个字符串和另一个对象比较。
3   int compareTo(String anotherString)
按字典顺序比较两个字符串。
4   int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。
5   String concat(String str)
将指定字符串连接到此字符串的结尾。
6   boolean contentEquals(StringBuffer sb)
当且仅当字符串与指定的StringButter有相同顺序的字符时候返回真。
7   static String copyValueOf(char[] data)
返回指定数组中表示该字符序列的 String。
8   static String copyValueOf(char[] data, int offset, int count)
返回指定数组中表示该字符序列的 String。
9   boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
10  boolean equals(Object anObject)
将此字符串与指定的对象比较。
11  boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
12  byte[] getBytes()
 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
13  byte[] getBytes(String charsetName)
使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
14  void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此字符串复制到目标字符数组。
15  int hashCode()
返回此字符串的哈希码。
16  int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
17  int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
18  int indexOf(String str)
 返回指定子字符串在此字符串中第一次出现处的索引。
19  int indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
20  String intern()
 返回字符串对象的规范化表示形式。
21  int lastIndexOf(int ch)
 返回指定字符在此字符串中最后一次出现处的索引。
22  int lastIndexOf(int ch, int fromIndex)
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
23  int lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。
24  int lastIndexOf(String str, int fromIndex)
 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
25  int length()
返回此字符串的长度。
26  boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式。
27  boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
28  boolean regionMatches(int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
29  String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
30  String replaceAll(String regex, String replacement
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
31  String replaceFirst(String regex, String replacement)
 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
32  String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
33  String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。
34  boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。
35  boolean startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
36  CharSequence subSequence(int beginIndex, int endIndex)
 返回一个新的字符序列,它是此序列的一个子序列。
37  String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
38  String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
39  char[] toCharArray()
将此字符串转换为一个新的字符数组。
40  String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
41  String toLowerCase(Locale locale)
 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
42  String toString()
 返回此对象本身(它已经是一个字符串!)。
43  String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
44  String toUpperCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
45  String trim()
返回字符串的副本,忽略前导空白和尾部空白。
46  static String valueOf(primitive data type x)
返回给定data type类型x参数的字符串表示形式。

Java StringBuffer和StringBuilder类

当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。

和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问)。

由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用StringBuffer类。

StringBuffer 方法

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)
返回最后一次出现的指定子字符串在此字符串中的索引。
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()
返回此序列中数据的字符串表示形式。

Java 数组

Java语言中提供的数组是用来存储固定大小的同类型元素。

声明数组变量

dataType[] arrayRefVar;   // 首选的方法

或

dataType arrayRefVar[];  // 效果相同,但不是首选方法

建议使用dataType[] arrayRefVar 的声明风格声明数组变量。 dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序园能够快速理解java语言。

创建数组

(1)Java语言使用new操作符来创建数组,语法如下:

arrayRefVar = new dataType[arraySize];

上面的语法语句做了两件事:

一、使用dataType[arraySize]创建了一个数组。

二、把新创建的数组的引用赋值给变量 arrayRefVar。

(2)数组变量的声明,和创建数组可以用一条语句完成

dataType[] arrayRefVar = new dataType[arraySize];

(3)你还可以使用如下的方式创建数组

dataType[] arrayRefVar = {value0, value1, ..., valuek};

数组的元素是通过索引访问的。数组索引从0开始,所以索引值从0到arrayRefVar.length-1。

遍历数组

for

// 打印所有数组元素
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }

建议:不要直接用myList.length,这样每一次循环都需要计算一次,直接考虑给变量赋值数组长度。

foreach

JDK 1.5 引进了一种新的循环类型,被称为foreach循环或者加强型循环,它能在不使用下标的情况下遍历数组。

// 打印所有数组元素
for (double element: myList) {
     System.out.println(element);
}

Arrays 类

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:

给数组赋值:通过fill方法。

对数组排序:通过sort方法,按升序。

比较数组:通过equals方法比较数组中元素值是否相等。

查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

1   public static int binarySearch(Object[] a, Object key)
用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
2   public static boolean equals(long[] a, long[] a2)
如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
3   public static void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
4   public static void sort(Object[] a)
对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

Java日期时间

Date

构造函数

第一个构造函数使用当前日期和时间来初始化对象。
Date( )

第二个构造函数接收一个参数,该参数是从1970年1月1日起的微秒数。
Date(long millisec)

日期方法

1   boolean after(Date date)
若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
2   boolean before(Date date)
若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
3   Object clone( )
返回此对象的副本。
4   int compareTo(Date date)
比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
5   int compareTo(Object obj)
若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
6   boolean equals(Object date)
当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
7   long getTime( )
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
8   int hashCode( )
 返回此对象的哈希码值。
9   void setTime(long time)

用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
10  String toString( )
转换Date对象为String表示形式,并返回该字符串。

获取当前日期时间

Java中获取当前日期和时间很简单,使用Date对象的 toString()方法来打印当前日期和时间

import java.util.Date;

public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();

       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}

结果:Mon May 04 09:51:52 CDT 2013

日期比较

三种方法:

  • 使用getTime( ) 方法获取两个日期(自1970年1月1日经历的微妙数值),然后比较这两个值。
  • 使用方法before(),after()和equals()。例如,一个月的12号比18号早,则new Date(99, 2, 12).before(new Date (99, 2, 18))返回true。
  • 使用compareTo()方法,它是由Comparable接口定义的,Date类实现了这个接口。

使用SimpleDateFormat格式化日期

SimpleDateFormat是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat允许你选择任何用户自定义日期时间格式来运行。

import java.util.*;
import java.text.*;

public class DateDemo {
   public static void main(String args[]) {

      Date dNow = new Date( );
      SimpleDateFormat ft =
      new SimpleDateFormat ("E yyyy.MM.dd ‘at‘ hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

运行结果:Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

简单的DateFormat格式化编码

使用printf格式化日期

(1)printf方法可以很轻松地格式化时间和日期。使用两个字母格式,它以t开头并且以下面表格(日期和时间转换字符表)中的一个字母结尾。

import java.util.Date;

public class DateDemo {

  public static void main(String args[]) {
     // 初始化 Date 对象
     Date date = new Date();

     // 使用toString()显示日期和时间
     String str = String.format("Current Date/Time : %tc", date );

     System.out.printf(str);
  }
}

以上实例编译运行结果如下:

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

(2)如果你需要重复提供日期,那么利用这种方式来格式化它的每一部分就有点复杂了。因此,可以利用一个格式化字符串指出要被格式化的参数的索引。索引必须紧跟在%后面,而且必须以$结束。例如:

import java.util.Date;

public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();

       // 使用toString()显示日期和时间
       System.out.printf("%1$s %2$tB %2$td, %2$tY",
                         "Due date:", date);
   }
}

运行结果:Due date: February 09, 2004

(3)你可以使用<标志。它表明先前被格式化的参数要被再次使用。例如:

import java.util.Date;

public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();

       // 显示格式化时间
       System.out.printf("%s %tB %<te, %<tY",
                         "Due date:", date);
   }
}

运行结果:Due date: February 09, 2004

日期和时间转换字符

日期和时间转换字符

SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。例如:

import java.util.*;
import java.text.*;

public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd");

      String input = args.length == 0 ? "1818-11-11" : args[0];

      System.out.print(input + " Parses as ");

      Date t;

      try {
          t = ft.parse(input);
          System.out.println(t);
      } catch (ParseException e) {
          System.out.println("Unparseable using " + ft);
      }
   }
}

运行结果

$ java DateDemo
1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818
$ java DateDemo 2007-12-01
2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007

Calendar类

简介

我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。

Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

创建一个指定日期的Calendar对象

使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

Calendar类对象字段类型

Calendar类中用一下这些常量表示不同的意义

Calendar类对象信息的设置

Set设置

(1)设置年月日

如:
Calendar c1 = Calendar.getInstance();
调用:
public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

注意:Calendar月份计算是从0开始,0~11.

(2)设置某个字段

利用字段类型设置

如果只设定某个字段,例如日期的值,则可以使用如下set方法:
public void set(int field,int value)

把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算
c1.set(Calendar.DATE,10);

把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算
c1.set(Calendar.YEAR,2008);

其他字段属性set的意义以此类推
Add设置
Calendar c1 = Calendar.getInstance();

把c1对象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的数值会被重新计算
c1.add(Calendar.DATE, 10);

把c1对象的日期加上10,也就是c1所表的日期的10天前的日期,其它所有的数值会被重新计算
c1.add(Calendar.DATE, -10);

其他字段属性的add的意义以此类推

Calendar类对象信息的获得

Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

GregorianCalendar类

Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。

构造函数

1   GregorianCalendar()
在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。
2   GregorianCalendar(int year, int month, int date)
在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar
3   GregorianCalendar(int year, int month, int date, int hour, int minute)
为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。
4   GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
  为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。
5   GregorianCalendar(Locale aLocale)
在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。
6   GregorianCalendar(TimeZone zone)
在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。
7   GregorianCalendar(TimeZone zone, Locale aLocale)
 在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

GregorianCalendar类方法

实例

import java.util.*;

public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {
      "Jan", "Feb", "Mar", "Apr",
      "May", "Jun", "Jul", "Aug",
      "Sep", "Oct", "Nov", "Dec"};

      int year;
      // 初始化 Gregorian 日历
      // 使用当前时间和日期
      // 默认为本地时间和时区
      GregorianCalendar gcalendar = new GregorianCalendar();
      // 显示当前时间和日期的信息
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // 测试当前年份是否为闰年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("当前年份是闰年");
      }
      else {
         System.out.println("当前年份不是闰年");
      }
   }
}

运行结果:

Date: Apr 22 2009
Time: 11:25:27
当前年份不是闰年
时间: 2024-12-09 21:38:01

JAVA学习记录(一)——Number\Character\String\数组\Date\Calendar\GregorianCalendar的相关文章

java学习记录(1):layout

BorderLayout布局管理器:BorderLayout 也是一种非常简单的布局策略,它把容器内的空间简单地划分为:North,South,East,West和Center 5个区域,每加入一个组件都应该指明把这个组件加在哪个区域中.BorderLayout是顶层容器(Window,Frame, Dialog)的默认布局管理器. BorderLayout界面最多只能显示5个控件,若在一个区域中加上多个component,则只有最后加上的那个是可见的.加入控件的时候,可以指定加入的方位,默认的

java学习记录(2):JMenuBar

1.在用这个时候发现很多的组件都有J的前缀,例如Button和JButton,前者是awt包的,后者是swing包的,两者耳朵区别是: AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口.AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers. 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库.由于不同操作系统的图形库所提供的功能

java学习记录(4):ActionListener

1.ActionListener是处理被点击的事件的. 除了像之前每个元素都独立写一个listener之外,还可以统一用一个 s.setActionCommand("sec"); m.setActionCommand("min"); s.addActionListener(new SetHandler()); m.addActionListener(new SetHandler()); private final class SetHandler implement

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

Java学习记录第一章

学习Java第一章的记录,这一章主要记录的是Java的最基础部分的了解知识,了解Java的特性和开发环境还有Java语言的优缺点. 计算机语言的发展大概过程:机器语言--->汇编语言--->高级语言(面向过程的语言和面向对象的语言)总而言之就是从人类比较难识别的字符串向人类自然语言靠近使代码的可读性越来越高. Java的发展过程:1991年Sun公司为了抢占市场先机,成立了一个称为Green的项目小组,帕特里克.詹姆斯·高斯林.麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕

Java学习笔记(1)String常见面试知识总结

简介(摘自Java源码) Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. 从这句话当中,我们可以知道String是一个不可变对象,对象的值不可以被改变.因为这一点,所以String是线程安全的.然后S

Java学习记录(补充七:一些工具类)

Math类package Box; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class TestBox { public static void main(String[] args) { //八个包装类 /*Integer i=5;//在栈里面开辟了一个内存空间(基本数据类型) Integer n = new Integer(5);//用new在堆里面开辟了一

java学习笔记2--数据类型、数组

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note2.html,转载请注明源地址. 1.数据类型 Java数据类型有: 原始数据类型(Primitive Data Types ) 引用类型(reference type ) Java原始数据类型又称基本数据类型,它说明了在程序中所能表示的基础数据的种类,通常有8种.引用类型包括类.接口等,具体内容将在后面文章中介绍. Java原始(基本)数据类型: boolean     布尔型,  

2016.03.04///Java学习记录①

import java.util.Scanner; public class xinxi { public static void main(String[] aa) { Scanner in = new Scanner(System.in);  //创建Scanner类对象 System.out.printf("Enter your name: "); String name = in.nextLine();          //输入姓名 System.out.printf(&qu