1.对象的作用域
JAVA对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。例如
{
String s = new String("a string");
}
引用s在作用域终点就消失了。然而,s指向的String对象仍继续占据内存空间。在这一小段代码中,我们无法在这个作用域之后访问这个对象,因为对它唯一的引用已超出了作用域范围。
由new创建的对象,只要你需要,就会一直保留下去。
java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便供其他新的对象使用。
2.基本成员默认值
若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。
然而上述确保初始化的方法并不适用于“局部”变量(即并非某个类的字段)。因此,如果在某个方法中定义有
int x;
那么变量x得到的可能是任意值,而不会被自动化初始化为零。
3.static关键字
当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域。
尽管当static作用于某个字段时,肯定会改变数据创建的方式(因为一个static字段对每个类来说都只有一份存储空间),而非static字段则是对每个对象有一个存储空间)。
如下代码结果为
public class StaticTest {
int i = 47;
public static void main(String args[]){
StaticTest t1 = new StaticTest();
StaticTest t2 = new StaticTest();
t1.i = t1.i + 3;
t2.i = t2.i + 8;
System.out.println(t1.i);
System.out.println(t2.i);
}
}
50
55
如下代码结果为
public class StaticTest {
static int i = 47;
public static void main(String args[]){
StaticTest t1 = new StaticTest();
StaticTest t2 = new StaticTest();
t1.i = t1.i + 3;
t2.i = t2.i + 8;
System.out.println(t1.i);
System.out.println(t2.i);
System.out.println(StaticTest.i);
}
}
58
58
58
4.pubilic static void main(String args[])
public关键字意指这是一个可由外部调用的方法。
main()方法的参数是一个String对象的数组
args要用来存储命令行参数