0
点赞
收藏
分享

微信扫一扫

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

梦为马 2022-01-28 阅读 122


在《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()方法,然后打印出来。

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



举报

相关推荐

0 条评论