java在main方法中创建对象和main方法外创建对象有什么区别

RT... RT 展开
 我来答
198901245631
2015-07-12 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1721万
展开全部
如果是在方法中创建,那么是在执行到main方法的相应代码的时候才去执行(也就是说执行到代码才去进行对象创建)。
如果是在方法外,那么会在执行main方法之前进行对象创建,也就是说在内外的执行先后顺序是不一样的。
备注:通常在main方法外的都是定义为static的,需要初始化内存中的对象才这么搞,以后会直接进行调用,不会再去重新创建。在main方法里面的每次执行都会重新创建,没有那个好的说法,只能是具体情况具体分析。
凑个整1024
2021-05-09
知道答主
回答量:15
采纳率:0%
帮助的人:6907
展开全部

在main方法中创建对象,只有这个方法才可以使用这个对象,别的方法使用必须要在创建一个对象

在main方法外创建别的类对象,首先得在main方法中创建当前类的对象,这时候才会加载出你在main方法外创建的别的类的对象,这样类中其他方法才可以使用这个对象,如果你没有在main方法中创建当前类的对象,在其他方法中也不能使用这个对象

package com.unique.java;
public class TestDemo {
Zoo zoo = new Zoo(1);

public static void main(String[] args) {
TestDemo testDemo = new TestDemo();
Zoo zoo1 = new Zoo(2);
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}

输出

Zoo(1)

Zoo(2)

//----------------------------------------------------------------------------------------

package com.unique.java;

public class TestDemo {
Zoo zoo = new Zoo(1);

public static void main(String[] args) {
//TestDemo testDemo = new TestDemo();
Zoo zoo1 = new Zoo(2);
}
}

class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
}
输出:

Zoo(2)


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白衬衫啊啊
推荐于2017-11-26 · TA获得超过101个赞
知道答主
回答量:89
采纳率:0%
帮助的人:39万
展开全部
如果在类中创建对象则类里面的所有方法都可以使用这个对象,这就叫全局变量,如果只在方法中创建对象则只有这个方法可以使用这个对象,别的方法要使用必须再创建一个对象才能使用我们叫这种方式为局部变量
更多追问追答
追问
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
Zoo zoo1 = new Zoo(2);
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
//为什么值输出Zoo(2)???/
追答
因为main方法传入的参数是2,java虚拟机找到main方法入口后传入是2所以调用的就是2,调用方法需要在方法中调,你在类里面调肯定不起作用,不信你把main方法的对象删除,绝对输出不了任何东西
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
等待III希望
2014-08-26 · TA获得超过161个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:125万
展开全部
没有区别,main方法只是一个特殊的方法,它是一个入口方法。
在输入java XXX的时候调用的方法
更多追问追答
追问
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
Zoo zoo1 = new Zoo(2);
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
//为什么只输出Zoo(2)???/
追答
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
Zoo zoo1 = new Zoo(2);
TestDemo testDemo = new TestDemo();
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}

加上
TestDemo testDemo = new TestDemo();
就可以输出Zoo(1);
你这个问题和main方法没有关系。只和类的初始化顺序相关
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heg646100854
2018-04-04
知道答主
回答量:1
采纳率:0%
帮助的人:881
展开全部
你要想TestDemo类下的成员变量加载到jvm内存里面,在main方法里面创建对象new TestDemo();就能输出Zoo(1)了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式