JAVA数组(六)

一、数组 

数组是由相同类型的若干项数据组成的一个数据集合。也就是说数组是用来集合相同类型的对象并通过一个名称来引用这个集合,数组是引用类型。 

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

你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。

1.1、数组的声明

你可以声明任何类型的数组──原始类型或类类型:

 char s[];

 Point p[]; // 这里Point是一个类

Java编程语言中,即使数组是由原始类型构成,甚或带有其它类类型,数组也是一个对象。声明不能创建对象本身,而创建的是一个引用,该引用可被用来引用数组。数组元素使用的实际内存可由new语句或数组初始化软件动态分配。在后面,你将看到如何创建和初始化实际数组。

上述这种将方括号置于变量名之后的声明数组的格式,是用于C、C++和Java编程语言的标准格式。这种格式会使声明的格式复杂难懂,因而,Java 编程语言允许一种替代的格式,该格式中的方括号位于变量名的左边: char[] s;

Point[] p;  

这样的结果是,你可以认为类型部分在左,而变量名在右。上述两种格式并存,你可选择一种你习惯的方式。声明不指出数组的实际大小。

扫描二维码关注公众号,回复: 187984 查看本文章

注意----当数组声明的方括号在左边时,该方括号可应用于所有位于其右的变量

1.2、数组的创建

可以象创建对象一样,使用关键字new 创建一个数组。创建的时候要指明数组的长度。

           s = new char [20];

           p = new Point [100];

     第一行创建了一个20个char值的数组,第二行创建了一个100个类型Point的变量。

然而,它并不创建100个Point对象;创建100个对象的工作必须分别完成如下:         

   p[0] = new Point();         

   p[1] = new Point();

        ·

        ·         

        ·

用来指示单个数组元素的下标必须总是从 0 开始,并保持在合法范围之内--大于 0 或等于 0 并小于数组长度。任何访问在上述界限之外的数组元素的企图都会引起运行时出错。

数组的下标也称为数组的索引,必须是整数或者整数表达式,如下:

 int i[] = new int[(9-2)*3];//这是合法的

其实,声明和创建可以定义到一行,而不用分开写。

另外我们还可以这样创建数组:

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

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

实例:

下面的语句首先声明了一个数组变量 myList,接着创建了一个包含 10 个 double 类型元素的数组,并且把它的引用赋值给 myList 变量。

public class TestArray {

   public static void main(String[] args) {

      // 数组大小

      int size = 10;

      // 定义数组

      double[] myList = new double[size];

      myList[0] = 5.6;

      myList[1] = 4.5;

      myList[2] = 3.3;

      myList[3] = 13.2;

      myList[4] = 4.0;

      myList[5] = 34.33;

      myList[6] = 34.0;

      myList[7] = 45.45;

      myList[8] = 99.993;

      myList[9] = 11123;

      // 计算所有元素的总和

      double total = 0;

      for (int i = 0; i < size; i++) {

         total += myList[i];

      }

      System.out.println("总和为: " + total);

   }

}

以上实例运行结果如下:

                  总和为:11367.373

下面的图片描绘了数组 myList。这里 myList 数组里有 10 个 double 元素,它的下标从 0 到 9。

1.3、处理数组

当创建一个数组时,每个元素都被自动使用默认值进行初始化。在上述char数组s的例子中,每个值都被初始化为0 (\u0000-null)字符;在数组p的例子中, 每个值都被初始化为null,表明它还未引用一个Point对象。在经过赋值 p[0] = new Point()之后,数组的第一个元素引用为实际Point对象。

  

注意:所有变量的初始化(包括数组元素)是保证系统安全的基础,变量绝不能在未初始化状态使用。

Java编程语言允许使用下列形式快速创建数组,直接定义并初始化:

           String names [] = { 

            “Georgianna”,

            “Jen”,

            “Simon”,

           };

其结果与下列代码等同:

           String names [] ;         

           names = new String [3];           

           names [0] = “Georgianna”;  

           names [1] = “Jen”;     

           names [2] = “Simon”;

这种”速记”法可用在任何元素类型。

例如:

       Myclass array [] = {         

              new Myclass (),   

              new Myclass (),      

              new Myclass ()

        };

