c++ java 语法区别
2013-07-21 14:21:19 dangzy 阅读数 513
 首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。

main 函数
C++
//自由浮动的函数
int main( int argc, char* argv[])
{
printf( "Hello, world" );
}
Java
// 每个函数都必须是一个类的一部分;当java <class>运行是一个特定类的主函数会被调用
// (因此你可以让每个类都有一个main函数,这在写单元测试是很有用)
class HelloWorld
{
public static void main(String args[])
{
System.out.println( "Hello, World" );
}
}

类的声明
除了 Java 不要求用分号外几乎是相同的。
C++
class Bar {};
Java
class Bar {}

方法声明
都相同的, 除了在Java,方法必须总是 某个类的一部分并且可能public/private/protected 作为修饰

java修饰的是单个变量或函数,C++修饰的是其后的所有变量和函数。


构造函数和析构函数
构造函数都是相同的 (即类的名字), Java没有准确意义上的的析构函数

java可通过protected void finalize()实现析构


静态成员函数和变量
方法声明是相同的, 但 Java 提供静态初始化块来来初始化静态变量 (不需要在源文件中声明):
class Foo
{
static private int x;
// 静态初始化块
{ x = 5; }
}

对象的声明
C++
// 在栈中
myClass x;
//或者在堆中
myClass *x = new myClass;
Java
// 总是在对堆中声明
myClass x = new myClass();

继 承
C++
class Foo : public Bar
{ ... };
多继承,并且支持权限修饰public/protect/private
Java
class Foo extends Bar implements A,B,C
{ ... }
只能继承1个类或抽象类,可以继承多个interface

访问级别 (abstraction barriers)
C++
public:
void foo();
void bar();
Java
public void foo();
public void bar();

虚函数
C++
virtual int foo(); // 或者非虚函数写作 int foo();
Java
// 函数默认的就是虚函数; 用final关键字防止重载
int foo(); // 或者, final int foo();

内存管理
大体上是相同的--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;

抛异常
首先,Java在编译器强制抛异常—如果你的方法可能会抛异常你必需明确报告
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++
迭代器是类的成员。范围的开始是<容器>.begin(), 结束是 <容器>.end()。 用++ 操作符递增, 用 *操作符访。
vector myVec;
for ( vector<int>::iterator itr = myVec.begin();
itr != myVec.end();
++itr )
{
cout << *itr;
}
Java
迭代器只是一个接口。 范围的开始是 <集合>.iterator,你必须用itr.hasNext()来查看是否到达集合尾。 使用itr.next()(是在C++中使用操作符++ 和*操作的结合)来获得下一个元素。
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++
// 只需要包含一个纯虚函数
class Bar { public: virtual void foo() = 0; };
Java

// 语法上允许显示的声明!

//里面至少有一个抽象方法

abstract class Bar { public abstract void foo(); }
// 或者你也可以声明一个接口

//只能够有静态的不能被修改的数据成员

//接口中的方法一定是抽象方法,所以不用abstract修饰

interface Bar { public void foo(); }

// 然后让一个类继承这个接口:
class Chocolate implements Bar
{
public void foo() { /* do something */ }
}

引用 vs 指针
C++
//引用本身不可改变,但指向的内容可改变,通过使用指针来获得更多的灵活性
int bar = 7, qux = 6;
int& foo = bar;
Java
// 引用是可变的,仅存储对象地址;
//没有指针类型
myClass x;
x.foo(); // error, x is a null ``pointer''
// 注意你要总是用 . 来访问域

编 译
C++
// 编译
g++ foo.cc -o outfile
// 运行
./outfile
Java
// 编译foo.java文件中的类成<classname>.class javac foo.java
// 通过调用<classname>中的静态main方法来运行
java <classname>


空间

C++

namespace myspace{class A};

using namespace myspace; A a;

myspace.A a;

Java

package mypackage;

import mypackage.*; A a;

mypackage.A a;


运算符重载

C++支持大部分运算符的重载。

class Complex//声明一个复数类
{
public:
void operator =(Complex a);//赋值操作
Complex operator +(Complex a);//加法操作
Complex operator -(Complex a);//减法操作
Complex operator +(double r);//加法操作
Complex operator -(double r);//减法操作
};

Java不支持,只有String类有+和+=


模板编程

语法完全相同:class llist<T>{}; llist<A>* a=new llist<A>(10,2);

编译器实现完全不同。


