c++程序员如何快速上手java

1 数据类型

    c++:在c++中可以分为内置数据类型和自定义数据类型(类,struct等),这些数据类型又可以分为指针和非指针类型

    java:在java中和c++有一些不同,java中分为内置数据类型和引用数据类型,除了内置类型(byte,short,int,long,float,double,boolean,char)以外都是引用类型,比如数组,字典,对象等,这就意味着这些类型作为参数是是引用传递的,这和c++有着很大的区别,在c++中这些可以是值传递的。

2 常量

    c++:const来声明      java:final来声明

3 类成员变量的访问权限

    c++:在c++中有public,private,和protect三种类型

    java:java中也有以上三种权限并且其含义也大致无异,初次之外比c++多一种类型叫做defalut即默认类型不加任何修饰符的成员,此时这些类型只能在同一包中可见,这里和c++有明显的不同,c++中默认为private类型。

4 继承

    c++:在c++中继承基本上没有什么限制(有虚函数的除外),虽然这么说一般我们避免过于复杂的多继承

    java:在java中继承有一些不同,java中可以有两种继承方式,extends只能实现单继承,即它只能有一个父类,implements可以实现多继承,继承多个父类或者接口,java中所有对象都继承自object类,而c++没有统一的父类。

5 接口

    c++:c++中其实没有真正的接口的定义,在c++中通过纯虚类即抽象类(含有纯虚函数的类)来实现接口。

    java:java中有interface关键字来实现接口,但是他和c++的有很大的区别,首先java中的interface它不是类,这是最大的区别,其次他的每一个方法都是抽象方法,不能有成员变量(除了static和final变量),不能有构造方法,最重要的是它不是被子类继承了而是被实现了(对于c++来说其实是继承了接口,并实现了其中的抽象方法)。说到这c++的接口跟java的抽象类更相似一点,感觉java的抽象类跟c++的接口(抽象类)差不多。只是java特殊的实现了接口的定义,而c++没有。

6 this

    c++:c++中是一个隐藏的指向自己指针,可以通过指针访问自身的成员变量和函数,

    java:this是一个指向自己的引用,通过this同样可以访问自己的成员变量和函数,但是java中可以在构造函数中通过this调用另外一个构造函数,这在c++中是不允许的。

7 文件管理

    c++:c++中继承了c的特点,通过#include并结合namespace来实现。

    java:java主要通过包package来实现程序文件的管理,和golang的很像,引入包都是通过import来实现,因该是golang在实现上借鉴了java包管理

8 模版函数和模版类

    c++:c++中的模版参数可以是参数类型也可以是非参数类型(比如一个int值)  

    java:java中模版参数只能是参数类型

9 多态

    c++:c++中的多态(这里只讨论运行时多态)通过virtual函数实现

    java:java中的多态实现方式跟c++有很大的区别,她可以通过重写,接口,抽象类和抽象方法来实现,可以这么认为java中的普通的非静态成员函数都是virtual,当你在子类中重写了该方法就可以实现多态,而c++中必须通过virtual生命才能实现多态,这点很重要。

10 类

    java的类和c++的类有些设计上的不同,java可以用public来声明类,此时java的源文件名必须和类名相同,并且一个文件只能有一个public 类,而c++中public只能用来声明类的成员。在 Java 中,类定义采取几乎和 C++一样的形式。但没有标志结束的分号。没有 class foo 这种形式的类前向声明,只有类定义。

11 语言类型

    c++:编译型,手动管理内存。 java:解释型,运行在java虚拟机之上,系统管理内存。

12 编程思想

    c++:面相对象也可面向过程(不推荐)  java:面相对象

13 作用域符号::

    Java 中没有作用域范围运算符“ ::”。 Java 利用点号做所有的事情,因为只能在一个类里定义元素。即使那些方法定义,也必须在一个类的内部,所以根本没有必要指定作用域的范围。还有对 static 方法的调用:使用 ClassName.methodName()。Java 中不必进行提前声明。若想在定义前使用一个类或方法,只需直接使用它即可, 编译器会保证使用恰当的定义。

