美文网首页
static关键字

static关键字

作者: 养码哥 | 来源:发表于2018-04-01 16:38 被阅读0次

核心代码块1:

/*
static的特点:(它可以修饰成员变量,还可以修饰成员方法)
    A:随着类的加载而加载
        回想main方法。
    B:优先于对象存在
    C:被类的所有对象共享
        举例:咱们班级的学生应该共用同一个班级编号。
        其实这个特点也是在告诉我们什么时候使用静态?
            如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
        举例:
            饮水机(用静态修饰)
            水杯(不能用静态修饰)
    
    ***D:可以通过类名调用***
        其实它本身也可以通过对象名调用。因为静态是被所有对象共享的。
        推荐使用类名调用。
        
        静态修饰的内容一般我们称其为:与类相关的,类成员
        
        非静态:对象成员。
*/  
class Student {
//非静态变量
int num = 10;

//静态变量
static int num2 = 20;
    }

class StudentDemo {
public static void main(String[] args) {
    Student s = new Student();
    System.out.println(s.num);
    
    System.out.println(Student.num2);
    System.out.println(s.num2);
    }
}
static的内存图解

核心代码块2:

 /*
static关键字注意事项
    A:在静态方法中是没有this关键字的
        如何理解呢?
            静态是随着类的加载而加载,this是随着对象的创建而存在。
            静态比对象先存在。
    B:静态方法只能访问静态的成员变量和静态的成员方法
            静态方法:
                成员变量:只能访问静态变量
                成员方法:只能访问静态成员方法
            非静态方法:
                成员变量:可以是静态的,也可以是非静态的
                成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
        简单记:
            静态只能访问静态。
            
            静态不能访问非静态
            
            非静态可以访问一切
*/
class Teacher {
public int num = 10;
public static int num2 = 20;

public void show() {
    System.out.println(num); //隐含的告诉你访问的是成员变量
    System.out.println(this.num); //明确的告诉你访问的是成员变量
    System.out.println(num2);
    
    //function();
    //function2();
}

public static void method() {
    //无法从静态上下文中引用非静态 变量 num
    //System.out.println(num);
    System.out.println(num2);
    
    //无法从静态上下文中引用非静态 方法 function()
    //function();
    function2();
}

public void function() {

}

public static void function2() {

    }
}

class TeacherDemo {
public static void main(String[] args) {
    //创建对象
    Teacher t = new Teacher();
    t.show();
    System.out.println("------------");
        t.method();
    }
}

main方法的格式讲解

main

/*
main方法的格式讲解:
    public static void main(String[] args) {...}
    
    public:公共的,访问权限是最大的。由于main方法是被jvm调用,所以权限要够大。
    static:静态的,不需要创建对象,通过类名就可以。方便jvm的调用。
    void:因为我们曾经说过,方法的返回值是返回给调用者,而main方法是被jvm调用。你返回内容给jvm没有意义。
    main:是一个常见的方法入口。我见过的语言都是以main作为入口。
    String[] args:这是一个字符串数组。值去哪里了?
        这个东西到底有什么用啊?怎么给值啊?
            这个东西早期是为了接收键盘录入的数据的。
            格式是:
                java MainDemo hello world java
*/
class MainDemo {
public static void main(String[] args) {
    //System.out.println(args); //[Ljava.lang.String;@175078b
    //System.out.println(args.length); //0
    //System.out.println(args[0]); //ArrayIndexOutOfBoundsException
    
    //接收数据后
    System.out.println(args); 
    System.out.println(args.length); 
    //System.out.println(args[0]); 
    for(int x=0; x<args.length; x++) {
        System.out.println(args[x]);
        }
    }
}

总结:

static关键字(理解)
(1)静态的意思。可以修饰成员变量和成员方法。
(2)静态的特点:
    A:随着类的加载而加载
    B:优先与对象存在
    C:被类的所有对象共享
        这其实也是我们判断该不该使用静态的依据。
        举例:饮水机和水杯的问题思考
    D:可以通过类名调用
        既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。
(3)静态的内存图
    静态的内容在方法区的静态区
(4)静态的注意事项;
    A:在静态方法中没有this对象
    B:静态只能访问静态(代码测试过)
(5)静态变量和成员变量的区别
    A:所属不同
        静态变量:属于类,类变量
        成员变量:属于对象,对象变量,实例变量
    B:内存位置不同
        静态变量:方法区的静态区
        成员变量:堆内存
    C:生命周期不同
        静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
        成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
    D:调用不同
        静态变量:可以通过对象名调用,也可以通过类名调用
        成员变量:只能通过对象名调用
(6)main方法是静态的
    public:权限最大
    static:不用创建对象调用
    void:返回值给jvm没有意义
    main:就是一个常见的名称。
    String[] args:可以接收数据,提供程序的灵活性
        格式:java MainDemo hello world java
              java MainDemo 10 20 30

相关文章

  • OC中static、const、extern关键字理解

    static关键字 static关键字用于修饰变量。 static修饰局部变量当使用static修饰局部变量时, ...

  • static关键字

    Static关键字概述 static(静态)关键字可以用于修饰变量、方法和代码块。我认为static关键字的主要用...

  • 【Java】关键字

    一、 static关键字 static关键字的总结: static关键字 可以再没有创建对象的时候进行调用类的元素...

  • Java学习Day03

    今日学习内容总结 Static关键字 Arrays类 Math类 继承 Static关键字 一旦用了static,...

  • java基础-day11-static关键字

    static关键字和接口 1. static关键字【重点】 1.1 static修饰静态成员变量 1.1.1 为什...

  • C语言中的static关键字

    @TOC C语言中的static关键字 static 关键字,意为静态。 static 变量 特性:全局变量在函数...

  • Static关键字

    C语言中的static关键字和Java的static关键字意义不一样。 1 用static修饰函数 static用...

  • C基础知识

    基础问题 1.static关键字和const关键字。 static: 作用于变量时:用static声明局部变量--...

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

  • Java学习13:static关键字,this关键字

    static关键字 static翻译为“静态的”。所有static关键字修饰的都是类相关的,类级别的。所有stat...

网友评论

      本文标题:static关键字

      本文链接:https://www.haomeiwen.com/subject/dwcacftx.html