注 释
两种语言是一样的 (// 和 /* */ 可以用)


转自:http://blog.csdn.net/xylary/article/details/1678413

2004-06-24 01:05:00 marcoleung 阅读数 2738

1.基本类型自动转换
自动转换要满足以下两个条件:类型兼容,目标类型范围比源类型大.
short,byte,char会自动转换为INT
当有LONG时,运算结果转换为LONG
当有DOUBLE时,会转换为DOUBLE
当有FLOAT时,会转换为FLOAT
其它的类型转换要用到显示转换

2。非整型常量
JAVA中默认的非整型常量是DOUBLE型,因此如果要指定是FLOAT型的整型的话要在数字后加上F域f,如:float f=3.2f;

3。变量的生命期及命名
在JAVA中的变量生命期是所在语句块中定义开始到语句块结束,同时,一个变量名不能在同一个类中重复定义。如
public static void main(String [] args)
{
 int x;
 {
  int x;//这里出错,不允许重复定义,不像C++那样隐藏上级同名变量
  int b;
 }
 b=2;//这里出错,超出B的生命期
}

4。逻辑常量
在JAVA中的逻辑值只有TRUE或FALSE两个,不再使用C++中的非零值就是真。


5。不规则多维数组
在JAVA中没有多维数组的概念,只有数组元素也是数组类型的概念。同时,数据的大小不再规则。如:
int x[][]=new int[3][];
int x[0]=new int[3];
int x[1]=new int[7];
int x[2]=new int[9];
也可定义类型C++中的数组int x[][]=new int[3][3];唯一要注意是在定义数组的时候不能指定数组的大小。
初始化数组可以采用以下方式:int x[]=new int[]{1,2,3,4}或int x[]={1,2,3,4},int x[][]=new int[][]{{1,2,3,4},{22,4,4}}不要企图指定数组的大小,另,在JAVA中,数组是一个对像,它拥有各种的方法及属性如 x.length得出数组的大小。

6。逻辑操作符
在JAVA中对于与操作及或操作增加了一个新的操作符“|”和“&”,它们跟“||”和“&&”的区别是后者会根据左操作表达式的值来决定是否继续执行后面的表达式的计算,如果通过左边的表达式就可以确定整个表达式的结果的话,就不会再计算其它的表达式而直接得出答案。前者则会计算所有的表达式。

 

2015-08-10 14:43:27 tuolaji8 阅读数 242







2014-06-22 15:29:01 u012329294 阅读数 318
C++与Java的语法区别

首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。

main 函数
C++

//自由浮动的函数
int main( int argc, char* argv[])
{
    printf( "Hello, world" );
}
Java
// 每个函数都必须是一个类的一部分;当java <class>运行是一个特定类的主函数会被调用
// (因此你可以让每个类都有一个main函数,这在写单元测试是很有用)
class HelloWorld
{
    public static void main(String args[])
    {
        System.out.println( "Hello, World" );
    }
}


类的声明
除了 Java 不要求用分号外几乎是相同的。 
C++
    class Bar {};
    
Java
    class Bar {}
   

方法声明
   都相同的, 除了在Java,方法必须总是 某个类的一部分并且可能public/private/protected 作为修饰


构造函数和析构函数
构造函数都是相同的 (即类的名字), Java没有准确意义上的的析构函数

静态成员函数和变量
方法声明是相同的, 但 Java 提供静态初始化块来来初始化静态变量 (不需要在源文件中声明): 
class Foo 
{
    static private int x;
    // 静态初始化块
    { x = 5; }
}

对象的声明
C++

    // 在栈中
    myClass x;
 
    //或者在堆中
    myClass *x = new myClass
;
    
Java
   // 总是在对堆中声明
    myClass x = new myClass();
   


继   承
C++
    class Foo : public Bar
    { ... };
    
Java
    class Foo extends Bar
    { ... }
    

访问级别 (abstraction barriers)
C++

   public:
        void foo();
        void bar();

    
Java
    public void foo();
    public void bar();

    

虚函数
C++

    virtual int foo(); // 或者非虚函数写作 int foo();
    
Java
    // 函数默认的就是虚函数; 用final关键字防止重载
    int foo(); // 或者, final int foo();


内存管理
大体上是相同的--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;
    

抛异常
首先,Java在编译器强制抛异常—如果你的方法可能会抛异常你必需明确报告 
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++

迭代器是类的成员。范围的开始是<容器>.begin(), 结束是 <容器>.end()。 用++ 操作符递增,  用 *操作符访。 
    vector myVec;
    for ( vector<int>::iterator itr = myVec.begin();
          itr != myVec.end();
          ++itr )
    {
        cout << *itr;
    }
    
Java
迭代器只是一个接口。 范围的开始是 <集合>.iterator,你必须用itr.hasNext()来查看是否到达集合尾。 使用itr.next()(是在C++中使用操作符++ 和*操作的结合)来获得下一个元素。 
    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++
    // 只需要包含一个纯虚函数
    class Bar { public: virtual void foo() = 0; };
    
Java
    // 语法上允许显示的声明!
    abstract class Bar { public abstract void foo(); }
 
    // 或者你也可以声明一个接口
    interface Bar { public void foo(); }
 
    // 然后让一个类继承这个接口:
    class Chocolate implements Bar
    {
        public void foo() { /* do something */ }
    }
    
引用 vs  指针
C++

    //引用不可改变,通过使用指针来获得更多的灵活性
    int bar = 7, qux = 6;
    int& foo = bar
;
    
Java
    // 引用是可变的,仅存储对象地址; 
    //没有指针类型
    myClass x;
    x.foo(); // error, x is a null ``pointer''
 
    // 注意你要总是用 . 来访问域
    
编  译
C++
    // 编译
    g++ foo.cc -o outfile
    // 运行
    ./outfile
    
Java
   // 编译foo.java文件中的类成<classname>.class    javac foo.java 
    // 通过调用<classname>中的静态main方法来运行
    java <classname
>
    
注   释
两种语言是一样的 (// 和 /* */ 可以用) 
2016-10-08 20:21:25 believexfr 阅读数 257

1--new

  c++

    int  * p = new int[m]; //一唯

 

    A** ga = new A*[m];  //二维
    for(int i = 0; i < m; i++) 
    ga[i] = new A[n]; 
    ... 
    for(int i = 0; i < m; i++) 
    delete []ga[i]; 
    delete []ga; 

 

  Java

    int   p[]  = new int[m]; //一唯

    Integer[][] map = new Integer[m][n]; //二维

 

2--string与String

   相同点:string对象和String对象都可以使用 “+”连接
   区别:

   1)  String对象无[]操作

   2)  StringBuider和StringBuffer无“+”连接,使用append连接


