类中的static属性 和 非static属性的区别

加载顺序,static属性肯定先于非static加载,因此static方法不可以加载非static变量

static代表的是成员变量,有一个类下面有个属性是ArrayList类型,是static的,比如说我new了两个实例,对这个ArrayList 属性进行操作,实际上它们两个是对同一个ArrayList进行的操作。

把static去掉,你会发现,两个实例用了两个不同的ArrayList

附代码:

package test;

public class Stack {

//栈指针

    private  static int i = -1;

//内部数组

    private  static Object[]oarr =new Object[4];

//入栈

    public void push(Object e) {

i++;

//检查栈是否已满,如果满了,扩容2size-1

        oarr = checkStatckFull();

oarr[i] = e;

}

//出栈

    public Object pop(){

if(i<0){

return "栈为空";

}

oarr[i] =null;

i--;

return i;

}

public Object[] checkStatckFull(){

if(i ==oarr.length){

Object[] oldarr =oarr;

Object[] newarr =new Object[2*oldarr.length-1];

System.arraycopy(oldarr,0,newarr,0,i);

return newarr;

}

return oarr;

}

//查看栈内元素

    public void printStack(){

for(int j =0 ; j<=i ; j++){

System.out.println(oarr[j]);

}

System.out.println("数组长度:"+oarr.length);

}

public static void main(String[] args){

Stack stack1 =new Stack();

Stack stack2 =new Stack();

stack1.push("wu");

stack1.push("jie");

stack2.push("zhang");

stack2.push("san");

//stack.push("wang");

//stack.push("wu");

        stack1.printStack();

System.out.println("----------------------");

stack2.printStack();

System.out.println("----------------------");

stack1.pop();

stack1.printStack();

System.out.println("----------------------");

stack2.printStack();

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,782评论 0 89
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,690评论 1 114
  • 近日读夏日漱石的《我是猫》,里面有一个特别有趣的观点:未来社会的人是不会结婚的,本人深感有趣,只是现在的中国物质经...
    闲花听雨江舟上阅读 416评论 2 0
  • 【不是内容越来越不好做,是你的内容没做好】 前不久几个新媒体运营的伙伴聚集在一起讨论,大家都觉得线上影响力越来越差...
    幕小沐阅读 372评论 0 1