JAVA与C++ 语法差异

一、基础类型

java中8种基础类型

1.  byte 数据类型是8位、有符号的,以二进制补码表示的整数,默认值为0

      表达范围是:-128(-2^7) ~ 127(2^7-1)

      取值范围已经定义在包中:Byte.SIZE,Byte.MIN_VALUE,Byte.MAX_VALUE

2. short 数据类型是16位、有符号的以二进制补码表示的整数,默认值为0

      表达范围:-32768(-2^15) ~ 32767(2^15 - 1)

      取值范围已经定义在包中:Short.SIZE,Short.MIN_VALUE,Short.MAX_VALUE

3. int数据类型是32位、有符号的以二进制补码表示的整数,默认值为0

      表达范围:-2,147,483,648(-2^31) ~ 2,147,483,647(2^31 - 1)

      取值范围已经定义在包中:Integer.SIZE,Integer.MIN_VALUE,Integer.MAX_VALUE

4. long数据类型是64位、有符号的以二进制补码表示的整数,默认为0L

      表达范围:(-2^63) ~ (2^63 -1)

       取值范围已经定义在包中:Long.SIZE,Long.MIN_VALUE,Long.MAX_VALUE

5. float 数据类型是单精度、32位、符合IEEE 754标准的浮点数,默认值为0.0f

       取值范围已经定义在包中:Float.SIZE,Float.MIN_VALUE,Float.MAX_VALUE

6. double数据类型是双精度、64位、符合IEEE 754标准的浮点数,默认值为0.0d

       取值范围已经定义在包中:Double.SIZE,Double.MIN_VALUE,Double.MAX_VALUE

7. boolean数据类型表示一位的信息,只有两个取值:true和false,默认值为false

8. char类型是一个单一的16位Unicode字符

      取值范围已经定义在包中:Character.SIZE,Character.MIN_VALUE,Character.MAX_VALUE

C++的基本类型

1. int(分为有符号整型 和 无符号整型),32位机器下占32位(以下均以32位机器为例)

2. short(分为有符号整型 和 无符号整型),16位

3. long(分为有符号整型 和 无符号整型),32位,不同于java的64位

4. float(分为有符号整型 和 无符号整型),32位

5. double(分为有符号整型 和 无符号整型),64位

6. char(分为有符号整型 和 无符号整型),8位,不同于java的unicode16位

7. bool ,1位

8. void,空类型,0位

 

二、常量

常量指不能改变的量。

在JAVA中用final标志,声明方式和变量类似:final double PI = 3.1415927;

在C++中用const标志: const double PI = 3.1415927; (编译阶段,会做语法检查、类型安全检查)

在C中用 #define标志:#define PI  3.1415927 (预处理阶段,进行简单的文本替换)

 

三、Java 修饰符

1. 访问修饰符

同一个类中:

 publicprotectedprivate默认的
JAVA对所有类可见同一包内的类和所有子类可见在同一类内可见不使用任何修饰符,即default类型,在同一包内可见
C++共有的,public成员变量、成员函数,可以通过类的成员函数、类的实例变量进行访问受保护的,protected成员变量、成员函数,无法通过类的实例变量进行访问。但是可以通过类的友元函数、友元类进行访问私有的,成员变量、成员函数,无法通过类的实例变量进行访问。若不声明,则默认为private

类的成员函数,可以访问该类中任意的其它成员函数及成员变量,即使它是private和protect

类的实例对象,只能够访问public成员函数和变量,不能访问protect和private

 

继承关系中:

 publicprotectedprivate 
JAVA父类中声明为public的方法在子类中也必须为public父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。父类中声明为private的方法,不能够被继承。父类中默认修饰符声明的方法,能够在子类中声明为private
C++

派生类通过public继承,基类的各种权限不变。

派生类的成员函数,可以访问基类的public成员、protected成员,但是无法访问基类的private成员。
派生类的实例变量,可以访问基类的public成员,但是无法访问protected、private成员,仿佛基类的成员之间加到了派生类一般。

派生类通过protected继承,基类的public成员在派生类中的权限变成了protected 。protected和private不变。
派生类的成员函数,可以访问基类的public成员、protected成员,但是无法访问基类的private成员,派生类的友元类也不能访问。
派生类的实例变量,无法访问基类的任何成员,因为基类的public成员在派生类中变成了protected。
派生类通过private继承,基类的所有成员在派生类中的权限变成了private。
派生类的成员函数,可以访问基类的public成员、protected成员,但是无法访问基类的private成员,派生类的友元类也不能访问。
派生类的实例变量,无法访问基类的任何成员,因为基类的所有成员在派生类中变成了private。
必须指定继承类型

 

Java程序的main() 方法必须设置成公有的,否则,Java解释器将不能运行该类

2. 非访问修饰符

  2.1  static修饰符,用来创建类方法和类变量

  2.2  final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的(C++中用 const)

  2.3  abstract修饰符,用来创建抽象类和抽象方法(C++中用 virtual)

  2.4 synchronized和volatile修饰符,主要用于线程的编程。

        synchronized关键字声明的方法同一时间只能被一个线程访问(C++中用线程异步:mutex、Critical Section、event和semaphore)

volatile(C++中也有volatile,但并不适用于多线程)

 

四、运算符

JAVA中有一个instanceOf 运算符,是C++所没有的。

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)

使用实例:

例1:
String name = 'James';
boolean result = name instanceOf String; // 由于name是Strine类型,所以返回真


例2:
class Vehicle {}
public class Car extends Vehicle
{
   public static void main(String args[])
   {
      Vehicle a = new Car();
      boolean result =  a instanceof Car;
      System.out.println( result);
   }
}

 

五、循环结构

 JAVA除了跟C++一样有 while; do...while; 和for循环之外,Java5引入了一种主要用于数组的增强型for循环,语法如下:

for(声明语句 : 表达式)
{
   //代码句子
}

例子:

public class Test 
{
   public static void main(String args[])
   {
      int [] numbers = {10, 20, 30, 40, 50};

      for(int x : numbers )
      {
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      String [] names ={"James", "Larry", "Tom", "Lacy"};
      for( String name : names )
      {
         System.out.print( name );
         System.out.print(",");
      }
   }
}

六、Number类

所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类

JAVA有个Math类,包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。

Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用

 

七、Java Character类

Java语言为内置数据类型char提供了包装类Character类

 

未完待续...

 

 

 

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值