类的成员之main()方法

main()方法的使用说明

1.main()方法作为程序的入口

2.mian()方法也是一个普通的静态方法

3.main()方法可以作为我们与控制台交互的方式。(之前:使用Scanner)

public class MainDemo {
    public static void main(String[] args) {

        for (int i = 0; i < args.length; i++){
            System.out.println("*****" + args[i]);

            int num = Integer.parseInt(args[i]);
            System.out.println("#####"+ args[i]);
        }
    }
}
类的成员之代码块

代码块(或初始化块)

1.代码块的作用:用来初始化类、对象

2.代码块如果有修饰的话,只能使用static

3.分类:静态代码块 vs 非静态代码块

 

4.静态代码块

内部可以有输出语句

随着类的加载而执行,且只执行一次

作用:初始化类的信息

如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行

静态代码块的执行要优先于非静态代码块的执行

静态代码块只能调用静态的属性、静态的方法,不能调用非静态的结构

5.非静态代码块

内部可以有输出语句

随着对象的创建而执行

每创建一个对象,就执行一次非静态代码块

作用:可以在创建对象时,对对象的属性等经行初始化

如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行

非静态代码块可以调用静态的属性、静态的方法,也可以调用非静态的属性、非静态的方法

public class BlockTest {
    public static void main(String[] args) {
        String desc = Person.desc;
        Person person = new Person();
        Person person2 = new Person();
    }
}

class Person{
    //属性
    String name;
    int age;
    static String desc = "我是一个人";

    //构造器
    public Person(){

    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //静态代码块
    static{
        System.out.println("hello,static block");
        desc = "我是一个好人";
        info();
        
    }
    //非静态代码块
    {
        System.out.println("hello,block");
        age = 1;
        eat();
        desc = "woshiyigehaoren";
        info();
    }


    //方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println("吃");
    }
    public static void info(){
        System.out.println("我是一个快乐的人");
    }
}

 对属性可以赋值的位置:

①默认初始化

②显示初始化/⑤在代码块中赋值

③构造器中初始化

④有了对象后,通过"对象.属性" 或 "对象.方法"的方式,进行赋值

 执行的先后顺序: ① - ② / ⑤ - ③ - ④

 

类的关键字之final 关键字

final:最终的

1.final 可以用来修饰的结构:类、方法、变量

2.final 用来修饰一个类:此类不能被其他类所继承。

比如:String类、System类、StringBuffer类

3.final 用来修饰方法:此方法不能被重写

比如:Object 中的getClass();

4.final 用来修饰变量:此时的"变量"就称为一个常量

4.1final修饰属性:可以考虑赋值的位置有:显示初始化、代码块中初始化、构造器中初始化

4.2 final修饰局部变量

尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦复制以后,就只能在方法体内使用此形参,但不能进行重新赋值。

 static final 用来修饰属性:全局常量  

题目练习

1.static修饰的属性,相较于实例变量,有哪些特别之处(>3点)

随着类的加载而加载;早于对象的创建;只要权限允许,可以通过 对象.static属性 的方式惊醒调用;存在于方法区的静态域

2.final 可以用来修饰哪些结构,分别代表什么意思