JAVA程序设计根底ITeye - 超凡娱乐

JAVA程序设计根底ITeye

2019-01-12 04:17:22 | 作者: 寻桃 | 标签: 程序,办法,目标 | 浏览: 2621

8.5日期类

    Java供给了4个常用的日期类:Date,Calendar,DateFormat和GregorianCalendar.在程序中,对日期的处理首要是怎么获取、设置和格局化,Java的日期类供给了许多办法以满意程序员的各种需求.其间,Date首要用于创立日期目标并获取日期,Calendar可获取和设置日期,DateFormat首要用来创立日期格局化器,由格局化器将日期转化为各种日期格局串输出,GregorianCalendar类用咱们了解的日历符号表明日期,它是对更一般的Canlendar类的扩展. Java是网络言语,程序有必要注意到各个国家对日期格局的不同了解.

例DateTest.java演示了日期的获取、设置和格局化.

用GregorianCalendar类可使得编写日历程序非常简略,如下例:

//CalendarTest.java

import java.util.*;

public class CalendarTest{

      public static void main(String[] args){

             GregorianCalendar d=new GregorianCalendar();

             int today=d.get(Calendar.DAY_OF_MONTH);

             int month=d.get(Calendar.MONTH);

             d.set(Calendar.DAY_OF_MONTH,1);

             int weekday=d.get(Calendar.DAY_OF_WEEK);

             System.out.println("Sun Mon Tue Wed Thu Fri Sat");

             for(int i=Calendar.SUNDAY;i weekday;i++)

             System.out.print("    ");

             do{

                    int day=d.get(Calendar.DAY_OF_MONTH);

                    if(day =10)

                    System.out.print(" ");

                    System.out.print(day);

                    if(day==today)

                    System.out.print("*");

                    else

                    System.out.print("  ");

                    if(weekday==Calendar.SATURDAY)

                    System.out.println();

                    d.add(Calendar.DAY_OF_MONTH,1);

                    weekday=d.get(Calendar.DAY_OF_WEEK);

             }while(d.get(Calendar.MONTH)==month);

             if(weekday!=Calendar.SUNDAY)

             System.out.println();  }

}

8.6随机数类 Random

运用Math中的Random类可发生一个0到1之间的伪随机数,为了习惯网络时代编程

对随机数的需求,Java在Random类中供给了更多的功用,Random的实例化目标可运用一个48位长的种子数来生成随机数.假如两个Random目标运用相同的种子数,并以相同的顺序调用生成办法,依然能够确保得到两个不同的32位伪随机数.为了使Java程序有杰出的可移植性,应该尽可能运用Random类来生成随机数.

Random有两个结构办法:Random()、Random(long seed).前者运用体系时刻作为种子数,后者运用指定的种子数.结构办法仅仅创立了随机数生成器,有必要调用生成器的办法才干发生随机数.Random具有nextBoolean、nextDouble、nextInt等办法。

RandomTest.java演示了用Random生成各种类型的随机数。

8.7 向量类Vector

大多数编程言语中的数组是固定长度的,即数组一经树立就不能在运用过程中改动其长度.有些程序可能要处理数组长度不断改动的问题,这关于无法预见运用多长的数组更适宜的程序员来说是一件头痛的工作,Java引进的Vector类较好地处理了这个问题.

Vector被规划成一个能不断增加的序列,用来保存目标引证.在创立Vector目标时能够指定初始容量和增量,每次增加元素都将使向量长度按增量主动增加.

Vector类似于可变长数组,但功用愈加强壮,任何类型的目标都能够放入Vector.经过调用Vector封装的办法,能够随时增加或删去向量元素,以及增加或缩短向量序列的长度.

Vector的常用办法如下所示.

Vector(int initcapacity,int increment)//结构办法,指定初始容量和增量

Void addElement(Object obj)//在尾部增加元素,元素个数主动增1

Boolean removeElement(Object obj)//删去第一个与obj相同的元素

Void setElementAt(Object obj,int index)//替换指定方位上的元素

Object elementAt(int index)//回来指定方位的元素

Int indexOf(Object obj)//回来指定元素obj在向量中的方位

Int size()//回来元素个数

Int capacity()//回来向量的长度

Void trimToSize()//按当时元素个数减缩向量长度

Enumeration elements()//生成一个向量元素的枚举

Vector包括在java.util包中,比如VectorTest.java演示了Vector的运用

