黑马程序员技术交流社区
标题:
关于静态方法的小问题
[打印本页]
作者:
官仁杰
时间:
2012-9-26 18:40
标题:
关于静态方法的小问题
本帖最后由 官仁杰 于 2012-9-26 20:21 编辑
public class test {
public static void main(){
new StaticDemo();
}
}
//5.14
class StaticDemo{
static String s1 = "s1";
static{
String s2 = "s2";
}
public static void show(){
System.out.println(s1);
System.out.println(s2);
}
}
复制代码
为什么不能打印s2?
作者:
杨志男
时间:
2012-9-26 18:45
new了对象,不调用方法?
作者:
周万谋
时间:
2012-9-26 18:48
本帖最后由 周万谋 于 2012-9-26 18:50 编辑
s2 只在区间
static{
String s2="s2"
}有效,还有主函数忘记写数组String[] 了
作者:
王贵朝
时间:
2012-9-26 18:52
我认为s2超出了变量作用域,s2是在Static代码块中声明的,属于局部变量
作者:
黑马-王康
时间:
2012-9-26 18:58
三楼说的对!呵呵
对于变量要注意3点哦...
1)看其作用域。
2)看其类型。
3)看其初始类型值。
作者:
孙岳
时间:
2012-9-26 19:11
1,main方法没加参数。
2,静态方法show()没有被调用。
3,s2是静态代码块中定义的,作用域在静态代码块中,show方法调用不到。
试试这个:
public class Test {
public static void main(String[] args){
new StaticDemo();
StaticDemo.show();
}
}
//5.14
class StaticDemo{
static String s1 = "s1";
static{
String s2 = "s2";
System.out.println(s2);
}
public static void show(){
System.out.println(s1);
// System.out.println(s2);
}
}
作者:
王玉岩
时间:
2012-9-26 19:30
public class test {
public static void main(){
//首先这里的话应该是main(String[] args)
new StaticDemo();
}
}
//5.14
class StaticDemo{
static String s1 = "s1";
static{
String s2 = "s2";
//静态代码块是随着类的加载而加载因为他是静态的,当你后边要打印s2的时候并不能找到s2
System.out.println(s2); //这句话我给你改到这里,这样就可打印出s2,如果还需要打印s1的话再new完之后再调用一下show()即可。
}
public static void show(){
System.out.println(s1);
}
}
作者:
李润根
时间:
2012-9-26 20:05
静态代码块 随着类的加载而执行,只执行一次
而且S2只作用于静态代码块
作者:
官仁杰
时间:
2012-9-26 20:21
问题已解决
谢谢各位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2