复习构造代码块,static,super,this

构造函数 : 构造函数的作用是给对应的对象进行初始化。

构造函数 的格式:

修饰符 函数名(形参列表){
初始化语句
}

构造函数要注意的细节:
1. 构造函数是没有返回值类型的。
2. 构造函数的函数名必须要与类名一致。
3. 构造函数不是由我们手动调用的,而是在创建对象的时候由jvm调用的。
4. 如果一个类显式写上构造函数,那么java编译器会为该类添加一个无参的构造函数。
5. 如果一个类已经显式的写上了一个构造函数,那么java编译器不会再为该类添加一个无参的构造函数。
6. 每创建一个对象,都会调用一次构造函数。
7. 构造函数可以以函数重载的形式存在多个。


构造代码块: 构造代码块的作用是给所有的对象进行统一的初始化。

构造代码块要注意的细节:
1. 构造代码块的代码其实是在构造函数中执行的。
2. 构造代码块的代码是优先用于构造函数执行的。


this关键字: this代表了所属函数的调用者对象。

this关键字的作用:
1. 存在同名的成员变量与局部变量时,在方法内部默认访问的是局部变量,可以通过this关键字指定访问成员变量。
2. this关键字可以在构造函数中调用本类其他的构造函数初始化对象。

this关键字要注意的细节:
1. this关键字调用其他的构造函数时,this语句必须是位于构造函数中的第一个语句。
2. this关键字调用其他的构造函数,不能出现相互调用的情况
3. 如果在一个方法内部访问一个变量时,该变量只存在于成员变量的时候,那么java编译器会为该变量的前面添加this关键字。


static(静态):


static修饰成员变量: 如果一个数据需要被共享的时候,那么该数据即可使用static修饰。


静态成员变量的访问方式:
方式一: 使用对象进行访问。 格式: 对象.属性名

扫描二维码关注公众号,回复: 6034089 查看本文章

方式二: 使用类名进行访问。 格式: 类名.属性名。

静态成员变量要注意的细节:
1. 静态成员变量在内存中只存在一份,而且是位于方法区内存中。
2. 千万不要为了方便访问而使用static修饰一个变量,只有数据是需要被共享的时候才使用。
3. 静态的成员变量是随着类文件的加载而存在的,随着类文件的消失而消失 的。
4. 静态成员变量的数据是优先于对象存在的。

static修饰成员函数:

静态成员函数的访问方式:
方式一: 使用对象进行访问。 格式: 对象.函数名

方式二: 使用类名进行访问。 格式: 类名.函数名。

静态成员函数要注意的细节:
1. 静态函数可以使用对象或者类名进行调用,非静态函数只能使用对象进行调用。
2. 静态函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
3. 非静态函数可以直接访问静态以及非静态成员。
4. 静态函数不能出现this与super两个关键字。

什么时候使用静态函数?
如果一个函数没有直接访问非静态的成员,那么即可使用static修饰该函数。 常用于工具类的方法。


判断: 静态函数不能访问非静态的成员? 错误

class Person{

    String name; // 非静态成员

    //构造函数
    public Person(String name){
        this.name = name;
    }

    //静态函数
    public static void  eat(Person p){
        System.out.println("name"+name);
    }


}


class Demo1 
{
    public static void main(String[] args) 
    {
        Person p = new Person("铁蛋");
        p.eat(p);
    }
}

需求1 : 统计一个类创建对象的个数。  静态成员变量的应用场景之一。

//人类
class Person{

    int id;

    String name;


    static    int count = 0; //定义一个计数器    非静态成员变量。
    
    
    //构造代码块
    {
        count++;
    }
    
    public Person(){
        
    }

    //构造函数
    public Person(int id,String name){
        this.id = id;
        this.name = name;
        System.out.println("构造函数调用了....");
    }

}


class Demo2 
{
    public static void main(String[] args) 
    {
        Person p1 = new Person(110,"狗娃1");
        Person p2 = new Person(110,"狗娃2");
        Person p3 = new Person(110,"狗娃3");
        System.out.println("创建对象的个数:"+Person.count);
    }
}

需求2: 自己实现一个Arrays工具类。
toString(); 返回一个使用数组元素拼装好的字符串。
sort();

猜你喜欢

转载自www.cnblogs.com/hbxZJ/p/10777856.html