zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java程序的一个完整阅读分析

JAVA程序 分析 一个 完整 阅读
2023-09-14 09:13:19 时间

在《Thinking  in Java》里面读到Holding一章中的Set,有如下代码:

package holding;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class SetOfInteger {
	public static void main(String [] args){
		Random random= new Random(7);
		Set<Integer>  intest= new HashSet<Integer>();
		for(int i = 0; i<1000;i++)
		intest.add(random.nextInt(30));
		System.out.println(intest);
	}
}
我想,是时候该了解这里面真正说的东西了。我们来一行行的分析这个简单的代码语句。

(1)package holding;是当前程序文件所在的包名;

(2)三行import语句是导入Java类库中的类与实现方法;

 (3)在main方法中,我们使用了Random random= new Random(47),在这一语句中,Random是Java类库中的一个类,用来创建一个伪随机数,new Random(47),则是传递一个long型数字作为构造参数。在这里我粘贴上Random的构造方法。根据构造方法我们即可大致了解Random类的作用了。

  • public Random(long seed)
    Creates a new random number generator using a single long seed. The seed is the initial value of the internal state of the pseudorandom number generator which is maintained by method next(int).

    The invocation new Random(seed) is equivalent to:

     Random rnd = new Random();
     rnd.setSeed(seed);
    参数:
    seed - the initial seed


(4)Set<Integer> intest = new HashSet<Integer>();这行语句的意思是,我们使用Set容器,来持有对象,而这里的持有对象的意思就是类似于int这样的整型数组来保存对象一样,只不过在int型数组中有固定的大小,但是在哎Set容器里面,大小是不固定的。而Set<Integer>中的<Integer>又是什么意思呢?这里代表的是这个Set数组【其实是容器】里面只允许装在Integer类型的数据。------->可能又有人要问了,Integer又是什么类型,我们知道在Java里面,有八大基本类型,我们在使用这八大基本类型时,是不需要new一个对象的,而是直接拿来使用,这八个基本类型是分别是:int,long,short,char,boolean,float,double,byte。例如我们在使用这几个基本类型时,我们是直接类似于这样使用:int a=10;而不是int a = new int ();这个样子,在Java中,为了解决这个问题,Java设计者们就将这八大类型包装成了包装器类型。

分别对应如下:

boolean---->Boolean

int ---->  Integer

char ---->  Character

long  ----> Long

short   ----> Short

float   ----> Float 

double ----> Double

byte  ----> Byte

(5)而后面的new HashSet<Integer>();则是因为Java类库中,Set只是一个纯接口,没有具体的实现类。我们在这里使用其子类HashSet来创建对象。之所以可以将HashSet类型的对象传递给Set是因为Java中向上转型的允许。【注:那么什么又是向上转型呢?我们经常继承一个类,这个问题呢,包括笔者在写到此处时,我也想了想,但是却无从说起……还请各位读者原谅】

(6)在for循环中,使用了intest.add(random.nextInt());这行语句说的是我们使用HashSet容器中的一个叫做add()的方法【面向对象思想】,而add()方法中的参数则是使用random.nextInt()返回得到。这里的nextInt()方法的使用,我们可以依然可有查看其使用方法。【注:这里可能又有同学问了,那么是怎么看到这个java类库中的文件呢这里便不再做介绍了,如想知道该怎么在eclipse里面查看类库中的方法请见我上一篇博客】

(7)然后,我们到了最后一行代码处,System.out.println(intest);那么这行代码看着简单,又有什么意思呢?事情原来是这个样子的,toString()方法是默认的打印行为,也就是说,是容器类本身所拥有的一种方法,那么我们就知道了,在调用System.out.println(intest)时,就会默认调用toString()方法,然后打印出来。

好了,程序的一个运行过程大致如此,菜鸟上路,中间若有写纰漏,还恳请读者指出,感激不尽。