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

[b]关于作用域[/b]
在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已经定义过。
所以,[color=red]在C和C++里讲一个较大作用域的变量“隐藏”起来的做法,在Java里是不允许的[/color]。


[b]基本成员的默认值[/b]
若类的某个成员(属于类的字段)是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值,

基本类型 默认值
Boolean false
Char ‘\u0000’(null)
Byte (byte)0
Short (short)0
Int 0
Long 0L
Float 0.0f
Double 0.0d

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

int x;

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

您的帖子[color=red]:[基础知识] C/C++ 与 Java 区别 被JavaEye用户投票评为新手帖帖,积分-10分。[/color]"小聪明"被识破. 嘿嘿.. 此贴确实够新手的. O(∩_∩)O哈哈~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值