适当的类类型的常数值也可被使用:

       import java.awt.Color;

       Color palette  [] = { 

           Color.blue,  

           Color.red,

           Color.white

           };

实例:

public class TestArray {

   public static void main(String[] args) {

      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // 打印所有数组元素

      for (int i = 0; i < myList.length; i++) {

         System.out.println(myList[i] + " ");

      }

      // 计算所有元素的总和

      double total = 0;

      for (int i = 0; i < myList.length; i++) {

         total += myList[i];

      }

      System.out.println("Total is " + total);

      // 查找最大元素

      double max = myList[0];

      for (int i = 1; i < myList.length; i++) {

         if (myList[i] > max) max = myList[i];

      }

      System.out.println("Max is " + max);

   }

}

以上实例运行结果如下:

1.9

2.9

3.4

3.5

Total is 11.7

Max is 3.5

1.4、foreach循环

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

实例:

public class TestArray {

   public static void main(String[] args) {

      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // 打印所有数组元素

      for (double element: myList) {

         System.out.println(element);

      }

   }

}

以上实例运行结果如下:

1.9

2.9

3.4

3.5

1.4、多维数组

Java 编程语言没有象其它语言那样提供多维数组。因为一个数组可被声明为具有任何基础类型,所以你可以创建数组的数组(和数组的数组的数组,等等)。一个二维数组如下例所示:

int twoDim [][] = new int [4][];

twoDim[0] = new int[5];

twoDim[1] = new int[5];

首次调用new而创建的对象是一个数组,它包含4个元素,每个元素对类型array of int的元素都是一个null引用并且必须将数组的每个点分别初始化。

 因为这种对每个元素的分别初始化,所以有可能创建非矩形数组的数组。也就是说, twoDim的元素可按如下方式初始化: twoDim[0] = new int [2] twoDim[1] = new int [4];     twoDim[2] = new int [6];     twoDim[3] = new int [8];

由于此种初始化的方法烦琐乏味,而且矩形数组的数组是最通用的形式,因而产生了一种”速记”方法来创建二维数组。例如:

    int twoDim [][]  =  new int [3][4];

 可被用来创建一个每个数组有4个整数类型的3个数组的数组。

 对二维数组 int [][] a = new int[3][4];  

可以理解成为如下图所示:

 

注意-尽管声明的格式允许方括号在变量名左边或者右边,但此种灵活性不适用于数组句法的其它方面。例如: new int [][4]是非法的。

实例:

class FillArray {   

  public static void main (String args[]) {       

   int[ ][ ] matrix = new int[4][5]; //二维数组的声明和创建              for (int row=0; row < 4; row++){      

        for (int col=0; col < 5; col++){

        matrix[row][col] = row + col; //二维数组的访问,为元素赋值

            }  

        }

    }

}  

当然也可以直接定义并赋值,如下: double[ ][ ] c =

    {  

       {1.0, 2.0, 3.0, 4.0},  

       {0.0, 1.0, 0.0, 0.0},  

       {0.0, 0.0, 1.0, 0.0}  

    };  

从上面可以看得很清楚,二维数组其实就是一维的一维数组。

1.5、数组的复制

数组一旦创建后,其大小不可调整。然而,你可使用相同的引用变量来引用一个全新的数组:

          int myArray [] = new int [6];   

          myArray = new int [10];    

 在这种情况下,第一个数组被有效地丢失,除非对它的其它引用保留在其它地方。

Java 编程语言在 System 类中提供了一种特殊方法拷贝数组,该方法被称作arraycopy()。例如,araycopy可作如下使用:

   //原始数组

   int myArray[] = { 1, 2, 3, 4, 5, 6 };      

   //新的数组,比原始数组大

   int hold[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };  

   //把原始数组的值拷贝到新的数组  

   System.arraycopy(myArray, 0, hold, 0, myArray.length);

   拷贝完成后,数组hold有如下内容:1,2,3,4,5,6,4,3,2,1。

注意—在处理对象数组时,System.arraycopy()拷贝的是引用,而不是对象。对象本身不改变。 

1.5、数组的排序方法

