java对象不理解

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:29:51
PrintWriter out = response.getWriter()。这个语句里没有创建java对象,怎么给它直接赋值啦。java对象的创建不是要用构造方法NEW吗。不理解,谁能详解一下。
还有 这个resonse对象 它的类型不是HttpServletRequest吗,这个HttpServletRequest不是接口吗,它还没被实现,怎么能有对象呢。。

PrintWirter out = new PrintWriter()
这个里面 new 是用来分配内存地址的 PrintWriter() 是constructor 它创建了一个新对象 储存在之前分配的地址
而out 则是一个引用 指向 刚刚创建的PrintWriter对象

response.getWriter() 是调用了 response的方法 getWriter()
这个getWriter()在response里面创建了 或者复制了一个对象
然后把内存地址 传递给 out

你的那句话的意思是 创建一个PrintWriter的引用 out 指向 response.getWriter()的那个对象

你是搞了向上转型吧

PrintWriter out = response.getWriter()

java中,对象和实例变量是在堆上建立的。而方法,局部变量是在栈上建立的。
此处堆上已存在已PrintWriter 对象,即response类中的writer实例变量所引用PrintWriter 对象,所以只需把引用变量out引用存在在堆上的这个PrintWriter 对象即可。

new 关键字的作用是在堆上创建一个新的对象并赋予引用变量。看下面的代码
List l1 = new ArrayList();
List l2 = new ArrayList();
此时堆上将存在两个ArrayList对象,它们分别被引用变量l1和l2引用。看下面的代码
List l1 = new ArrayList();
List l2 = l1;
此时堆上只存在一个ArrayList对象,而引用变量l1和l2都引用这个ArrayList对象