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

    例如一个学生类中,我们需要统计下学生类中学生对象的数量,此时数量要定义为静态变量;

    示例代码:

    package com.java1995;

    public class Student {

    int id=0;
    static int num=0;

    Student(int id){
    this.id=id;
    num++;
    }

    public static void main(String[] args){
    Student s1=new Student(1);
    Student s2=new Student(2);
    Student s3=new Student(3);
    Student s4=new Student(4);
    Student s5=new Student(5);
    Student s6=new Student(6);
    System.out.println("Num:"+Student.num);

    }

    }

    输出结果:6

    1.静态 变量

        静态变量属于类的,和对象没有关系;

        费静态变量属于某个对象的,每个对象都有 该数据的副本,

        而静态变量只有一个

        访问静态变量是通过(类名.变量名)来访问的

    示例代码:

    package com.java1995;

    public class Test {

    int commonint=0;
    static int staticint=0;
    Test(int x){
    this.commonint=x;

    }
    public static void main(String[] args){

    Test t1=new Test(1);
    Test t2=new Test(2);
    System.out.println("t1.commoint:"+t1.commonint);
    System.out.println("t2.commoint:"+t2.commonint);

    t1.staticint=1;
    //静态变量在整个类中是唯一的,对象t1改变静态变量,该类中的静态变量同时进行改变,对其他的对象也有影响
    System.out.println("t1.staticint:"+t1.staticint);
    System.out.println("t2.staticint:"+t2.staticint);

    }

    }

    2.静态方法

        用static 修饰的方法称为静态方法

        访问静态方法是通过(类名.方法名)来访问

    示例代码:

    package com.java1995;

    public class StaticMethod {
    public static void main(String[] args){

    //类名.方法名进行访问
    MyMethod.printInt(111111);
    MyMethod.printString("Hello world");
    }

    }
    class MyMethod{

    static void printString(String args){
    System.out.println(args);
    }
    static void printInt(int i){
    System.out.println(i);
    }
    }

                  (1)静态方法不能访问非静态变量

                  (2)费静态方法可以访问静态变量

               PS:静态属性或者方法在类加载的时候产生的

                  非静态属性或者方法是在new的时候产生的

    测试代码:

    package com.java1995;

    public class Domo {

    static int x=0;//定义一个静态变量x,赋初值为0

    static{
    x=100;//创建一个静态语句块,对x进行赋值
    }

    //创建一个构造器,输出x
    Domo(){
    System.out.println(x);

    }
    public static void main(String[] args){
    new Domo();
    }

    }

    运行结果:100,

    说明程序先调用的语句块,static{x=100},而不是直接调用的构造器

    即,先有静态属性,再有非静态属性

    3.静态常量

        public static final int  x=1;

  • 相关阅读:
    binary and out mode to open a file
    ADV7482&TP2825开发之总结
    C++ 操作符重载
    OpenCV学习(一)基础篇
    Linux设备驱动程序 第三版 读书笔记(一)
    My First Linux Module
    Bitmap每个像素值由指定的掩码决定
    C++ File Binary
    Bitmap RGB24 4字节对齐
    查看binlog的简单方法!
  • 原文地址:https://www.cnblogs.com/isit/p/6739895.html
Copyright © 2011-2022 走看看