zoukankan      html  css  js  c++  java
  • Java static关键字

    Java static关键字

    1.被static修饰的属性(静态属性):

    public class Student{
        private static int age; //static修饰的属性(静态属性)
        private double score; //没被static修饰(非静态属性)
    
        public static void main(String[] args) {
    
            //静态属性是可以直接 类名 . 的形式拿到 属性
            System.out.println(Student.age);
            //Student.score 这样是不行的非静态属性是不可以用类名 . 的形式调用的
            
            
            Student s = new Student();
            //非静态的属性需要对象 . 的形式拿到属性
            System.out.println(s.score);
            
        }
    }

    需要注意的是 Java中的static关键字不会影响到变量的变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected这几个关键字。

    private   在当前类中可访问

    default        在当前包内和访问

    protected    在当前类和它派生的类中可访问

    public          公众的访问权限,谁都能访问

    这里之所以是private也能用Student.age(类名 . 的方式拿到)是因为 在同一个类里。

    比如下面这个就是错的:

     由于private只在当前类中可以访问 所以这里即使是static修饰的静态属性也是获取不到的。

    2.被static修饰的方法(静态方法):

    public class Student{
        //定义一个静态方法
        static void text(){
        }
        //定义一个普通方法
        void demo(){
        }
        public static void main(String[] args) {
            //静态方法是可以用类名 . 的形式调用的
            Student.text();
    
            //非静态方法是不能用类名 . 的形式调用的 必须先创建对象 然后才能调用
            Student student = new Student();
            student.demo();
        }
    }

    3.被static修饰的代码块儿(静态代码块儿):

    静态代码块是用来初始化数据的:

    public class Student{
        //这是匿名代码块
        {
            System.out.println("匿名代码快");
            //匿名代码块 new一个对象时就加载
        }
        //这是静态代码块 静态代码块只执行一次
        static {
            System.out.println("静态代码块");
            //静态代码块随类的加载而加载 所以最先执行
        }
        //重写构造器
        public Student(){
            System.out.println("我是构造器");
            //构造器 也是new一个对象时加载 但是他是在匿名代码块加载之后在加载
        }
        public static void main(String[] args) {
            Student student = new Student();
            System.out.println("*****************");
            //再次创建对象时 静态代码块就不会执行了
            Student student1 = new Student();
    
        }
    }

    执行结果:

     

  • 相关阅读:
    Angular1.0
    当今流行的 React.js 适用于怎样的 Web App?
    bower的权限问题
    淡定啊淡定
    JBoss for luna
    JQuery的二维码插件
    今天学人家玩云主机
    laravel5.2/laravel5.3入门指南 Windows 上快速安装并运行 Laravel 5.x
    验证mySqli扩展是否
    Amazon EC2 的名词解释
  • 原文地址:https://www.cnblogs.com/love2000/p/14143186.html
Copyright © 2011-2022 走看看