黑马程序员技术交流社区
标题:
关于 java this关键字的问题
[打印本页]
作者:
山水游客
时间:
2012-5-21 21:11
标题:
关于 java this关键字的问题
首先看下代码:
public class Exercise1 {
static int i=12;
static char a;
public static void main(String args[]){
System.out.println(a);
System.out.println(this.i);
}
}
报错说不能在静态上下文中使用this
这是什么意思?
作者:
冯越
时间:
2012-5-21 21:17
本帖最后由 冯越 于 2012-5-21 21:19 编辑
this指这个类的当前对象,而static修饰的方法或变量叫做 类方法 类成员变量 所以他们和类的实例对象是没有关系的。他们是可以通过 类名.方法名/成员变量名 直接使用的。
作者:
8161776
时间:
2012-5-21 21:25
public class Exercise1 {
static int i=12;
static char a;
public static void main(String args[]){
System.out.println(a);
System.out.println(this.i);
//肯定是要报错的,因为这个i是静态的属性,是随着类的加载而加载的,他不属于任何一个对象,他是公共的,
//this的意思是当前对象,所以这个肯定不行,你可以直接用Exercise1.i;
}
}
报错说不能在静态上下文中使用this
复制代码
作者:
杨康
时间:
2012-5-21 21:26
main主函数是静态的,静态方法中不能出现this。
作者:
云惟桉
时间:
2012-5-21 21:26
this是代表当前对象的引用。说明是在对象存在后才有了this
而static是在类加载的时候就被加载在方法区里了,优先于堆内存中的对象先存在。
所以
在一个static函数里调用了类加载后才会生成的对象,这样就错了~
因此说不能在静态上下文中使用this
作者:
郭宁
时间:
2012-5-21 21:26
我感觉吧:
你用不用 static 修饰 在main 函数中都无法用 this.访问到成员变量的!
原因有二:
一: main 是静态函数, 你想访问成员变量 成员变量 也必须用 static 修饰
二: this 指当前类对象,当前你没类对象,都是静态的 你咋个用this???????
作者:
金鑫
时间:
2012-5-21 23:03
因为i通过static修饰,是一个静态变量,他是通过类的加载而加载。this指的是类的当前对象,并不能访问static修饰的变量。
你可以直接通过System.out.println(i)来输出i。
作者:
李海
时间:
2012-5-22 00:23
这个是肯定不能使用的 this的使用首先要有对象的存在, 你这个i是个静态的变量 静态变量 静态函数是在类开始创建的时候 就分配在方法区中的 它是优先于对象存在的 在静态方法里面不能使用this 主要原因也是由于其优先于对象存在 通俗的讲:后进来的人可以观察到先进来的人 先进来的人是不可以看到后进来的人的 所以 不能在静态方法中使用this
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2