• Java static关键字特点


    一、特点

    1、随着类的加载而加载
    2、优先于对象存在
    3、被类的所有对象共享
    4、可以通过类名调用

    二、调用特征

    静态方法:
      成员变量:只能访问静态变量
      成员方法:只能访问静态成员方法


    非静态方法:
      成员变量:可以访问静态变量,也可以是非静态变量
      成员方法:可以访问静态成员方法,也可以是非静态成员方法

    简单记:静态只能访问静态

    原因:类优先于对象存在

    三、案例分析

     1 package statics;
     2 /**
     3  * static关键字,案例1
     4  * @author zhongfg
     5  * @date 2015-06-16
     6  */
     7 class Person {
     8     
     9     private String name;
    10     private int age;
    11     public static String country;
    12     
    13     public Person(String name, int age) {
    14         this.name = name;
    15         this.age = age;
    16     }
    17     
    18     public Person(String name, int age, String country) {
    19         this.name = name;
    20         this.age = age;
    21         Person.country = country;
    22     }
    23     
    24     public void show() {
    25         System.out.println("姓名:"+name+",年龄:"+age+",国籍:"+country);
    26     }
    27 }
    28 public class StaticDemo {
    29 
    30     public static void main(String[] args) {
    31         
    32         Person p1 = new Person("凤姐", 30, "中国");
    33         p1.show();
    34         
    35         Person p2 = new Person("范冰冰", 34);
    36         p2.show();
    37         
    38         Person p3 = new Person("Angelababy", 26);
    39         p3.show();
    40         
    41         System.out.println("-----------------");
    42         
    43         //修改静态变量的值
    44         Person.country = "美国";
    45         p1.show();
    46         p2.show();
    47         p3.show();
    48     }
    49 }
    50 
    51 运行结果:
    52 姓名:凤姐,年龄:30,国籍:中国
    53 姓名:范冰冰,年龄:34,国籍:中国
    54 姓名:Angelababy,年龄:26,国籍:中国
    55 -----------------
    56 姓名:凤姐,年龄:30,国籍:美国
    57 姓名:范冰冰,年龄:34,国籍:美国
    58 姓名:Angelababy,年龄:26,国籍:美国
    View Code
     1 package statics;
     2 
     3 class Student {
     4     
     5     int num = 1;
     6     static int num2 = 2;
     7     
     8     public void showA() {
     9         System.out.println(this.num);
    10         getNameA();
    11         getNameB();
    12     }
    13     
    14     public static void showB() {
    15 //        System.out.println(num); 报错,静态方法不能访问非静态方法
    16         System.out.println(num2);
    17 //        getNameA(); 报错,静态方法不能调用非静态方法
    18         getNameB();
    19     }
    20     
    21     public void getNameA() {
    22         System.out.println("小明,非静态方法");
    23     }
    24     
    25     public static void getNameB() {
    26         System.out.println("小辉,静态方法");
    27     }
    28 }
    29 public class StaticDemo2 {
    30     public static void main(String[] args) {
    31         
    32         Student s = new Student();
    33         s.showA();
    34         
    35         System.out.println("--------------");
    36         
    37         //静态方法既可以用类名调用,也可以用对象调用,建议用类名调用
    38         Student.showB();
    39         s.showB();
    40     }
    41 }
    42 
    43 运行结果:
    44 1
    45 小明,非静态方法
    46 小辉,静态方法
    47 --------------
    48 2
    49 小辉,静态方法
    50 2
    51 小辉,静态方法
    View Code
  • 相关阅读:
    3.7日复习
    作业
    小米官网需要的数据
    EL&JSTL
    变量和运算符
    jsp
    session的应用----验证码
    restframework-总结
    Django-Rest-Framework部分源码流程分析
    Django-Rest-Framework
  • 原文地址:https://www.cnblogs.com/zfg-technology/p/4581061.html
Copyright © 2020-2023  润新知