Java程序的一个完整阅读分析
在《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 singlelong
seed. The seed is the initial value of the internal state of the pseudorandom number generator which is maintained by methodnext(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()方法,然后打印出来。
好了,程序的一个运行过程大致如此,菜鸟上路,中间若有写纰漏,还恳请读者指出,感激不尽。
相关文章
- java中数组转列表_Java数组转list
- java单例模式_Java单例模式
- java 优先级队列_JAVA 队列
- java softreference_Java引用总结–StrongReference、SoftReference、WeakReference、PhantomReference…[通俗易懂]
- java 舆情分析_基于Java实现网络舆情分析系统研究与实现.doc[通俗易懂]
- java和vue学生定位打卡小程序人脸识别打卡系统源码网站学生考勤系统
- java接入微信小程序步骤和代码示例
- centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析
- Java程序内存的简单分析详解编程语言
- Java程序监控指标详解编程语言
- 实现Java程序操作MySQL数据库(java调用mysql)
- 程序Linux下构建Java应用:从入门到精通(linux下开发java)
- Java问题-java进程占用内存过高,排查原因详解编程语言
- 解决Linux下重启Java程序的方法(linux重启java)
- MySQL与Java互调:构建高效业务系统(mysql调用java)
- Java应用Redis强力控制过期(redisjava过期)
- 时间设置Java程序中如何使用Redis设置数据过期时间(redisjava过期)
- Linux下搭建 Java 开发环境(linux搭建java环境)
- Linux环境中如何顺利执行Java程序?(linux下执行java)
- Java操作Redis实现数据快速存取(java访问redis)
- 使用Java轻松读取Redis数据 – 一步一步指南!(java读取redis)
- 期Java开发高效配置MySQL长期支撑(mysql java 长)
- 在Linux上实现Java程序的运行(linux运行java程序)
- Java程序在Linux系统中实现命令操作(java运行linux命令)
- 收购Oracle收购Java重新定义软件开发未来(java被oracle)
- Java程序建立Oracle数据库表的实现方式(java建oracle表)
- Oracle数据库中运行Java程序的简易指南(oracle中写java)