1冒泡排序

                                                                      对几个无序的数字进行排序,比较常用的方法是冒泡排序法。冒泡法排序是一个比较简单的排序方法,在待排序的数列基本有序的情况下排序速度较快。 

基本思路:对未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。 

可以看出如果有 N 个元素,那么一共要进行 N-1 轮比较,第 I 轮要进行 N-I 次比较。(如:有 5 个元素,则要进行 5-1 轮比较。第 3 轮则要进行 5-3 次比较)

实例:

public class BubbleSort {

/**

 * N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。

 * @param args

 */

    public static void main(String[] args) {

        int arr[] = {26,15,29,66,99,88,36,77,111,1,6,8,8};

        for(int i=0;i < arr.length-1;i++) {//外层循环控制排序趟数

            for(int j=0; j< arr.length-i-1;j++) {

                        //内层循环控制每一趟排序多少次

                // 把小的值交换到前面

                if (arr[j]>arr[j+1]) {

                    int temp = arr[j];

                    arr[j] = arr[j+1];

                    arr[j+1] = temp;

                }

            }

            System.out.print("第"+(i+1)+"次排序结果:");

                                //列举每次排序的数据

            for(int a=0;a<arr.length;a++) {

                System.out.print(arr[a] + "\t");

            }

            System.out.println("");

        }

        System.out.println("最终排序结果:");

        for(int a = 0; a < arr.length;a++) {

            System.out.println(arr[a] + "\t");

        }

    }

}运行结果: 

i=1 i=2 i=3 i=4 i=5 如果你想要按照降序排列,很简单,只需把:if(a[i] > a[j])改成:if(a[i] < a[j])

就可以了。 

  2)选择排序

                                                                            从所有元素中选择一个最小元素a[i]放在a[0](即让最小元素a[i]与a[0] 交换),作为第一轮;第二轮是从a[1]开始到最后的各个元素中选择一个最小元素,放在a[1] 中;……依次类推。n个数要进行(n-1)轮。比较的次数与冒泡法一样多,但是在每一轮中只进行一次交换,比冒泡法的交换次数少,相对于冒泡法效率高。

实例: 

public class Start

{

    public static void main(String[] args)

    {

        int[] arr={20,60,51,81,285,12,165,51,81,318,186,9,70};

        for(int a:arr)

        {

            System.out.print(a+" ");

        }

        

        System.out.println("\n"+"---------------从小到大-----");

        

        arr=toSmall(arr);

        for(int a:arr)

        {

            System.out.print(a+" ");

        }

        

        System.out.println("\n"+"---------------从大到小-----");

          arr=toBig(arr);

        for(int a:arr)

        {

            System.out.print(a+" ");

        }

    }

//    从大到小

    public static int[] toSmall(int[] arr){

//遍历数组里除最后一个的其他所有数,因为最后的对象没有与之可以相比较的数

        for(int i=0;i<arr.length-1;i++){

/*遍历数组里没有排序的所有数,并与上一个数进行比较

 *“k=i+1”因为自身一定等于自身,所以相比没有意义

 *而前面已经排好序的数,在比较也没有意义

 */

            for(int k=i+1;k<arr.length;k++)

            {

                if(arr[k]<arr[i])//交换条件(排序条件)

                {

                    int number=arr[i];

                    arr[i]=arr[k];

                    arr[k]=number;

                }//交换

            }

        }

        return arr;

    }

//    从小到大

//和前面一样

    public static int[] toBig(int[] arr)

    {

        for(int i=0;i<arr.length-1;i++)

        {

            for(int k=i+1;k<arr.length;k++)

            {

                if(arr[k]>arr[i])

                {

                    int number=arr[i];

                    arr[i]=arr[k];

                    arr[k]=number;

                }

            }

        }

        return arr;

    }

}

3)插入法排序

                                                                     每拿到一个元素,都要将这个元素与所有它之前的元素遍历比较一遍,让符

合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。 

