Java游戏编程读书笔记(2)

2008-02-23 09:14:08来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

第2章 预备:学习Java 2 API
Java程序的结构
基本Java数据类型,包括String和数组
数值和条件运算符,以及它们的优先运算顺序
条件语句,包括控制语句和循环语句
使用throws语句和try-catch的异常处理
2.1 Game Over!程序
2.1.1 import语句
Java对象被组织到包中。为了方便组织,包中包括了相关的类。Java API包含75个包(总共大约2000个类,JDK 1.4.0)
C 注解:Java中的import关键字与C 中的#include指示相似,仅有的不同是java中头文件和源文件之间没有差别。对类的声明和实现都包含在一个.java文件中。
2.1.2 给Java代码加注释
在工作中一定要写注释,但是也要避免过度的注释,过度的注释只能使代码混乱并在很大程度上干扰注意力。
注意C风格注释不要嵌套。第一个“*/”会使最近的“/*”失去作用。
2.1.3 Java类声明
2.1.4 Java方法声明
C 注解:Java中的main方法与控制台C或C 应用程序中的典型main函数相似。注意在Java中,它必须在一个类中定义,而在C和C 中必须全局定义。此外,Java中的main方法总是返回void,与C或C 的main函数不同,它们可以有多个返回类型。
2.1.5 Java中的代码块
2.1.6 Java程序组成部分的关键点回顾
? 使用import语句使编译器知道要用的库
? 注释能在很多方面帮助程序员,但是不正确使用它会弊大于利
? 用Java写的一切都被封装成类,即使程序的开始点即main方法也不例外
? 一个代码块是完成一个特定任务相关的语句。代码块保持程序的结构化并且容易读写
2.2 比特和字节:原始的Java类型
程序中应写些什么呢?答案是:数据,程序没有数据就不能生存,尤其是游戏。
Java是面向对象语言。但是,Java不是百分百的面向对象,因为Java支持8种原始类型。
2.2.1 基本的整数类型
通常而言,对于游戏开发,一般会使用int型表示整数数据,而忽略long,short和byte型。因为int型的取值范围大于40亿,通常使用它比较安全。
2.2.2 浮点类型
一个常量浮点值要能被真正看作float,它必须以f(或F)后缀结束;否则,会被当作double值。对于double值来说,d(或D)后缀是可选的。
至今,通常使用哪种类型来存储浮点数还没有定论。双精度在本质上给了我们相对于浮点数两倍的精度,但是,这是有代价的——通常是内存的消耗。Java API中大部分的方法返回类型和数据成员时使用double型。
2.2.3 Char类型
Java中一个字符(char)表示Unicode字符集中的一个元素。Unicode字符由16位组成,因此,有216(65535)个不同的字符可用,这与C 的标准128个ASCII字符大不相同。Unicode字符集给了我们很大的灵活性,它能包含所有不同语言的字符,以及数学、科学、文字中的常用符号。
字符由单引号括起来的单个字符表达,通常用16进制表示,范围从’\u0000’到’\uFFFF’(u告诉编译器你在用两个字节[16位]字符信息表示一个Unicode字符)。
C 注解:注意,与C 不同,Java中一个字符数组没有必要组成一个字符串。稍后将会看到,Java API定义了自己的String类型。一般只有敏感信息,如密码字段,才会作为字符数组处理。这是因为,Java对象在没有被Java虚拟机作为不被引用的对象清空之前一直驻留在内存中。如果有精明的黑客潜进系统,则把敏感数据留在内存中可能会造成危险的局面。
想得到更多的关于Unicode字符集的信息,以及字符的完整列表,可以到http://www.unicode.org网站上查看。
2.2.4 布尔型
Java中,任何一个boolean变量只有两个有效值:true和false。boolean型没有等价的数值赋值,也不允许类型转换。还有,注意所有的if和while声明都相当于一个boolean结果。
2.2.5 String类型
Java中的String类型并不是原始类型!它实际上是一个Java类。
复制数组:
如果需要将一个数组中的值复制给另一个数组,可以使用System类中预定义的arrayCopy方法。
System.arrayCopy(Object src,int src_position,Object dst,int dst_position,int length);
其中,src指的是从中复制的源数组,src_position指源数组的开始下标,dst指的是复制的目的数组,dst_option指的是目的数组的开始下标,length指定复制的数组元素的个数。
多维数组:
数组可以使问题变量很简单,但如果使用不恰当则会使问题变得异常复杂。如果在是否使用数组来解决某个问题上不确定,下面的提示可能会有一些帮助:
? 在纸上简写出要解决问题。如果数据不能以行和列的方式组织,那么使用数组可能不是最好的解决方法。
? 在写自己的数组工具,如排序和查询算法之前,查看一下Java API。通常从Java.util.Arrays包开始查看比较好。无疑Java包会节约你的时间,而且要写出比API中提供的算法更有效的代码是很难的。
? 虽然可以把数组定义为三、四、五或更多维,但是用这些取代二维数组后,事情会变得很复杂。如果你需要使用超过三维的数组,试着检测能否设计或找到另外一种数据结构来使用,比如树,这很可能会更简洁有效地解决问题。
2.2.6 强制转换变量类型
C 注解:与C 不同,Java boolean类型没有等价的数值赋值。因此没有可以直接地把一个boolean转换为int变量的方法。把boolean值转换到另外一种类型最快方式可能如下所示:
boolean gameStarted=true;
int game=gameStarted?1:0;
虽然这里没有强转,但是一行代码也可以实现转换。
最后,关于变量还有需要注意的地方。在Java中,没有typedef操作符,也没有与#define预编译指令等价的操作。虽然这可能要花费一些时间来适应,但是它会帮助排除错误并且使代码更清晰。因此,对于那些喜欢写很多“神秘”代码的人,再也不能定义一个如fa26b9这样的变量类型了。
2.2.7 Java数据类型、数组和标识符需要记忆的要点
? Java中的8种原始数据类型byte,short,int,long,float,double,boolean和char本身不是Java类,但它们是类中不可缺少的部分。
? Java中的数组可以与C和C 中大致一样地编写,但是Java的实现提供了访问数组元素总数的一个附加长属性。
? 强制转换是把变量从一种类型转换为另外一种类型的好方法,但是要小心这种方法中潜在的副作用。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:侵入,无侵入? Annotation vs Interface

下一篇:一个使用多线程删除指定目录及子目录下所有指定文件的Java程序(