public static void main(String[] args) {
System.out.println(returnN());//1
System.out.println(returnStr());//XX
System.out.println(returnSB());//abcd
System.out.println(returnArr()[0]);//3
}
public static int returnN(){
int i = 0;
try{
return ++i;
}finally{
i++;
}
}
public static String returnStr(){
String str = "";
try{
str+= "XX";
return str;
}finally{
str+="abc";
}
}
public static StringBuffer returnSB(){
StringBuffer sb = new StringBuffer();
try{
sb.append("ab");
return sb;
}finally{
sb.append("cd");
}
}
public static int[] returnArr(){
int[] arr = new int[5];
try{
arr[0]=2;
return arr;
}finally{
arr[0]=3;
}
}
public static void main(String[] args) {
System.out.println(returnN());//1
System.out.println(returnStr());//XX
System.out.println(returnSB());//abcd
System.out.println(returnArr()[0]);//3
}
public static int returnN(){
int i = 0;
int temp = i;
try{
return ++temp;
}finally{
i++;
}
}
public static String returnStr(){
String str = "";
String temp = str;
try{
temp+= "XX";
return temp;
}finally{
str+="abc";
}
}
public static StringBuffer returnSB(){
StringBuffer sb = new StringBuffer();
StringBuffer temp = sb;
try{
temp.append("ab");
return temp;
}finally{
sb.append("cd");
}
}
public static int[] returnArr(){
int[] arr = new int[5];
int[] temp = arr;
try{
temp[0]=2;
return temp;
}finally{
arr[0]=3;
}
}
public static void main(String[] args) {
System.out.println(returnN());//2
System.out.println(returnStr());//XXabc
System.out.println(returnSB());//abcd
System.out.println(returnArr()[0]);//3
}
public static int returnN(){
int i = 0;
try{
return ++i;
}finally{
i++;
return i;
}
}
public static String returnStr(){
String str = "";
try{
str+= "XX";
return str;
}finally{
str+="abc";
return str;
}
}
public static StringBuffer returnSB(){
StringBuffer sb = new StringBuffer();
try{
sb.append("ab");
return sb;
}finally{
sb.append("cd");
return sb;
}
}
public static int[] returnArr(){
int[] arr = new int[5];
try{
arr[0]=2;
return arr;
}finally{
arr[0]=3;
return arr;
}
}
解释:
1、try、finally里面都有return时候,
先返回try里面的,然后finally里面返回将之前的覆盖掉了。
2、第一个里面先是有类似第二个里面temp那中,try里返回temp,有值类型和引用类型区别。当是引用类似的
时候,返回的是引用,然后输出的是引用指向的值,当指向的值已经被改变,那么输出就是什么值,String是final类型的;还有其他理解的???
只是一样的分析手法而已。这种手法会点java的人都会用
是吗?只是感觉你每次都直接复制链接出来,感觉很不爽,又不写明出处。
又写的那么不明白。
这个是《深入jvm第二版》里面第第17、18里面的。我会点java,我就不会用。
我自己一字一句码出来的,写什么出处?javap命令是jdk命令,毋庸多言;指令的解释是在《java虚拟机规范》中的:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.10.1.9《深入java虚拟机第二版》也是抄袭的这个规范的