举个例子来说,就用前面的数组,我们要对一个有 5 个元素的数组进行升序排列,假设第一个元素的值被假定为已排好序了,那么我们就将第 2 个元素与数组中的部分进行比较,如果第 2 个元素的值较小,则将它插入到第 1 个元素的前面,现在就有两个元素排好序了,我们再将没有排序的元素与排好序的元素列表进行比较,同样,如果小于第一个元素,就将它插入到第一个元素前面,但是,如果大于第一个元素的话,我们就将它再与第 2 个元素的值进行比较,小于的话就排在第 2 个元素前面,大于的话,就排在第 2 个元素的后面。以此类推,直到最后一个元素排好序。 

实例: 

public class Test {

 public static void main(String[] args) {

  // 需要排序的数组,目前是按照升序排列的

  int a[] = new int[5];

  a[0] = 3;  

  a[1] = 4;

  a[2] = 1;

  a[3] = 5;

  a[4] = 2;

  // 插入法排序

  int temp;

  for (int i = 1; i < a.length; i++) {

// i=1开始,因为第一个元素认为是已经排好序了的 

   for (int j = i; (j > 0) && (a[j] < a[j - 1]); j--) {

    //交换

    temp = a[j];

    a[j] = a[j - 1];

    a[j - 1] = temp;

   }

  }

  // 检测一下排序的结果

  for (int i : a) {

   

System.out.println("i=" + i);

  }

 }

}

运行结果: 

i=1 i=2 i=3 i=4 i=5

如果你想要按照降序排列,很简单,只需要把: a[j] < a[j - 1]这句话修改成:a[j] > a[j - 1]就可以了。

4)希尔(Shell)法排序                                                                   从前面介绍的冒泡排序法,选择排序法,插入排序法可以发现,如果数据已经大致排好序的时候,其交换数据位置的动作将会减少。例如在插入排序法过程中,如果某一整数 d[i] 不是较小时,则其往前比较和交换的次数会更少。如何用简单的方式让某些数据有一定的大小次序呢?Donald Shell(Shell 排序的创始人)提出了希尔法排序。

基本思路:先将数据按照固定的间隔分组,例如每隔 4 个分成一组,然后排序各分组的数据,形成以分组来看数据已经排序,从全部数据来看,较小值已经在前面,较大值已经在后面。将初步处理了的分组再用插入排序来排序,那么数据交换和移动的次数会减少。可以得到比插入排序法更高的效率。示例如下:

public class Test {

 public static void main(String[] args) {

  // 需要排序的数组,目前是按照升序排列的

  int a[] = new int[5];

  a[0] = 3;

  a[1] = 4;

  a[2] = 1;  

   a[3] = 5;

   a[4] = 2;

  // shell法排序  

  int j = 0;

  int temp = 0;

  //分组

  for (int increment = a.length / 2; increment > 0; increment /= 2) {

   //每个组内排序

   for (int i = increment; i < a.length; i++) {   

      temp = a[i];

      for (j = i; j >= increment; j -= increment) {    

         if (temp < a[j - increment]){    

             a[j] = a[j - increment];

     }else{     

       break;

     }

    }

    a[j] = temp;

   }

  }

  // 检测一下排序的结果  

 for (int i2 : a) {

       System.out.println("i=" + i2);

  }

 }

}

运行结果: 

i=1 i=2 i=3 i=4 i=5

  

如果你想要按照降序排列,很简单,只需要把:if (temp < a[j - increment])

这句话修改成:if (temp > a[j - increment])就可以了。

5)数组排序                                                                        事实上,数组的排序不用那么麻烦,上面只是想让大家对一些基本的排序算法有所了解而已。在 java.util.Arrays 类中有一个静态方法 sort,可以用这个类的 sort 方法来对数组进行排序。

实例:

public class Test {

 public static void main(String[] args) {

  // 需要排序的数组,目前是按照升序排列的

  int a[] = new int[5];

  a[0] = 3;

  a[1] = 4;

  a[2] = 1;

  a[3] = 5;

  a[4] = 2;

  //数组排序

  java.util.Arrays.sort(a);

  // 检测一下排序的结果

   for (int i2 : a) {

   System.out.println("i=" + i2);

  }

 }

}

注意:现在的 sort 方法都是升序的,要想实现降序的,还需要 Comparator 的知识,这个在后面会学到。

二、Java日期时间

java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。

Date对象创建以后,可以调用下面的方法。



