static方法(与隐式static方法)
来源:互联网 发布:java 红黑树原理 编辑:程序博客网 时间:2024/04/30 13:28
static方法就是没有this的方法.在static方法的内部不能调用非静态方法,反过来,非静态方法倒是可以调用static方法.
值得注意的是:这里说的是在static方法内部,不能直接调用非static方法,但可以通过生成对象来调用非静态方法.
在static方法内部,也不可以调用非static变量,其实道理很简单,因为static是面向全局的,相当于全局方法,不可能只针对某个类中的一般变量而使用.
在static与非static方法内部都不能声明static变量(全局变量),因为在方法内声明的变量都是局部变量,不可能在里面定义一个全局变量.
了解上面的知识后,你可能会发现有一个特例:在编程思想第四版P157上,构造器隐式的就是static的!然而在构造器内部为什么可以直接调用非静态方法??
所谓显式隐式static,是指类在实例化时,系统会执行的代码
比如
class StaticTest...{ //这样没有static关键字的,叫隐式static,系统执行完显式static后会接着执行隐式static的代码
...{
System.out.println("hide static");
show(); // 这个方法不是static的,但是在这里不会出错
}
static...{ //这样有static关键字的叫显式static,系统会先执行显式static的代码
System.out.println("static");
//show(); //这个方法不是static的,所以会出错
}
public StaticTest()...{ //执行完显式和隐式static后,系统会执行构造器的代码,因为构造器没有static,但也会被执行,跟隐式static一样,所以书上就把它说成隐式static了
System.out.println("constuctor");
}
public void show()...{
System.out.println("show");
}
public static void main(String[] args) ...{
new StaticTest();
}
}
...{
System.out.println("hide static");
show(); // 这个方法不是static的,但是在这里不会出错
}
static...{ //这样有static关键字的叫显式static,系统会先执行显式static的代码
System.out.println("static");
//show(); //这个方法不是static的,所以会出错
}
public StaticTest()...{ //执行完显式和隐式static后,系统会执行构造器的代码,因为构造器没有static,但也会被执行,跟隐式static一样,所以书上就把它说成隐式static了
System.out.println("constuctor");
}
public void show()...{
System.out.println("show");
}
public static void main(String[] args) ...{
new StaticTest();
}
}
- static方法(与隐式static方法)
- 【Java】static方法与非static方法
- Static--方法与变量
- static 方法
- static方法:
- static 方法
- static 方法
- static方法
- java - final与static方法
- java static 变量与方法
- static方法与非static方法相互调用的方式
- synchronized修饰static方法与非static方法的区别
- Java的static方法与非static方法
- static方法与实例方法区别
- static 块,static 方法详解
- static 方法和static 变量
- 静态方法--static方法
- java 基础:static 与构造方法
- PHP Session丢失问题解决
- ORACLE 中ROWNUM用法总结!(精华)
- 未来
- Differences Among Greedy, Reluctant, and Possessive Quantifiers
- 常用电源IC
- static方法(与隐式static方法)
- EXISTS、IN、NOT EXISTS、NOT IN的区别
- 新年新打算
- (转)volatile的作用
- 常用电源IC
- Java代码执行顺序-样例
- 批处理set命令注意事项
- 74系列芯片资料
- 一个关于hibernate3配置两个相连大写字符的字段名问题(菜鸟级)