14 运算符

    Java 增添了无符号右移位运算符“ >>>”,忽略符号位,符号位补0。“ >>”则会在移位的同时插入符号位(即“算术”移位)。

15 内存管理

    c++对象可以在栈上,堆上或者静态存储区,java所有对象都在堆上,c++需要程序员手动进行内存管理,而java则不需要,java虚拟机会自动帮助我们管理内存,但是如果我们写出了错误的程序,java虚拟机有时候也无能为力。

16  预处理

    Java 没有预处理机。若想 使用另一个库里的类,只需使用import 命令,并指定库名即可。不存在类似于c++预处理机的宏。

17 构造函数

   java和c++一样有构造函数,但是java没有copy构造和移动构造(c++11),因为java所有对象都是引用传递。(注:java可以手动实现类似于c++拷贝构造的函数)

18 标准库容器

   java的标准库要比java丰富强大很多,单一个map,list等在c++中很单一的东西,java中有很多种实现方式,不同的实现方式适用于不同的场景,在使用之前先了解一下他们的优点然后选择适合的实现来使用。

  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
第一部分:基础篇[1] 第一章主要是手机游戏概述,包括游戏概述、手机游戏类型和开发平台的分析;   第二章介绍手机游戏的策划,包括分析玩家需求,编写策划文案,游戏原型的实现。   第三章介绍C、C++编程基础,对于游戏程序员来讲会C语言是开发各平台游戏的必备语言,本书从实战角度,通过案例方式让读者快速了解C语言和C++语言的语法特点,对于原来从事Java开发的程序员可以快速对比,进而掌握C++语言的使用。   第二部分:Cocos2d-x技术篇   第四章主要介绍Cocos2d-x的环境搭建和HelloWorld的项目实现,通过本章读者可以快速上手开发一个最简单的移动游戏UI,并通过该案例以了解Cocos2d-x的运行原理。   第五章主要介绍Cocos2d-x核心技术,这里包括Cocos2d-x的核心类CCDirector、CCScene、CCNode、CCLayer、CCSprite、CCAction等,通过案例来介绍Cocos2d-x的场景、图层、交互、动作、动画、粒子效果、游戏地图、物理引擎,并详细介绍了Cocos2d-x 2.2.1版本中所有自带Demo的功能。   第三部分:Cocos2d-x游戏实例篇   第六章用一款完整游戏项目《飞机大战》设计来详解手机游戏的开发流程,介绍了游戏进度和游戏菜单的实现、游戏按键处理与碰撞检测等。   第七章介绍了DeepBlueX引擎,这是对Cocos2d-x的二次封装,通过封装让开发者通过状态机的方式来规划游戏的整体架构,并介绍了通过DeeepBlueX引擎实现了《飞机大战》。   第八章主要介绍Cocos2d-x网络编程与网络游戏的实现,包括网络游戏模型、使用Apache搭建网络游戏服务器端、使用Cocos2d-x实现Http网络连接、使用BSD Socket实现Socket通讯。   第四部分:产品发布篇   第九章主要介绍介绍游戏打包与发布,包括发布游戏要准备的项目、制作游戏介绍文档和图标、以及如何寻找发布渠道。
毕业设计开题报告 计算机科与技术 基于Java的坦克大战游戏的设计与实现 一、综述本课题国内外研究动态,说明选题的依据和意义 本课题国内外动态: 最早的电脑游戏可以追溯到1972年,WillCrowther用当时最流行的DEC的PDP- 10主机编写了一段简单的FORTRAN程序。在这个程序里,Crowther设计了一张地图,地图 上不规则的分布着陷阱,游戏者必须寻找路径避开陷阱。这个程序在后来被认为是最早 的电脑游戏程序。而如今,游戏产业已经发展成为一个拥有巨大利润的成熟产业。从上 世纪60年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机 ,日本经过30多年的发展,终于把电子游戏培育成第一时尚娱乐产业,垄断全球业界长 达10余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在GNP中占有1/5的举 足轻重地位。日本游戏业在最辉煌的1998年,曾经占领全球电子游戏市场硬件90%以上, 软件50%以上。根据美国市场调查公司NPD Group调查统计,美国2004年游戏总销售金额(包括家用、掌上型主机及软件)为99亿美 元,占了全球游戏市场的45%。其中游戏软件销售的具体数字是:视频游戏软件的销售额 达52亿美元(1.6亿套),PC游戏软件销售额达11亿美元(4500万套),掌机游戏销售额达1 0亿美元(4230万套)。2004年一共大约有2.48亿套游戏售出。据估计,美国每个家庭平均 购买过2部游戏。目前中国游戏市场已经成为国际公认最具发展潜力的市场,产业产值每 年都以近50%的增长率高速增长。游戏行业虽然在我国起步晚,但发展的势头迅猛。国家 信息产业部已将游戏产品的技术开发列为"863计划"重点项目之一。 游戏编程涉及图形图像、实时输入获取、逻辑控制、音乐音效编程、人工智能等方面 。不同于一般的图形应用程序,游戏图像对硬件有着严格甚至于苛刻的要求。游戏开发 人员总是想着如何发挥现有的硬件的极限性能以实现更华丽更逼真的游戏图形效果。这 不仅需要硬件技术的发展支持,也要求游戏程序员在数据结构、图形算法领域不断地加 以突破。 Java是定义位于网络计算的计算机语言,它几乎所有的特点也是围绕着这一中心展开 的并为之服务的,这些特点使得Java语言特别适全于用来开发网络上的应用程序;另外 ,作为一种面世较晚的语言,Java也集中体现和充分利用了若于当代软件技术新成果, 如面向对象、多线程等,这些也都在它的特点中有所反映。 1 开台无关性 如前所述,Java语言独特的运行机制使得它具有良好的二进制级的可移植性,利用J ava,开发人员可以编写出与具体平台无关、普遍适用的应用程序,大大降低了开发、维 护和管理的开销。 2 面向对象 Java是面向对象的编程语言。面向对象技术较好地适应了当今软件开发过程中新出现 的种种传统面向过程语言所不能处理的问题,包括软件开发的规模扩大、升级加快、维 护量增大经及开发分工日趋细化、专业化和标准化等,是一种迅速成熟、推广的软件开 发方法。面向对象技术的核心是以更接近人类思维的方式建立计算机逻辑模型,它利用 类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,使反 映现实世界实体的各个类在程序中能够独立、自治、继承;这种方法非常有利于提高程 序的可维护性和可重用性,大大提高了开发效率和程序的可管理性,使得面向过程语言 难于操纵的大规模软件可以很方便的创建、使用和维护。 3 安全稳定 对网络上应用程序的另一个需求是较高的安全可靠性。用户通过网络获取并在本地运 行的应用程序必须是可依赖的,不会充当病毒或其他恶意操作的传播者而攻击用户本地 的资源;同时它还应该是稳定的,轻易不会产生死机等错误,使得用户乐于使用。 4 支持多线程 多线程是当今软件技术的又一重要成果,已成功应用在操作系统、应用开发等多个领 域。多程序技术允许同一个程序有两个执行线索,即同时做两件事情,满足了一些复杂 软件的需求。Java不但内置多线程功能,而且提供语言级的多线程支持,即定义了一些 用于建立、管理多线程的类和方法,使得开发具有多线程功能的程序变得简单、容易和 有效。 5 简单易 如前所述,衍生自C++Java语言,出于安全稳定性的考虑,去除了C++中不容不得易 理解和掌握的部分,如最典型的指针操作等,降低了习的难度;同时 Java还有一个特 点就是它的基本语法部分与C语言几乎一模一样。这样,无论是JavaC,还是已 经掌握了C语言再业Java,都会感到易于入门。 选题的依据和意义: 坦克是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经 济价值可以说是游戏史上的一件大事。 它看似简单但却变化无穷,令人上瘾,对一般用户来说,它的规则简单,容易上手,且 游戏过

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值