2.1、获取当前日期时间

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());

   }

}

 以上实例运行结果如下:

     Wed Jan 17 18:03:27 CST 2018              

2.2、日期比较

Java使用以下三种方法来比较两个日期:

  1)使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。

  2)使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。

  3)使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

2.3、使用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: 星期三 2017.08.17 at 06:14:19 下午 CST

注:

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

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制

2.4、解析字符串为时间

 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

2.4、Java休眠

sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。

你可以让程序休眠一毫秒的时间或者到您的计算机的寿命长的任意段时间。

实例:

import java.util.*;

  

public class SleepDemo {

   public static void main(String args[]) {

      try {

         System.out.println(new Date( ) + "\n");

         Thread.sleep(1000*3);   // 休眠3秒

         System.out.println(new Date( ) + "\n");

      } catch (Exception e) {

          System.out.println("Got an exception!");

      }

   }

}

以上实例运行结果如下:

Thu Sep 17 10:20:30 CST 2015

Thu Sep 17 10:20:33 CST 2015

三、Calendar类

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

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

   3.1Calendar操作

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

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

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

//创建一个代表2009年6月12日的Calendar对象

Calendar c1 = Calendar.getInstance();

c1.set(2009, 6 - 1, 12);

3)Calendar类对象字段类型  


4) Set设置

如:

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

利用字段类型设置

    如果只设定某个字段,例如日期的值,则可以使用如下set方法:

public void set(int field,int value)

把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算

c1.set(Calendar.DATE,10);

把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算

c1.set(Calendar.YEAR,2008);

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

5)Add设置

Calendar c1 = Calendar.getInstance();

把c1对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, 10);

把c1对象的日期减去10,也就是c1也就表示为10天前的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, -10);

6)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);

   

 3.2、GregorianCalendar类

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

Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。GregorianCalendar定义了两个字段:AD和BC。这是代表公历定义的两个时代。

1)下面列出GregorianCalendar对象的几个构造方法:

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。

2)这里是GregorianCalendar 类提供的一些有用的方法列表:

1 void add(int field, int amount)

根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。

2 protected void computeFields()

转换UTC毫秒值为时间域值

3 protected void computeTime()

覆盖Calendar ,转换时间域值为UTC毫秒值

4 boolean equals(Object obj)

比较此 GregorianCalendar 与指定的 Object。

5 int get(int field)

获取指定字段的时间值

6 int getActualMaximum(int field)

返回当前日期,给定字段的最大值

7 int getActualMinimum(int field)

返回当前日期,给定字段的最小值

8 int getGreatestMinimum(int field)

 返回此 GregorianCalendar 实例给定日历字段的最高的最小值。

9 Date getGregorianChange()

获得格里高利历的更改日期。

10 int getLeastMaximum(int field)

返回此 GregorianCalendar 实例给定日历字段的最低的最大值

11 int getMaximum(int field)

返回此 GregorianCalendar 实例的给定日历字段的最大值。

12 Date getTime()

获取日历当前时间。

13 long getTimeInMillis()

获取用长整型表示的日历的当前时间

14 TimeZone getTimeZone()

获取时区。

15 int getMinimum(int field)

返回给定字段的最小值。

16 int hashCode()

重写hashCode.

17 boolean isLeapYear(int year)

确定给定的年份是否为闰年。

18 void roll(int field, boolean up)

在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。

19 void set(int field, int value)

用给定的值设置时间字段。

20 void set(int year, int month, int date)

设置年、月、日的值。

21 void set(int year, int month, int date, int hour, int minute)

设置年、月、日、小时、分钟的值。

22 void set(int year, int month, int date, int hour, int minute, int second)

设置年、月、日、小时、分钟、秒的值。

23 void setGregorianChange(Date date)

设置 GregorianCalendar 的更改日期。

24 void setTime(Date date)

用给定的日期设置Calendar的当前时间。

25 void setTimeInMillis(long millis)

用给定的long型毫秒数设置Calendar的当前时间。

26 void setTimeZone(TimeZone value)

用给定时区值设置当前时区。

27 String toString()

返回代表日历的字符串。

猜你喜欢

转载自blog.csdn.net/weixin_39236183/article/details/80241659