黑马程序员技术交流社区
标题:
静态问题
[打印本页]
作者:
蓦然回首3Y
时间:
2015-7-3 12:14
标题:
静态问题
class StringLianXi
{
public StringLianXi(int a)
{
sop(a);
}
static int x;
public static void main(String[] arr)
{
String s="abcdefgabcdefg";
StringLianXi slx=new StringLianXi(3);
//sop(slx.stringLength(s));
//stpr();
slx.stringLength(s);
System.out.println(x);
}
public int stringLength(String str)
{
x=str.length();
//sop(x);
return x;
} }
为什么x 不定义成静态会编译失败呢?
作者:
孙嘉亮
时间:
2015-7-3 12:18
把x改为slx.x就可以了。
作者:
孙嘉亮
时间:
2015-7-3 12:23
其实你在stringLength()里return 了。直接打印slx.stringLength(s)就好了
作者:
Diors
时间:
2015-7-3 12:38
因为静态方法不能访问非静态域,main()方法是静态的,main()访问了x,所以x必须定义成静态的
作者:
等你的季节-夏天
时间:
2015-7-3 13:22
谢谢分享
作者:
蓦然回首3Y
时间:
2015-7-3 16:26
main方法访问的都是静态的吗?
作者:
蓦然回首3Y
时间:
2015-7-3 17:07
弄明白了,谢谢大家的解答
作者:
终极黑马
时间:
2015-7-3 18:01
成员变量你不用类调用就把它定义为静态的!要不然静态的调用它会错!
作者:
慕容旺财
时间:
2015-7-4 12:59
因为你的x没有定义在stringLength()方法内部 所以是成员变量 对整个类中的成员函数都生效 那么对于主函数来说 首先你没把x的值返回到主函数 然后却直接打印了x 那么这个x就不是你stringLength里面的x 而是成员变量x 因为主函数是静态的 所以里面的用到的引用外边的东西(函数 变量)也要是静态的
作者:
kime
时间:
2015-7-4 15:31
main是静态方法,不能调用非静态变量。变为System.out.println(slx.x);就可以了
作者:
Love丶cd
时间:
2015-7-6 15:36
因为main函数是静态的,静态函数只能访问静态变量。这是我们应该知道的常识,建议你再好好看一下基础视频
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2