/**

Enumeration接口界说了能够对一个目标的类会集的元素进行枚举(一次取得一个)的办法。这个接口虽然没有被抛弃,但现已被Iterator所替代。Enumeration对新程序来说是过期的。但是它仍被几种从曾经版别遗留下来的类(例如Vector和Properties)所界说的办法运用,被几种其他的API类所运用以及被现在广泛运用的运用程序所运用。

   

Enumeration指定下面的两个办法:

boolean hasMoreElements()

Object nextElement()

履行后,当仍有更多的元素可提取时,hasMoreElements()办法必定回来true。当一切元素都被枚举了,则回来false。nextElement()办法将枚举中的下一个目标做为一个类属 Object的引证而回来。也便是每次调用nextElement()办法取得枚举中的下一个目标。调用例程有必要将那个目标置为包括在枚举内的目标类型。

关于Enumeration能够以Vector为例

Vector里有许多目标,假如你要检查其间的一切目标,一个办法是用Vector的get(int index)办法,不过这样功率比较低,别的一个办法是用Vector的elements()办法回来一个Enumeration目标,用Enumeration的hasMoreElements()办法向下移动并判别当时方位是否有目标,有则用nextElement()办法回来这个目标

 

例如, 打印 vector v中的一切目标:

Enumeration e = v.elements()

while(e.hasMoreElements() )

{

System.out.println(e.nextElement());

}

 

别的还有个Iterator接口,和Enumeration是差不多的,不过称号比较短,一般引荐用Iterator

Iterator

对调集进行迭代的迭代器。迭代器替代了 Java Collections Framework 中的 Enumeration。Collections 接口中界说了 iterator 办法,用于回来在此 collection 的元素上进行迭代的迭代器。

*/

8.8 Class类与Runtime类

经过Class类与Runtime类中的办法能够取得运转时的信息,如当时类名、超类名、包名、内存空间以及操作体系称号等.

以下程序演示了怎么获取运转时信息.

//ClassTest.java

public class ClassTest

{

       public static void main(String args[])

       {

              String str=new String("");

              System.out.println("本类名 ="+str.getClass().getName());

              System.out.println("超类名 ="+str.getClass().getSuperclass().getName());

              System.out.println("包名   ="+str.getClass().getPackage().getName());

              System.out.println("操作体系 ="+System.getProperty("os.name"));

              System.out.println("Java版别 ="+System.getProperty("java.vm.version"));

              System.out.println("内存总量 ="+Runtime.getRuntime().totalMemory());

              System.out.println("剩下空间 ="+Runtime.getRuntime().freeMemory());

       }

}

System.getProperty(String name)办法用于得到体系的特点.下面是该办法的常用参数。-------------------------------------------------

java.versionjava.version                        Java运转环境版别 

java.vendorjava.vendor                         Java运转环境卖主 

java.vendor.urljava.vendor.url               Java卖主的URL  

java.homejava.home                               Java的装置目录  

java.vm.specification.version                 Java虚拟机规范版别  

java.vm.specification.vendor                 Java虚拟机规范供货商 

java.vm.specification.name                    Java虚拟机规范称号  

java.vm.versionjava.vm.version              Java虚拟机履行版别  

java.vm.vendorjava.vm.vendor               Java虚拟机完成供货商  

java.vm.namejava.vm.name                    Java虚拟机完成称号  

java.specification.version                    Java运转时环境规范版别 

java.specification.vendor                    Java运转时环境规范供货商  

java.specification.name                       Java运转时环境规范称号  

java.class.versionjava.class.version      Java类格局版别号 

java.class.pathjava.class.path              Java类途径  

java.library.pathjava.library.path       名单上的途径查找时,装载图书馆  

java.io.tmpdirjava.io.tmpdir                 默许temp文件途径 

java.compilerjava.compiler                  称号JIT编译器运用  

java.ext.dirsjava.ext.dirs                     路途扩建目录或目录  

os.name                                               操作体系称号 

os.archos.arch                                     操作体系体系结构  

os.versionos.version                             操作体系版别  

file.separatorfile.separator                 文件分隔符("/"在UNIX)  

path.separatorpath.separator               途径分隔符(":"在UNIX)  

line.separatorline.separator                 线别离("\氮",在Unix)  

user.nameuser.name                             用户的帐号称号  

user.homeuser.home                             用户的home目录  

user.diruser.dir                                  用户的当时工作目录

Java的工具包中供给了很多的类,咱们能够根据需求来了解它们的运用办法.

8.9常用调集类

Java中的调集结构可了解为一个容器,该容器首要指映射(map)、调集(set)、列表(list)、数组(array)和散列表(hashtable)等笼统数据结构。容器包括有多个元素,这些元素一般是一些java目标。而调集结构则是针对上述笼统数据结构所界说的一些规范编程接口,首要是由一组精心规划的接口、类和隐含在其间的算法所组成,经过它们能够选用调集的办法完成对java目标的存储、获取、操作以及转化等功用。

1.     数组(Arrays)类

是调集结构的一个成员类,功用首要是对数组目标进行排序、查找和填充操作。它所供给的办法都是静态办法

常用办法如下:

binarySearch(int[] a,int key):二分法回来值所在方位(要求该数组己排好序)

public static boolean equals(int[] a,int[] b):判两个数组是否持平

public static void fill(int[] a,int val):用指定值填充数组中的每个元素

public static void sort(int[] a):按升序排序

例:

int[] a1=newint[10];

       int[] a2=newint[10];

       Arrays.fill(a1,47);

       Arrays.fill(a2,47);

       System.out.println(Arrays.equals(a1,a2));

       a2[3]=11;

       a2[2]=9;

       System.out.println(Arrays.equals(a1, a2));

       Arrays.sort(a2);

