论坛首页 入门技术论坛

[TIJ] [part1] C/C++ 与 Java 区别

浏览 1410 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-04-10   最后修改:2010-04-11
关于作用域
在C、C++和Java中,作用域由花括号的位置决定的。例如:
{
  int x = 12;
  //Only x available
  {
    int q  = 96;
    //Both x & q available
  }
  //Only x available
  //q is “out of scope”
}

在作用域里定义的变量只可用于作用域结束之前。
尽管一下代码在C和C++中合法的,但是在Java中却不能这样书写:
{
  int x = 12;
  {
    int x = 96; //illegal
  }
}

编译器将会报告变量x已经定义过。
所以,在C和C++里讲一个较大作用域的变量“隐藏”起来的做法,在Java里是不允许的


基本成员的默认值
若类的某个成员(属于类的字段)是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值,
基本类型	默认值
Boolean		false
Char 		‘\u0000’(null)
Byte		(byte)0
Short		(short)0
Int			0
Long		0L
Float		0.0f
Double		0.0d

  当变量作为类的成员变量使用时,Java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化(C++没有此功能),防止产生程序错误。但是,这些初始值对你的程序来说,可能是不正确的,甚至是不合法的。所以最好明确地对变量进行初始化。
  然而上述确保初始化的方法并不适合于“局部”变量(即并非某个类的字段),因此,如果再某个方法定义中有
  int x;

  那么变量x得到的可能是任意值(与C和C++中一样),而不会被自动初始化为零。所以在使用x前,应先对其赋一个适当的值。如果忘记了这么做,Java会在编译时返回一个错误,告诉你此变量没有初始化,这正是Java优于C++的地方。(许多C++编译器会对未初始化变量给予警告,而Java则视为错误)。

您的帖子:[基础知识] C/C++ 与 Java 区别 被JavaEye用户投票评为新手帖帖,积分-10分。"小聪明"被识破. 嘿嘿..  此贴确实够新手的. O(∩_∩)O哈哈~
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics