热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

Java游戏编程读书笔记

Java游戏编程读书笔记--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
第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的实现提供了访问数组元素总数的一个附加长属性。
 强制转换是把变量从一种类型转换为另外一种类型的好方法,但是要小心这种方法中潜在的副作用。
推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了2019年上半年内蒙古计算机软考考试的报名通知和考试时间。考试报名时间为3月1日至3月23日,考试时间为2019年5月25日。考试分为高级、中级和初级三个级别,涵盖了多个专业资格。报名采取网上报名和网上缴费的方式进行,报考人员可登录内蒙古人事考试信息网进行报名。详细内容请点击查看。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
author-avatar
so-sweet天地
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有