构造方法的注意事项:

  当你这个类中 没有提供 无参的构造方法的时候

  系统在你创建对象的时候 也会调用无参的构造

  这个无参方法 系统会帮你提供一个

  

  如果你 只提供了 有参的构造方法 那么系统将

  不再给你提供 无参的构造方法了

  

  建议:写类的时候 无参 有参的构造方法 都写上


静态变量

静态变量(相当于 一个共享的变量 每个对象都能访问到)

  使用关键词 static 修饰

  

  静态变量(类变量)的调用

  1.可以使用对象 直接调用(不建议)

  2.使用类名直接调用(建议)

  为什么建议使用类名直接调用?

  使用类名调用静态变量 可以和 成员变量区分

  直接使用类名调用更准确 有静态变量时 对象还没有创建

  

  静态变量好处:

  节约内存(静态变量 是一个共享变量)

  举例:

  老师被所有学生共享

  

  静态变量和成员变量的区别

  1.所属不同

  静态变量:属于类的 也叫类变量

  成员变量:属于对象的 也叫对象变量(实例变量)

  2.在内存中所处位置不同

  静态变量:在方法区的静态区

  成员变量:在堆区中

  3.在内存中的加载时机不同(生命周期)

  静态变量:随着类的加载而加载 随着类的销毁而销毁(程序结束销毁)

  成员变量:随着对象的创建而创建,随着对象的销毁而销毁

  4.调用方式不同

  静态变量:对象名 和 类名(推荐)

  成员变量:只能使用 对象名


public class Demo03 {

public static void main(String[] args) {

AVGirl girl1=new AVGirl();

girl1.name="苍老师";

girl1.country="日本";

girl1.sayHi();

AVGirl girl2=new AVGirl();

girl2.name="小泽老师";

girl2.country="日本";

girl2.sayHi();

}

}


class AVGirl{

String name;//姓名

static String country;//国籍

private AVGirl() {

}

public void sayHi() {

    System.out.println(name+".."+country);

}

}


java之静态变量与静态方法



对象加载到内存的表现步骤

  1.加载有main类的class文件到 方法区中

  2.main方法 入栈(需要创建AVGirl对象)

  3.先把AVGirl.class加载到 方法区中

  4.在堆内存中 开辟空间 创建 AVGirl 的对象

  5.赋值方法入栈 出栈

  6.main方法执行完毕 出栈

  7.程序结束


class Test{

int number1=10;

static int number2=20;

  //成员方法中 既可以使用成员变量

  //也可以使用静态变量

 

public void fun1() {

System.out.println(this.number1);

System.out.println(this.number2);

}

  //静态方法:随着类的加载而加载(跟静态变量一样)

  //静态方法的执行 跟 成员方法一样 入栈和出栈

  //静态方法中 不能使用成员变量

  //(静态方法加载的 还没有对象)

 

  //简单记:

  //静态的只能调静态的

  //成员的既能调用成员 也可以调用静态的

 

public static void fun2() {

System.out.println(number2);

}

public void fun3() {

System.out.println("fun3");

}

}


   编写工具类

     1.一般所有方法都使用静态的 方便调用

     2.构造方法 私有化(对象对于这个类没有用)




相关文章: