class StrInt
{
/*
Java中这样写:
  public static int[] ByNew()   
  {   
  int[] nums= new int[] {   
  1,2,3   
  };   
  return nums;   
  }
当然没问题,new出来的数组不用担心函数结束后内存被释放

但是如果这样写呢:
  public static int[] ByStaticInit()   
  {   
    
  int nums[] = { 4,5,6};   
  return nums;   
  }   
我担心数组存放在栈内存,函数结束后内存被释放,不知道是不是这样?

两者应该是没区别,编译器自动处理掉,有兴趣,可以自己用javap反编译去查看伪代码
这个跟 String str = "abcde"; 和 String str = new String("abcde");有区别
类似的 Integer num = 15 和 Integer num = new Integer(15); 也有区别
这两个是引用类型,而int是基本类型
*/
public static Integer ByNew()
{
Integer num = new Integer(15);
return num;
}

public static Integer NotByNew()
{
Integer num = 15;
return num;
}



public static void main(String[] s)
{
Integer numi1 = 15;
Integer numi2 = 15;
Integer numi3 = new Integer(15);
if(numi1==numi2)
  System.out.println("numi1==numi2");
else
  System.out.println("numi1!=numi2");

if(numi1==numi3)
  System.out.println("numi1==numi3");
else
  System.out.println("numi1!=numi3");
  
Integer numi4 =ByNew();
Integer numi5 =NotByNew();
System.out.println(numi4.intValue());
System.out.println(numi5.intValue());
  

}



}
/*
>java StrInt
numi1==numi2
numi1!=numi3
15
15
*/