老师说在main里new的对象是存的地址,main里存放的数据是放在栈里,
问题一:也就是说别的都放在堆里? 堆是个什么东西?它是怎么调用数据的,为什么我把main定义在方法之前和之后
都可以调用该方法?
问题二:为什么ab没有用创建,而它定义在main的前后都能直接用?public class abc
{ private int abc;
static int ab;
public void a()
{
abc=1;
}
public static void main(String [] args)
{
ab=1;
}
}
public class abc
{ public void a()
{
abc=1;
}
private int abc;
public static void main(String [] args)
{
ab=2;
}
static int ab;
}为什么 a()方法在这两种情况下殾能用abc?
问题一:也就是说别的都放在堆里? 堆是个什么东西?它是怎么调用数据的,为什么我把main定义在方法之前和之后
都可以调用该方法?
问题二:为什么ab没有用创建,而它定义在main的前后都能直接用?public class abc
{ private int abc;
static int ab;
public void a()
{
abc=1;
}
public static void main(String [] args)
{
ab=1;
}
}
public class abc
{ public void a()
{
abc=1;
}
private int abc;
public static void main(String [] args)
{
ab=2;
}
static int ab;
}为什么 a()方法在这两种情况下殾能用abc?
解决方案 »
- 不显示删除回复显示所有回复显示星级回复显示得分回复 opencv和java实现眼睛识别 (小项目,急)
- 一道小游戏
- 多线程求解
- 如何显示命令行传递给main方法的参数
- 关于JTabbedPane的两个问题
- 根目录下有一个类,该类没有用到package.子目录下的类该如何将根目录下的类import呢?
- xml高手进入,如何将Document对象变成String类型的xml呀
- 回答有分。java web start 是做什么用的?一安装了jdk1.4就有这个,可是我从来没用过?
- 这个程序为什么编译通过,运行有错?
- 初级问题
- 反射类的线程安全问题
- 如何把数据库中表user_list的内容在我的Eclipse显示窗口中,用什么方法?请求高手,谢谢~
一:String str = "xxx";此时的str是放在栈内存中的,基本数据是放在栈内存中的,还有对象的引用(注意是对象的引用,不是对象)也是放在栈内存中的。其他的对象的是放在堆内存中(String str = new String()也放在堆内存中)。至于栈和堆是什么,你自己去百度或者看看数据结构的书吧。main放的位置并不会影响你对方法的调用。
二:你说的意思应该是ab没初始化就可以用吧?因为这里你的ab是成员变量,会自动被赋初值(非成员变量未初始化就使用会报错)。这里是ab=0
public class abc
{ private int abc;
static int ab;
public void a()
{
abc=1;
}
public static void main(String [] args)
{
ab=1;
}
}==========================
这里的abc=1是局部变量赋值;并没有对class abc中的abc变量赋值初始化;
然后ab是这个类的静态的成员变量,这个静态成员变量属于这个类的所有对象共有一个,在这个类的任何地方都可以直接调用,包括静态的main方法
2个代码里的abc()因为都是在ABC这个类里面,所以可以直接使用成员变量abc
public class abc
{ public void a()
{
abc=1;
}
private int abc;
public static void main(String [] args)
{
ab=2;
}
static int ab;
}=================
这个同样没有调用public void a()函数来对abc变量赋值初始化。