3--NULL与null

    C++中空指针为NULL,或者nullptr,或者为0

    Java中空对象为null

4--各种容器函数比较


   1)stack(c++)和Stack(java)
         a)取栈顶元素,top(c++)和peek(java)
         b)pop(c++)不返回值,需要用top,而pop(java)返回值
   2)quue(c++)和Queue(java)
         a)查看首元素,front(c++)
               peek(java),无元素,返回null
               element,无元素,抛出异常
                        
         b)加入元素,push(c++)
               offer(java)
         c)c++: 
              弹出元素,pop(c++)不返回该值
              java:
              poll(java),返回该值,空集返回,null
              而remove,空集抛出异常



Java和C++语法区别

阅读数 1679

今天早上写了几个控制台程序来找了几个c++和java的语法区别和几点新学会的知识:1.java中的类静态变量访问是用A.n,而c++是A:n2.java中基于安全机制,所有变量都会有默认值对变量进行初始化,二c++中只有全局变量才会有默认值初始化。3.java中类静态成员变量可以声明的时候直接初始化,而且可以在类构造函数中初始化。但C++中以上两种情况都是不允许的,只能在类外警醒初始化

博文 来自: ismallboy

C++与Java的语法区别

阅读数 12929

 C++与Java的语法区别首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。main函数C++//自由浮动的函数intmain(intargc,char*argv[]){   printf("Hello,world");}Java//每个函数都必须是一个类的一部分;当java运行是一个特定类的主函数会被调用//(因此你可以让每个类都有一个main

博文 来自: xylary

java与c++语法区别

阅读数 1431

//1.Java中字符串不能多行书写。多行书写用引号隔断,加号相连。  //2.Java的标识符可以用美元符号开头。  //3.Java中没有无符号变量或无符号常量的概念。所有的变量都是有符号的。  //4.Java中变量的字长是固定的。不存在char和wchar之分。  //5.Java中变量未初始化就使用将是编译错误。  //6.Java中不能把0和非0整数当bo

博文 来自: sdnujun

C++与Java的语法区别

阅读数 448

C++与Java的语法区别首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。main函数C++//自由浮动的函数intmain(intargc,char*argv[]){   printf("Hello,world");}Java//每个函数都必须是一个类的一部分;当java运行是一个特定类的主函数会被调用

博文 来自: zhoujiaxq

C++与Java的语法区别

阅读数 336

C++与Java的语法区别首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。main函数C++//自由浮动的函数intmain(intargc,char*argv[]){   printf("Hello,world");}Java//每个函数都必须是一个类的一部分;当java运行是一个特定类的主函数会被调用

博文 来自: mrwangwang
没有更多推荐了,返回首页