JAVA:静态方法中不能出现非静态变量吗?
在方法内部定义的叫“局部变量”,而不是静态变量,局部变量不能加static,包括protected, private, public这些也不能加。静态变量是定义在类中,方法体外面的。 如果你清楚JVM,应该知道局部变量是保存在栈中的,而静态变量保存于方法区,局部变量出了方法就被栈回收了,而静态变量不会,所以在局部变量前不能加static关键字。
JAVA中静态,动态创建数组的区别,联系?
区别:
1,数组创建时间不同,静态的是一定义出来就创建了,动态的则是定义时不创建,使用时才创建,一定意义上节省了内存空间。
2,使用场景不同,一开始就知道数组长度的使用静态初始化,反之,动态初始化。
联系:
其实没有什么联系,最恰当的方法用在最适合的场景里就行了
静态变量和成员变量的区别太难理解了?
JAVA成员变量和静态变量的区别:
1,成员变量所属于对象。所以也称为实例变量。 静态变量所属于类。所以也称为类变量。
2,成员变量存在于堆内存中。 静态变量存在于方法区中。
3,成员变量随着对象创建而存在。随着对象被回收而消失。 静态变量随着类的加载而存在。随着类的消失而消失。
4,成员变量只能被对象所调用 。 静态变量可以被对象调用,也可以被类名调用。 所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。
java为什么要设计静态方法?这样设计的目的是什么?
静态方法是属于类的,普通方法是属于对象的,外部调用静态方法可以直接用类名.方法名方式,不需要创建对象,而调用普通方法需要对象.方法名的方式,我认为这样设计的目的是程序能够更方便的调用方法,如果程序在多个地方多次调用共同的方法,就不用new很多对象了,多用于工具类。
1.静态方法:整个类所共有的东西,就像一个家族都姓一个姓,
java类可以直接用类名点静态方法名调用
2.实例方法:是类创建的对象特有的,就像你们家有多少钱,你叔叔家有多少钱
java类要new创建对象点方法名调用
3.Stastic为静态变量,在一个类中的任何地方都可以调用,而final表示这个变量不能被修改。静态方法属于类,和对象无关,也就是说不需要实例化可以直接使用。静态方法更像是工具类提供的工具方法,对给定参数执行固定操作,平时用的系统方法可以直接使用的就是静态方法,而scanner一类就需要自己来实例化才能使用
1 支持main函数这种机制,当然你也可以设想一个语言,没有main函数,而是你通过一个类启动,程序启动时booter默认建立这个类的一个唯一实例,然后调用其run方法,也是可以的,或者说你也可以将整个jvm的运行看做是一个唯一的对象,形式问题
2 有些东东其实并不适合用面向对象的方式搞,比如开平方,Math.sqrt(x),你可以弄成x.sqrt()这种形式,但是如果要加一个开立方方法,是不是要将所有可能输入的x都加上这个方法,那对现有库的入侵性太强,不如做成函数,把x作为输入,然后函数内部再根据x提供的接口来实现这个功能
3 和类绑定,这样每次调用就不需要new对象。Scala里面就没有静态这个概念,但是可与用object来代替
