Let's Go!
java基本问题2则 string ; return 和 finally
上一篇 /
下一篇 2010-09-14 20:38:35
/ 个人分类:JAVA学习&编程相关
java基本问题
1. String str1 ; String str2 = null ; String str3 = "" ; 三者的区别
2. return 和 finally 的执行顺序
下面是测试代码:
package com.java.lianxi;
public class Lianxi {
/**
* @param args
*/
static int j; // 在类中的属性可以自动赋初值,但是非类属性不会自动赋初值,会报异常。
int i ; // 在类中的属性可以自动赋初值,但是非类属性不会自动赋初值,会报异常。
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 ;
// if(str == null){
// System.out.println(str1);
// }
String str2 = null ;
String str3 = "" ;
System.out.println("1----"+str2);
System.out.println("2----"+str3);
//System.out.println("2----"+str1);
// int = 1 ; // 必须定义成 类的static变量才会自动赋值
// 所有的对象在使用 前均要被初始化
System.out.println("2----"+j); // static method 使用static 变量
// string是引用类型;
//
// String str ; // str没有被初始化,会报错 The local variable str1 may not have been initialized
//
// string str = null 没有创建内存空间,str中存放的是空引用指针;
//
// string str = "" 创建了内存空间,str中存放的是指向堆中的指针。
System.out.println("return------->"+new Lianxi().mytest()) ;
}
public int mytest(){
int var1 = 1 ;
int var2 = 2 ;
int var3 = 3 ;
int var4 = 4 ;
try{
System.out.println("before return"); // 1
return var1 ; //4
//System.out.println("after return"); // Unreachable code
}catch(Exception e){
System.out.println("print in catch");
return var2 ;
}finally{
//System.out.println(i);
System.out.println("print in finally"); //2
return var3 ; //3
}
//return var4 ; // Unreachable code
}
// finally 关键字是对 Java 异常处理模型的最佳补充。
// finally 结构使代码总会执行,而不管有无异常发生。
// 使用 finally 可以维护对象的内部状态,并可以清理非内存资源。
// 如果没有 finally,您的代码就会很费解。
// 比如关闭事务。正常流和异常流都要写。使用finally就没有这样的问题了。
//
//finally里的代码会抢在离开此方法前执行,
//但是如果在finally里有return的话,那肯定就return了,就像if else分支里都有return一样
//return、continue和break都不能阻止finally语句块的执行
// 有一种方法可以退出 try 块而不执行 finally 块。
// 如果代码在 try 内部执行一条 System.exit(0); 语句,
// 则应用程序终止而不会执行 finally 执行。
// 另一方面,如果您在 try 块执行期间拨掉电源,finally 也不会执行。)
}
收藏
举报
TAG: