zoukankan      html  css  js  c++  java
  • java学习笔记(11-static关键字)

    1.static关键字

    1.1 说明:

    • 被static修饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量)
    • 被static修饰的成员可以并且建议通过类名直接访问
    • 静态的加载优先于对象,随着类的加载而加载

    1.2 简单使用

    package com.daigua11;
    /*
     * static:是一个关键字,用于修饰成员变量和成员方法
     * static的特点:
     *          被所有的对象所共享
     *          可以使用类名调用
     *          静态的加载优先于对象
     *          随着类的加载而加载
     * 
     */
    public class StaticDemo {
        public static void main(String[] args) {
            Person.graduateFrom = "北京大学";
            
            Person p = new Person();
            p.name = "小苍同学";
            p.age = 18;
            //p.graduateFrom = "传智学院";
            p.speak();
            
            Person p2 = new Person();
            p2.name = "小波同学";
            p2.age = 20;
            //p2.graduateFrom = "传智学院";
            p2.speak();
        }
    }
    
    class Person {
        String name;
        int age;
        static String graduateFrom;//毕业院校
        
        public void speak() {
            System.out.println(name + "---" + graduateFrom);
        }
    }
    

    1.3 注意点

    • 静态成员只能直接访问静态成员
    • 非静态成员既可以访问非静态成员也可以访问静态成员
    package com.daigua11;
    
    /*
    * static的注意事项:
    *           静态方法:
    *               可以调用静态的成员变量
    *               可以调用静态的成员方法
    *               不可以调用非静态成员变量
    *               不可以调用非静态成员方法
    *               静态方法只能调用静态的成员
    *           非静态方法:
    *               可以调用静态的成员变量
    *               可以调用静态的成员方法
    *               可以调用非静态的成员变量
    *               可以调用非静态的成员方法
    *       
    *   静态的方法中是否有this这个对象?没有的
    *               
    * 
    */
    public class StaticDemo2 {
        public static void main(String[] args) {
            Student.graduateFrom = "北京大学";
            Student.study();
        }
    }
    
    class Student {
        String name;
        int age;
        static String graduateFrom;// 毕业院校
    
        public static void study() {
             System.out.println(graduateFrom);
             sleep();
             
            // 无法访问到eat这个方法
            // System.out.println(name);
            // eat();
    
        }
    
        public static void sleep() {
            System.out.println("sleep");
    
        }
    
        public void eat() {
            System.out.println("eat");
    
            System.out.println(graduateFrom);
            sleep();
    
        }
    
    }
    

    1.4 应用-Math类

    package com.daigua11;
    
    public class MathDemo {
        public static void main(String[] args) {
            // Math:包含了一些基本的数学运算方法
            // static double PI
            // System.out.println(Math.PI);
    
            // static double abs(double a) :返回绝对值
            // System.out.println(Math.abs(15));
            // System.out.println(Math.abs(-10));
    
            // static double ceil(double a) 天花板 向上取整
            // System.out.println(Math.ceil(1.2));
            // System.out.println(Math.ceil(1.6));
            // static double floor(double a) 地板 向下取整
            // System.out.println(Math.floor(1.2));
            // System.out.println(Math.floor(1.6));
    
            // static long round(double a) :四舍五入
            // System.out.println(Math.round(1.2));
            // System.out.println(Math.round(1.6));
    
            // static double max(double a, double b)
            // System.out.println(Math.max(3, 4));
    
            // static double pow(double a, double b) :返回第一个参数的第二个参数次幂
            // System.out.println(Math.pow(3, 2));
    
            // static double random() :返回一个随机数,大于零且小于一
            System.out.println(Math.random());
    
        }
    }
    
  • 相关阅读:
    编译型语言和解释性语言
    2.变量和基本类型——2.2变量
    2.变量和基本类型——2.1基本内置类型
    1.开始
    机器学习基础—集成学习Bagging 和 Boosting
    C++多态?
    python dataframe数据条件筛选
    UDA机器学习基础—评估指标
    MFC 树形控件
    MFC 列表控件List Control
  • 原文地址:https://www.cnblogs.com/daigua/p/java-xue-xi-bi-ji-11static-guan-jian-zi.html
Copyright © 2011-2022 走看看