System.out.println(Arrays.binarySearch(a2,11));

2.     根本的调集接口

Collection接口            Map接口

 

 

       Set接口         List接口

    Map接标语Collection接口没有任联系

    Map的典型运用是拜访按关键字存储的值,所包括的是一个个键-值对,而不是单个独立的元素。

Collection指的是一组元素,这四个调集的描绘如下:

(1)  Collection接口是一组答应重复的目标

(2)  Set接口承继Collection,但不答应调集中呈现重复元素

(3)  List接口答应调集中有重复,并引进方位索引

(4)  Map接口包括的是键-值对

Set接口的完成类有HashSet和TreeSet,List接口的完成类有ArrayList和LinkedList(前史调集类为Vector-ArrayList和Stack-LinkedList类),Map接口听完成类有HashMap和TreeMap(前史调集类为HashTable-HashMap)

8.9.1调集(Set)

是指一个不包括重复的目标调集,其界说办法分为两类(调集和元素之间的办法,调集之间的办法)

l  public boolean add(Object o)

l  public boolean remove(Object o)

l  public boolean contains(Object o)

l  public int size()

n  public boolean containsAll(Collection c)

n  public boolean addAll(Collection c)

n  public boolean removeAll(Collection c)

n  public boolean retainAll(Collection c)

一般选用HashSet类创立一个无序的调集目标,而用TreeSet创立一个有序的调集目标

例1-1:

    publicstaticvoid main(String[] args) {

       HashSet s=new HashSet();

       for(int i=0;i args.length;i++)

           if(!s.add(args[i]))

              System.out.println("重复的单词"+args[i]);

       System.out.println(s.size()+"不同的单词:"+s);

    }

例1-2

       HashSet uniques=new HashSet();

       HashSet dups=new HashSet();

       for(int i=0;i args.length;i++)

       if(!uniques.add(args[i]))

       dups.add(args[i]);

       uniques.removeAll(dups);

       System.out.println("不同的单词:"+uniques);

       System.out.println("重复的单词:"+dups);:

 

例2:

       boolean b;

       TreeSet s=new TreeSet();

       b=s.add("to");

       System.out.println("增加单词 to,回来为 "+b);

       b=s.add("be");

       b=s.add("or");      

       b=s.add("not");     

       b=s.add("to");      

       b=s.add("be");

       Iterator i=s.iterator();

       while(i.hasNext())

           System.out.println(i.next());

例3:[HashSet与TreeSet差异]

       HashSet s=new HashSet();

       s.add("40");

       s.add(new Integer(40));

       Iterator i=s.iterator();

       while(i.hasNext())

       System.out.println(i.next());//该程序输出为40 40,数据类型不匹配没联系

    若该程序中的HashSet变为TreeSet,则程序抛出Exception in thread "main" java.lang.ClassCastException

8.9.2列表(List)

是指一个有序的目标调集,也称为目标序列

经过列表接口,能够使用整数索引(即元素在列表中的方位)对列表中的每个元素有精确的操控,包括拜访特定方位的元素目标和查询特定的元素。与调集最大的不同是,列表中答应呈现重复的元素

a.  针对特定方位的办法:

n  public void add(int index,Object element)

n  public boolean addAll(int index,Collection c)

n  public Object get(int index)

n  public int indexOf(Object o)

n  public int lastIndexOf(Object o)

n  public Object remove(int index)

n  public Object set(int index,Object element)

b.  针对调集类的办法描绘:

n  public boolean containsAll(Collection c)

n  public boolean addAll(Collection c)

n  public boolean removeAll(Collection c)

n  public boolean retainAll(Collection c)

ArrayList类是经过数组办法来完成的,而LinkedList类是经过链表结构来完成的,若对一个列表结构的开端和完毕处有频频地增加和删去操作时,较为理想地是选用LinkedList,一般用LinkedList目标来表明一个仓库(Stack)或行列(Queue)。

LinkedList特有的办法:

n  public void addFirst(Object o)

n  public void addLast(Object o)

n  public Object removeFirst()

n  public Object removeLast()

ArrayList的比如:

       ArrayList list=new ArrayList();

       list.add(new Byte((byte)1));

       list.add(new Short((short)2));

       list.add(new Integer(3));

       list.add(new Long(60L));

       list.add(new Float(5.0F));

       list.add(new Double(60.00));

       Iterator i=list.iterator();

       while(i.hasNext())

       System.out.println(i.next());

       int len=list.size();

       for(int n=0;n n++)

       System.out.println(list.get(n));

LinkedList的比如:

       LinkedList queue=new LinkedList();

       queue.addFirst("Benz");

       queue.addFirst("Buick");

       queue.addFirst("Honda");

       System.out.println(queue);

       queue.removeLast();

       queue.removeLast();

       System.out.println(queue);

8.9.3Map

该接口描绘了不重复的键到值的映射,一个映射目标中不能包括重复的键,且每个键只能映射到一个值,类似于数学中的“逐个映射”。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章