/**
*
* 普通变量是属于对象
* 给static修饰的变量不属于对象 属于类 (类变量)
* 同一个类*享
*
* 类变量(静态变量) 在所有对象 *享 没有对象也能获取类变量的值
*
* 给static修饰的方法不属于对象 属于类 (类方法 静态方法)
*
*
*/
静态方法不能调用非静态方法与变量,反之可以。
public class Demo3 {
public static void main(String[] args) {
Test1 test1 = new Test1();
test1.i=10;
test1.b= 12;
System.out.println("第一个i");
System.out.println(test1.i);
System.out.println( test1.b);
System.out.println("第二个i");
Test1 test11 = new Test1();
System.out.println( test11.i);
System.out.println( test11.b);
System.out.println(Test1.b);
}
}
/**
*
* 普通变量是属于对象
* 给static修饰的变量不属于对象 属于类 (类变量)
* 同一个类*享
*
* 类变量(静态变量) 在所有对象 *享 没有对象也能获取类变量的值
*
* 给static修饰的方法不属于对象 属于类 (类方法 静态方法)
*
*
*/
public class Demo4 {
public static void main(String[] args) {
int add = Test1.add(10, 10);
System.out.println(add+"....");
}
}
/**
* static 到底用在哪些地方?
* static:共享 整个程序中只存在一次
* 解决频繁创建对象的操作,加快运行速度,减少不必要的浪费
* 不是所有属性或者方法都适合的 会造成数据共享(不安全的问题)
*
* 工具类,共享的数据,加载固定的文件,加载配置类
*
*/
public class Demo5 {
public static void main(String[] args) {
int i = Test2.i;
Test2.i = 200;
int i2 = Test2.i;
System.out.println(Test2.i);
System.out.println(i2);
}
}
java中的static方法是不可以被覆盖的,因为方法覆盖是基于运行时的动态绑定的,而static方法编译时是静态绑定的,static方法类的任何事例都不相关联。
java中也不可以覆盖private权限的方法,因为private修饰变量只能在当前类内部使用,其他类继承当前类的时候,访问不到private变量,当然不能覆盖!