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:

 

评分:0

我来说两句

Open Toolbar