java new问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 12:57:37
1:String t = new String("request.getParameter("todo"));

2:String t = request.getParameter("todo");

这两句有什么区别?
答的好有奖。
忽略字面上的错误吧

异常不算,就当普通字符串。

第一个是生成了两个Sting 类型的对象一个是("request.getParameter("todo"))这里面的值
另一个是t
第二个是生成了一个对象t其值为request.getParameter("todo")对应的value。
第二个节省内存空间

因为request.getParameter("todo")有可能是null,
第一种方式就用可能产生NullPointerException,
第二种方式不会有异常,t有可能是null。

仔细一看
第一句是错的
第二句是对的

1、程序会按如下方法运行,首先String t 会声明出一个String类型的t变量的引用,并且为它new 一个空间来存储他得值,但在new String里面是一个方法的返回值作为参数,程序会执行这个方法,获得返回值,并将返回值传递给String的构造函数。程序接下来执行String的构造函数,来生成一个新的实例作为t的指向。
2、程序会按如下方法运行,首先同1一样,String t 会声明出一个String类型的t变量的引用,但是接下来,程序没有新实例一个对象,而是调用了一个对象的方法,而这个方法的返回值也是一个String类型的,所以t会直接指向这个值,而不用实例新的String类型的对象
很显然,方法2比方法1更节省内存空间,运行效率也更高