能具体说说static的用处吗?

54xx 2001-04-21 03:43:00

能具体说说static的用处吗?
**********Code1**********
class TstApp{
public static void main (String args[]){
Next_Level(args[0]);
}
public static void Next_Level(String Incoming_String){
System.out.println(Incoming_String);
}
}
通不过编译
**********Code2**********
class TstApp{
public static void main (String args[]){
TstApp xx=new TstApp();
Next_Level(args[0]);
}
public static void Next_Level(String Incoming_String){
System.out.println(Incoming_String);
}
}
通过
**********Code3**********
class TstApp{
public TstApp(){
Next_Level("54xx");
}
public static void main (String args[]){
TstApp xx=new TstApp();
Next_Level(args[0]);
}
public void Next_Level(String Incoming_String){
System.out.println(Incoming_String);
}
}
通过
******************************
实在是搞不清static是干想什么的?
...全文
163 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
backlove 2001-05-04
  • 打赏
  • 举报
回复
能不能给点专业精神呀,派分吧!!!
lionet 2001-05-04
  • 打赏
  • 举报
回复
这么多精彩的回答都得不到分 我还是算了,不浪费键盘了。
54xx 2001-05-04
  • 打赏
  • 举报
回复
不好意思,这不 一放假了就玩得不亦乐乎了!
多谢各位,马上加分!
gdsean 2001-04-30
  • 打赏
  • 举报
回复
这个问题我发现我曾经回复过
哈哈可是我却没有发现我的文字?!
to 54xx():
上次问这个问题的是你吗?
也是三段代码比较的,有关static的
我不说了,上面那么多大侠全给讲了,
我靠什么拿分?!

luodi 2001-04-30
  • 打赏
  • 举报
回复
在Java中,把static的方法直接当成是C/C++中的全局函数,static的变量当成是C/C++中的全局变量,区别在于:
C/C++中的全局变量是在程序运行时就一定存在的(专业一点是指在main入口点之前就得初始化),java中static变量是要用到这个类的时候才会去初始化才存在的,更节约?:)
C/C++中的全局函数也一样是程序一运行就存在的,java 中的static 方法一样要等到使用这个类时才存在,而且拥有这个类的命名空间,比C/C++中更方便,因为不同的类可以有一模一样名称的static方法,可以从类名来分开这两个全局函数(这就是命名空间的用法)。

从技术一点的角度来说,static 的方法的参数表中不象其他类中的方法一样有一个隐含的this指针,所以在编译时就确定下来,不在类的vtable里出现,不需动态绑定,是静态绑定。

有静态类的存在,一样是不用不存在,用的时候就创建,其它一切同上。
啊,我正在练打字,自我感觉进步很快呀。:)
arthur_chen 2001-04-30
  • 打赏
  • 举报
回复
有STATIC类,STATIC的作用就是不必生成类的实例可以直接调用,不管是函数,类,还是变量,作用有点类似于C/C++的全局函数和变量
54xx 2001-04-30
  • 打赏
  • 举报
回复
请问有没有static类?
Anreddy 2001-04-30
  • 打赏
  • 举报
回复
We can not use the keyword 'this' in static method, because the instance doesn't exist when we call this static method.
Anreddy 2001-04-30
  • 打赏
  • 举报
回复
用static定义的叫类变量(类方法),不用通过实例(instance)来访问.否则叫实例变量,须通过new 一个instance 来调用.
backlove 2001-04-30
  • 打赏
  • 举报
回复
第一个程序:你在静态函数中调用非静态函数,错.
二:调用静态函数,ok.
三:在静态函数(main)中生成了类实例,所以可以执行Next_Level.
backlove 2001-04-30
  • 打赏
  • 举报
回复
强烈建议你看看thinking java
wxyxl 2001-04-30
  • 打赏
  • 举报
回复
我同意 luodi(无知者无畏) 的看法!
wxyxl 2001-04-30
  • 打赏
  • 举报
回复
to richardsong(白玉老虎) :
Static方法是可以重写的。不信你可以试试!
Zephyr_Boy 2001-04-22
  • 打赏
  • 举报
回复
static 静态函数,即在该类对象没有被生成之前即可以直接调用的函数,这样的例子有很多.
code2因为两个都是static,所以直接可以调用,因为在装入该类时,该方法已在内存中,而code1显然不行,code3因为调用的main函数已经生成对象xx,所以可以通过。
54xx 2001-04-22
  • 打赏
  • 举报
回复
因为我是在编译运行以上三种代码后才想起在这里问这个问题的,因此整理的时候出了不少的错误,现在更正如下:
**********Code1**********
class TstApp{
public static void main (String args[]){
Next_Level(args[0]);
}
public void Next_Level(String Incoming_String){
System.out.println(Incoming_String);
}
}
通不过编译
**********Code2**********
class TstApp{
public static void main (String args[]){
TstApp xx=new TstApp();
xx.Next_Level(args[0]);
}
public static void Next_Level(String Incoming_String){
System.out.println(Incoming_String);
}
}
通过
**********Code3**********
class TstApp{
public TstApp(){
Next_Level("54xx");
}
public static void main (String args[]){
TstApp xx=new TstApp();
}
public void Next_Level(String Incoming_String){
System.out.println(Incoming_String);
}
}
通过
54xx 2001-04-21
  • 打赏
  • 举报
回复
不好意思,Next_Level应该没有Static
yangzi 2001-04-21
  • 打赏
  • 举报
回复
不对,你的第一种写法,也可以编译通过。
richardsong 2001-04-21
  • 打赏
  • 举报
回复
Static就是静态的,不允许子孙类中对此方法进行Override超越

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