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;

  • 相关阅读:
    CodeForces 347B Fixed Points (水题)
    CodeForces 347A Difference Row (水题)
    CodeForces 346A Alice and Bob (数学最大公约数)
    CodeForces 474C Captain Marmot (数学,旋转,暴力)
    CodeForces 474B Worms (水题,二分)
    CodeForces 474A Keyboard (水题)
    压力测试学习(一)
    算法学习(一)五个常用算法概念了解
    C#语言规范
    异常System.Threading.Thread.AbortInternal
  • 原文地址:https://www.cnblogs.com/isit/p/6739895.html
Copyright © 2011-2022 走看看