-
关键字static:某些特定数据在内存空间内只有一份
使用static修饰属性和方法:多个对象共享同一个静态变量,当通过某一个对象修改静态变量时,每一个对象的静态属性都会修改。①随着类的加载而加载; ②静态变量要早于对象的创建; ③由于类只加载一次,静态变量也只加载一次; ④静态方法中只能调用静态属性或方法;(和生命周期有关) ⑤在静态方法中不能使用this和super关键字;
-
关于main方法的使用。
①作为程序的入口;
②是一个普通的静态方法;
③可利用main()方法中的形参实现和控制台的交互。
怎么利用eclipse实现第三条?
先编译代码,代码如下
public class MainTest {
public static void main(String[] args) {
//输出args中的值
for(int i=0;i<args.length;i++){
System.out.println("*****"+args[i]);
}
}
}
run as Configurations
找到刚才编译的源文件,选择arguments参数,在program arguments中填入参数
参数可以加双引号也可以不加,默认都是string类型数据,每个参数之间用空格隔开。
输出结果:
怎么使用命令行实现第三条?
在运行时直接在后面加上参数
注:由于默认main()中形参是String类型,如果想要获取int型数据可以通过Integer.paraseInt();构造获得。
3. new一个对象的加载过程。
①加载所有类(先父类后子类)的静态代码块;
②加载非静态代码块;
③加载构造器;
(②③的步骤的加载一个类完成后下一个类才会加载)
public class Instantiate {
static{
System.out.println("Instantiate静态代码块初始");
}
{
System.out.println("Instantiate普通代码块初始");
}
public Instantiate(){
System.out.println("Instantiate无参构造初始");
}
public Instantiate(String s){
System.out.println("Instantiate有参构造初始");
}
}
class Instantiate_1 extends Instantiate{
static {
System.out.println("Instantiate_1静态代码块初始");
}
{
System.out.println("Instantiate_1普通代码块初始");
}
public Instantiate_1(){
//调用父类有参构造
super("Test");
System.out.println("Instantiate_1无参构造初始");
}
}
class InstantiateTest{
public static void main(String args[]){
new Instantiate_1();
}
}
输出结果: