首先,两件大事-主函数和怎样编译,下面是它们的小差别:
主函数
C++
// 自由函数
int main( int argc, char* argv[])
{
printf( "Hello, world" );
}
Java
// 每个函数必须是类成员;当java类运行时类中的主函数就会被调用
//(所以你可以为每个类写一个主函数--这样用于给类写单元测试时会很方便)
class HelloWorld
{
public static void main(String args[])
{
System.out.println( "Hello, World" );
}
}
编译
C++
// 编译
g++ foo.cc -o outfile
// 运行
./outfile
Java
// 编译在foo.java里的类成为<类名>.class
javac foo.java
// 调用<类名>中的静态main函数
java <classname>
注释
两种语言完全相同 (// 和 /* */ 都能工作)
类声明
大部分一样,除了Java不要求后面有个分号
C++
class Bar {};
Java
class Bar {}
方法声明
基本相同,除了Java中必须是类成员并且可能有public/private/protected前缀之外。
构造和析构
构造语法相同,Java没有析构的等价物。
静态成员函数和变量
方法声明方式相同,不过Java提供了static initialization blocks
来初始化静态变量(代替在源码文件中放定义):
class Foo
{
static private int x;
// static initialization block
{ x = 5; }
}
对象声明
C++
// 栈对象
myClass x;
// 堆对象
myClass *x = new myClass;
Java
// 总是分配在堆上(而且,构造总是要写括号)
myClass x = new myClass();
引用vs.指针
C++
// 引用是不可改的,使用指针能得到更大的弹性
int bar = 7, qux = 6;
int& foo = bar;
Java
// 引用是可改的,它仅存放对象的地址。没有原生指针。
myClass x;
x.foo(); // 错误,x是空“指针”
// 注意Java里总是使用 . 存取域
继承
C++
class Foo : public Bar
{ ... };
Java
class Foo extends Bar
{ ... }
保护级别
C++
public:
void foo();
void bar();
Java
public void foo();
public void bar();
虚函数
C++
virtual int foo();
Java
// 函数默认就是虚函数;使用final防止被重载
int foo();
抽象类
C++
// 只要包含一个纯虚函数
class Bar { public: virtual void foo() = 0; };
Java
// 可以用语法直接定义
abstract class Bar { public abstract void foo(); }
// 或者指定为接口
interface Bar { public void foo(); }
// 然后,用一个类实现implement
它:
class Chocolate implements Bar
{
public void foo() { /* do something */ }
}
内存管理
大致相同--new
分配, 不过因为Java著名的垃圾回收机制所以没有delete
。
NULL vs. null
C++
// 初始化指针为NULL
int *x = NULL;
Java
// 使用未初始化的引用会被计算机捕获,不过可以赋值为null指明引用为无效。
myClass x = null;
布尔值
Java要长一点,你得写boolean来代替简短的bool。
C++
bool foo;
Java
boolean foo;
常量
C++
const int x = 7;
Java
final int x = 7;
Throw说明
首先, Java在编译时强制要求有throw说明-如果一个方法要抛出一个异常你必须先说明它
C++
int foo() throw (IOException)
Java
int foo() throws IOException
数组
C++
int x[10];
// 或者
int *x = new x[10];
// 使用x然后收回内存
delete[] x;
Java
int[] x = new int[10];
// 使用x,内存由垃圾回收机制回收
集合和迭代
C++
迭代器是类成员,一个范围起始于<container>.begin(), 终止于<container>.end(). 使用++操作前进,使用*存取。
vector myVec;
for ( vector<int>::iterator itr = myVec.begin();
itr != myVec.end();
++itr )
{
cout << *itr;
}
Java
迭代器仅仅是一个接口。一个范围起始于<collection>.iterator, 接着使用itr.hasNext()检查确认是否已到末尾。使用itr.next()取得下一个数据。
ArrayList myArrayList = new ArrayList();
Iterator itr = myArrayList.iterator();
while ( itr.hasNext() )
{
System.out.println( itr.next() );
}
// 在Java 5中:
ArrayList myArrayList = new ArrayList();
for( Object o : myArrayList ) {
System.out.println( o );
}
分享到:
相关推荐
C++和Java的语法对比手册
《Java常用算法手册》分三篇,共13章,分别介绍了算法基础、算法应用和算法面试题。首先介绍了算法概述,然后重点分析了数据结构和基本算法思想;接着,详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏...
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...
各类语言语法chm文件收藏 [VC知识库精华珍藏版].bbsprime VC++ 编程指南 VC编程文件集锦 vc新手学堂 c++标准库函数(cn) 8086精解 汇编语言课件 dos程序员参考手册 flash动作脚本 CSS 2.0中文手册(含索引) htmlDOM...
该手册提供了全面的C++23标准库和语言特性的介绍,包括语法、关键字、数据类型、控制结构、函数、指针、类和对象、继承、多态性、模板和异常处理等内容。 该手册以离线chm格式提供,方便用户在没有互联网连接的情况...
各类语言语法chm文件收藏 [VC知识库精华珍藏版].bbsprime VC++ 编程指南 VC编程文件集锦 vc新手学堂 c++标准库函数(cn) 8086精解 汇编语言课件 dos程序员参考手册 flash动作脚本 CSS 2.0中文手册(含索引) htmlDOM...
我以前学习程序设计的时候,老是记不住语法和函数,后来才知道每种程序设计语言都有自己的手册,在几年的学习中,积累了主要程序设计语言的指导手册,现在上传上去,希望对大家有帮助。 该文件主要包括 程序设计语言...
如果读者采用其他的编程语言,例如C++、C、C#等,只要根据其语法格式进行适当的修改便可以了。 本书旨在帮助Java语言初级程序员深入了解ava算法思想,提升其语言代码编程能力,还可以作为大中专院校学生学习数据结构和...
Java是一门编程语言,Java发展到今天,已经成为了一个真正意义上的语言标准,如果学习过(C、C++、Java)可以发现语法结构是很类似的,但是Java的标准指的是一种作为应用层封装的标准,使用Java可以调用一些底层的...
Jave script 语法电子手册
这个压缩包里面包括了我收集的一些很经典的资料,在这里我发出来与大家分享一下:...java设计模式迷你手册.chm 编程_C语言--论坛(精华).chm C语言-Windows内存管理机制.chm CSDN论坛-算法精华.chm SQL语法祥解.doc
本书以一种清晰而易懂的方式,全面介绍了C++语言的各个方面,如关键字、语法、函数、类和库,以及一些C++高级特性,如重载、继承、虚拟函数、命名空间、模板、RTTI(运行时类型信息),以及STL(标准模板库)等。...
全中文手册,包括三个部分 第一部分:基础教程,含 教程,安装,命令,语法,数据类型,创建数据库,附加数据库,分离数据库,创建表,删除表,insert语句,select语句,运算符,表达式,where子句,and/or运算符,...
如果读者采用其他编程语言,例如C++、C#、VB、Java等,根据其语法格式进行适当的修改即可。 《C/C++常用算法手册 》主要定位于有一定C/C++语言编程基础、想通过学习算法与数据结构提升编程水平的读者,也可作为...
在Version2、Version1基础上修改、增加了一点题; 没工作经验的人找C、C++、Java、软件测试方面的工作要看的题,跳槽的也可以看下,都是笔试中常见的题。题目很多,网上流传的笔试题大部分都...SQL语法手册.rar; unix
CPP_C++_Reference.chm CSS2.0中文手册.chm EJB.chm Hibernate_3.2.0_Reference_zh_CN.chm html语法教程.chm J2EE 1.3.1 API.chm J2EE_6.0_API.chm Javascript10.chm JAVA中文_API.CHM JDK_API_1_6_zh_CN.CHM.lnk ...
fortify扫描工具的说明手册,对实际工作有指导作用,讲的比较清晰。 Fortify SCA分析原理 Front-End 3rd party IDE Java Pug-In C/C++ MicrOsoL NET IBM.eclipse Audit workbench PLSQL XML Analysis Engine ...