java faq_Java FAQ(4)

四、 关键字篇

Q4.1  java里面怎么定义宏?

答:java不支持宏,因为宏代换不能保证类型安全。如果你需要定义常量,可以将它定义为某个类的static final成员。参见Q4.2和Q4.6。

Q4.2  java里面没法用const。

答:你可以用final关键字。例如 final int m = 9。被声明为final的变量不能被再次赋值。唯一的例外是所谓blank final,如下例所示:

public class MyClass1 {

private final int a = 3;

private final int b; // blank final

public MyClass1() {

a = 5; // 不合法,final变量不能被再次赋值。

b = 4; // 合法,这是b第一次被赋值。

b = 6; // 不合法,b不能被再次赋值。

}

}

final也可以用于声明方法或类,被声明为final的方法或类不能被继承。

注意const是java的保留字以备扩充。

Q4.3  java里面也不能用goto。

答:甚至在面向过程的语言中你也可以完全不用goto。请检查你的程序流程是否合理。如果你需要从多层循环中迅速跳出,java增强了(和C++相比)break和continue的功能,支持label。

例如:

outer :

while( ... )

{

inner :

for( ... )

{

...   break inner; ...

... continue outer; ...

}

}

和const一样,goto也是java的保留字以备扩充。

Q4.4  java里面能不能重载操作符?

答:不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实现类似功能。

Q4.5  我new了一个对象,但是没法delete掉它。

答:java有自动内存回收机制,即所谓Garbarge Collection。你不需要删除对象。你再也不用担心指针错误,内存溢出了。

Q4.6  我想知道为什么main方法必须被声明为public static?为什么在main方法中不能调用非static成员?

答:声明为public是为了这个方法可以被外部调用,详情见Q5.4。

static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。你不需要创建一个对象就可以直接使用这个类的static成员,因而在static成员中不能调用非static成员,因为后者是关联到对象实例(instance)的。在A类中调用B类的static成员可以使用B.staticMember的写法。注意一个类的static成员变量是唯一的,被所有该类对象所共享的,在多线程程序设计

中尤其要谨慎小心。类的static成员是在类第一次被JRE装载的时候初始化的。你可以使用如下方法来使用非static成员:

public class A

{

private void someMethod() //非static成员

{}

public static void main(String args)

{

A a = new A();  //创建一个对象实例

a.someMethod();  //现在你可以使用非static方法了

}

}

Q4.7  throw和throws有什么不同?

答:throws用于方法声明中,声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常的动作。如果你在方法中throw一个异常,却没有在方法声明中声明之,编译器会报错。注意Error和RuntimeException的子类是例外,无需特别声明。

Q4.8  什么是异常?

答:异常最早在Ada语言中引入,用于在程序中动态处理错误并恢复。你可以在方法中拦截底层异常并处理之,也可以抛给更高层的模块去处理。你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下:

try

{

......//以下是可能发生异常的代码

...... //异常被你或低层API抛出,执行流程中断并转向拦截代码。

......

}

catch(Exception1 e) //如果Exception1是Exception2的子类并要做特别处理,应排在前面

{

//发生Exception1时被该段拦截

}

catch(Exception2 e)

{

//发生Exception2时被该段拦截

}

finally //这是可选的

{

//无论异常是否发生,均执行此段代码

//即使在catch段中又向外抛出了新的exception,finally段也会得到执行。

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值