HeadFirstJava学习心得——main方法

main()的2种用途:

  • 测试真正的类
  • 启动java application

真正的java application只会让对象和对象进行交互(相互调用)。

下面的一个猜数字的游戏充分体现了以上观点:

玩家角色类:持有自己的数字number和一个guess()方法:

public class Player {
	int number = 0; // 被猜测的数字

	public void guess() {
		number = (int) (Math.random() * 10);
		System.out.println("I'm guessing " + number);
	}
}

猜数字游戏类:游戏的内部逻辑

public class GuessGame {
	/* 用3个实例变量分别表示3个Player对象 */
	Player p1;
	Player p2;
	Player p3;

	public void startGame() {
		/* 创建3个Player对象 */
		p1 = new Player();
		p2 = new Player();
		p3 = new Player();

		/* 声明3个变量来保存猜测的数字 */
		int guessp1 = 0;
		int guessp2 = 0;
		int guessp3 = 0;

		/* 声明3个变量来保存是否猜中 */
		boolean p1isRight = false;
		boolean p2isRight = false;
		boolean p3isRight = false;

		/* 产生谜底数字 */
		int targetNumber = (int) (Math.random() * 10);
		System.out.println("I'm thinking of a number between 0 and 9...");

		while (true) {
			System.out.println("Number to guess is " + targetNumber);

			/* 调用Player的guess()方法 */
			p1.guess();
			p2.guess();
			p3.guess();

			/* 取得每个Player所猜测的数字并将其列出 */
			guessp1 = p1.number;
			System.out.println("Player one guessed " + guessp1);
			guessp2 = p2.number;
			System.out.println("Player two guessed " + guessp2);
			guessp3 = p3.number;
			System.out.println("Player three guessed " + guessp3);

			/* 检查是否猜中,若猜中则设定是否猜中的变量 */
			if (guessp1 == targetNumber) {
				p1isRight = true;
			}
			if (guessp2 == targetNumber) {
				p2isRight = true;
			}
			if (guessp3 == targetNumber) {
				p3isRight = true;
			}

			/* 如果有人猜中,就打印信息,结束游戏 */
			if (p1isRight || p2isRight || p3isRight) {
				System.out.println("We have a winner!");
				System.out.println("Player one got it right?" + p1isRight);
				System.out.println("Player two got it right?" + p2isRight);
				System.out.println("Player three got it right?" + p3isRight);
				System.out.println("Game over.");
				break;
			} else {
				// 都没有猜到,所以要继续下去
				System.out.println("Player will have to try it agin.");
			}
		}
	}
}

主方法:启动游戏

public class GameLauncher {

	public static void main(String[] args) {
		GuessGame game = new GuessGame();
		game.startGame();
	}

}

游戏的运行结果:

I‘m thinking of a number between 0 and 9...

Number to guess is 6

I‘m guessing 9

I‘m guessing 9

I‘m guessing 2

Player one guessed 9

Player two guessed 9

Player three guessed 2

Player will have to try it agin.

Number to guess is 6

I‘m guessing 8

I‘m guessing 5

I‘m guessing 8

Player one guessed 8

Player two guessed 5

Player three guessed 8

Player will have to try it agin.

Number to guess is 6

I‘m guessing 3

I‘m guessing 8

I‘m guessing 8

Player one guessed 3

Player two guessed 8

Player three guessed 8

Player will have to try it agin.

Number to guess is 6

I‘m guessing 0

I‘m guessing 4

I‘m guessing 7

Player one guessed 0

Player two guessed 4

Player three guessed 7

Player will have to try it agin.

Number to guess is 6

I‘m guessing 5

I‘m guessing 3

I‘m guessing 5

Player one guessed 5

Player two guessed 3

Player three guessed 5

Player will have to try it agin.

Number to guess is 6

I‘m guessing 6

I‘m guessing 9

I‘m guessing 7

Player one guessed 6

Player two guessed 9

Player three guessed 7

We have a winner!

Player one got it right?true

Player two got it right?false

Player three got it right?false

Game over.

java的垃圾回收机制(GC)

