黑马程序员技术交流社区

标题: 有关static,怎么区分静态与非静态 [打印本页]

作者: a527512132    时间: 2016-1-28 23:56
标题: 有关static,怎么区分静态与非静态
最近学习了面向对象,太多的格式,让零基础的我,从之前死记硬背变得力不从心了,都分不清什么时候用static了,求大神指导指导
作者: pea    时间: 2016-1-29 00:30
所有对象共享的,就应该定义为静态的
作者: only-hou    时间: 2016-1-29 10:12
一般定义成员变量和成员方法尽量避免使用static,因为static是属于类成员的。生命周期比较长。如果需求需要让某个成员伴随着类存在就定义成static。
作者: j6819236    时间: 2016-1-29 10:59
static静态修饰的变量和方法,会在对应类加载时就启动,为其分配内存空间,也就是说不论你创不创建对象,或者创建任意对象,被static修饰的变量和方法都是这个类所有对象共享的或者直接类名.XXX调用。通俗点讲,就是你要用这个变量或方法,我也要用同一个变量或方法,就用static修饰。
使用举例:例如
public class Demo {
       public void main(String[] args) {
                System.out.println(Test.num); //直接类名.变量名就可以调用
                Test t1=new Test();
                t1.num+=10;                      //num=20
                System.out.println(t1.num);
                Test t2=new Test();
                t2.num+=10;                      //这个num=30;这个时候你想继续使用上面的20,要被static修饰,所有对象共享 ,如果不用static修饰num=20,因为不共享了,等于重新定义了一个num,只为定义的对象使用.
                System.out.println(t2.num);
         }
}

class Test {
        public static int num=10;
}
作者: 西贝    时间: 2016-1-29 12:37
二楼说的对,一般来说,对所有对象共享的属性或者方法,可以定义成static静态。
ps:学习编程不能靠背,背下来,不理解,效率低,用处也不大。
作者: 梁志斌    时间: 2016-1-30 01:32
先记下来,用它个四五次,理解,就o了
作者: hi丶bo    时间: 2016-1-30 10:21
数据需要共享的时候就用静态,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2