Topic: 奇怪, static函数里面可以使用非static变量???

  Print this page

1.奇怪, static函数里面可以使用非static变量??? Copy to clipboard
Posted by: ydyd
Posted on: 2006-06-25 04:26

下面程序compile, run 都没问题, 但是 变量 i没有定义为static, 怎么javac不报错, java也可以运行, 显示为 i 的初始值 0, 想问问大家问什么,
public class A{
  int i;

  public static void main(String argv[]){
    System.out.println("main.i: " + new A().i);
  }

2.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: why
Posted on: 2006-06-25 11:38

Dead Please read carefully:
new A().i

Got it?
new A()

3.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: ydyd
Posted on: 2006-06-25 21:13

谢谢
看是看到了, 就是没明白 为什么 new了一个对象后 在static函数里面就可以引用里面的非static函数. 没明白

4.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: ydyd
Posted on: 2006-06-25 21:16

对了 是不是因为new了以后, 变量 i 的使用权 就交给new出对象new A()了, 所以 main不管变量 i 是不是static的??

5.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: tomcatexpert
Posted on: 2006-06-25 22:06

已经是一个A实例在使用i,都是non static,当然没问题

6.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: ydyd
Posted on: 2006-06-25 23:13

OK OK~~

7.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: heartache
Posted on: 2006-06-29 10:33

complex !

8.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: wwwabc0001
Posted on: 2006-06-29 14:53

关键在于main是一个特殊的函数,如果你自己在建立一个静态函数试试看,应该就不行的了。

9.Re:奇怪, static函数里面可以使用非static变量??? [Re: wwwabc0001] Copy to clipboard
Posted by: zcjl
Posted on: 2006-06-29 16:04

wwwabc0001 wrote:
关键在于main是一个特殊的函数,如果你自己在建立一个静态函数试试看,应该就不行的了。

Oh My God
are you sure?

10.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: wqq0712
Posted on: 2006-07-02 20:14

特殊函数?应该不是你说的那样吧?
不是很清楚??
new A().i

11.Re:奇怪, static函数里面可以使用非static变量??? [Re: wwwabc0001] Copy to clipboard
Posted by: sunjavaduke
Posted on: 2006-07-08 22:53

wwwabc0001 wrote:
关键在于main是一个特殊的函数,如果你自己在建立一个静态函数试试看,应该就不行的了。

of course it works~~~
it is not the reason of main,but new A() has generated an instance.and because the variable i was friendly(that can use in the same class and same package),so it works.
if not,you use
System.out.println(i);
it will cause error.

main is just a method of the class,like the other static method in some degree.

12.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: zhjin790
Posted on: 2006-07-17 09:29

i是一个实例变量,int i的默认初始值是0

13.Re:奇怪, static函数里面可以使用非static变量??? [Re: ydyd] Copy to clipboard
Posted by: qkmadcat
Posted on: 2006-07-23 14:09

你不用new a()试试,还可以的话就不用学java了


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923