创建对象的时候,它会被存放在称为堆的内存区域中。不管对象如何创建都会在此区域中。此区域并非普通的堆;它是可以回收垃圾的堆(Garbage-Collectible Heap)。java会根据对象的大小来分配内存空间。比如说15个实例变量的对象所占用的空间就可能会比只有两个实例变量的对象要大。当JVM察觉到某个对象不再会被使用的时候,该对象就会被标记成可以回收的。如果内存开始不足,垃圾收集器就会启动来清理垃圾、回收空间,从而使空间能够被再次利用。

需要全局变量(global)或者方法该如何?

public static final修饰。

成百上千的类应该如何提交?是否可以包装成类似单一应用程序的形式?

可以把所有文件包装进依据pkzip格式来存档的java Archive——.jar文件,在jar文件中可以引用一个简单的文本文件(manifest)

里面有定义出jar中哪一个文件带有启动app的main()方法。

时间: 2024-07-30 20:24:00

HeadFirstJava学习心得——main方法的相关文章

HeadFirstJava学习心得——方法

如果方法中传入的参数是对象而不是基本数据类型应该怎么办? 在java中传递的所有的东西都是值,但此值是变量所携带的值.引用对象的变量所携带的是远程控制而不是对象本身.如果对方法传入参数,实际上传入的是远程控制的拷贝. 方法可以声明为多个返回值吗? 方法只能声明单一的返回值.如果需要返回3个int值,就把返回值的类型声明为int数组,把值装进数组中返回.如果有混合的不同类型的值需要返回的时候,可以使用ArrayList. setter和getter方法 setter和getter方法本质上是一种封

HeadFirstJava学习心得——数据类型

对JVM来说,所有的引用大小都是一样的,但是不同的JVM可能会以不同的方式来表示引用.java中无法对引用类型的数据进行计算(java不是C) 对象声明-创建-赋值的3个步骤: 对象及其引用 垃圾回收机制 注意:虽然数组中的元素可以是基本数据类型,但是数组本身却是引用数据类型,即:数组是对象,例如: <span style="white-space:pre"> </span>int[] nums = new int[3]; nums[1] = 1; nums[2

java入门学习:Java中的main()方法详解

本文来源:http://www.zretc.com/technologyDetail/445.html 在Java入门学习中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这

Android学习心得(16) --- Dex文件结构实例解析(2)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 这一篇我们讲述一下通过一个实例来分析dex文件结构和组成. 参考Leb128数据类型 Android学习心得(5) --- dex数据类型LEB128 参考实例分析学习理解dex文件结构Android学习心得(15) --- Dex文件结构解析(1) 参考baksmali工具使用Android学习心得(4) --- MAC下smali文件编写与运行 1.编译 我们通过一个例子来分析dex文件的构成 创建一个Hello.java文

学习心得------C语言复杂数据类型

---恢复内容开始--- 在学习c语言的过程中,最复杂的知识便是标题中的复杂数据类型了,因为包括了数组,字符串,指针等多种数据类型,在这一环节中,我们不免要接触到内存,分析出该数据类型的在内存中的存储方法,就可以比较明确的认识到该类型的运行原理,下面就分析一下我在学习该视频中的学习心得吧. 一.数组 1.数组,从字面上看,就是一组数据的意思,是的,数组的作用就是用来存储一组数据的.数组的特点是只能存放同一类型的数据,比如int 比如double. 2.数组的格式,元素类型 数组名[元素个数]  

windows类书的学习心得(转载)

原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千,很多陌生的出版社,很多陌生的作者,很多陌生的译者,书名也是越来越夸张,什么××天精通××,精通××编程, ××宝典等等,书的印刷质量真的很好,纸张的质量也是今非昔比啊,但书的内容好象却是越来越让人失望,也许是我老了,我的思想我的观念已脱离现实社会,也许是外面的世界变化得太快,我编程数月,出去一走,

黑马程序员——c语言学习心得—— 电影购票系统

黑马程序员——c语言学习心得——  电影购票系统 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,基础信息类 #import <Foundation/Foundation.h> #import "Cinema.h" void buyMovieTicket(){ //购买电影票 //调用 电影院的类的 buyTicket的方法 //                  [[Cinema alloc] init]; C

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

黑马程序员——c语言学习心得——位运算符a

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h>void func(int n, char  str[ ][5] ){int i;for(i = 0; i < n; i++)  printf("/nstr[%d] = %s/n"