静态变量或叫静态字段的东西,当我们计算一个人在不同地房吃饭时,我们可以需要这样吗
需要设置一个临时变量然后在一个个加上去吗?可以但还不够好,我可以去向Java的设计者怎么做,所以他设计了静态变量,还有叫静态工厂的,反正挺复杂的定义,但是我们值需要知道他被所有的对象都可以调用,上一段代码来看
package static_field;
public class Static_Field
{//计算不同的人花钱的总和person的fee
public static void main(String[] args)
{
Person person = new Person("小明");
person.eat_fee(10);
Person person1 = new Person("lbk");
person1.eat_fee(13);
Person.show_fee();
}
}
class Person
{
static int fee = 0;
String name;
public void eat_fee(int a)
{
System.out.println(name+"这顿花了"+a+"元");
fee+=a;
}
public Person(String name) {
this.name = name;
}
public static void show_fee()
{
System.out.println("一共花了"+fee+"元");
}
}
小明和lbk分别调了静态变量,使fee加了13和10最后的结果当然就是23.
以下为实质
这个fee他是存在静态域中的,但是这个静态域在哪是根据版本不同来决定的,据说现在应该是在堆中的,感兴趣就自己上网找吧。实质就是在加载类信息时,static就会加载,怎么说呢,我们常间的math和这个person.fee我都可以用类名来去直接调用。就足以说明了。
与静态变量有关的自然就是静态方法了
使用场景就是
当一个方法不涉及任何任何和对象相关的变量我们就可以设计成静态方法
比如Math类和一些常用的功能,你说用这些功能需要你重新创建对象再用吗,完全不需要的呀!
把常见的方法直接设为静态变量,方便调用
静态方法注意事项
因为在静态变量和静态方法是一样在静态域中的,随着类的加载二创建,但是这里面不能有对像,你是创建类,但没有对象,所以this super也不用了捏,就是创建时间的问题,所以静态方法也能访问其他静态变量和方法,不信你就可以自己试试,直接报错。
但是捏普通方法就可以用静态的所有东西,因为静态创建好了,我当然可以用,就是创建时间的问题,为创建好了,但是普通方法美好当然就不行。记住创建时间。
main的解析
当我们学了静态后就知道static,就是方便在虚拟机运用,public是为可以被调用,void时你不需要返回点什么,main时程序的入口,至于后面的数组,在文件名后输入字符串类的,就是普通数组,你知道那里输入就行了。