黑马程序员技术交流社区

标题: 大家给看看这段简单代码 分析下错 [打印本页]

作者: 马雨铎    时间: 2011-7-27 22:44
标题: 大家给看看这段简单代码 分析下错
public class TestScope{
public static void main(String[] args)   {
   int x = 12;
    {
      int q = 96;
     int x = 3;
      System.out.println("x is "+x);
     System.out.println("q is "+q);       }
   q = x;//应该这是这有问题    大家给看看这么改才能让这个程序 顺利运行
    System.out.println("x is "+x);      
   }
}
作者: 匿名    时间: 2011-7-27 22:50
看不明白你写的到底是什么意思,你是想做什么?
作者: 匿名    时间: 2011-7-27 22:52
你是想把q的值赋给x么?

这样的话,要写成 x = q;
作者: 匿名    时间: 2011-7-27 23:08
是啊 我这都瞅了半小时了 没看出来想要问什么 而且问题也不是那
作者: 匿名    时间: 2011-7-27 23:21
这个是什么程序哦,兄弟你贴出来的时候看了一下没有,调试过没有哦,你的问题也没有说清楚,我想你是不是想测试一个局部变量和一个全局变量的问题哦。是不是像这样哦:
public class TestScope {
        public static void main(String[] args) {
                int x = 12;
                {
                        int q = 96;
                        x = 3;
                        System.out.println("x is " + x);
                        System.out.println("q is " + q);

                        x = q;
                        System.out.println("x is " + x);
                }
        }
}
作者: 匿名    时间: 2011-7-28 09:26
若局部变量和全局变量同名,则在局部变量的作用域内全局变量会被隐藏,即不再起作用了。
但是您的程序,是在一个局部范围内,定义了两个变量x,所以,您程序的第一个错误是由“变量重复定义”引起的。
范例1:他们需要分居。[code=java]package org.cxy.demo;

public class Demo{
        public static void main(String[] args) {
                {
                        int x = 12;
                        System.out.println("x="+x);
                }
                {
                        int x = 3;
                        System.out.println("x="+x);
                }
        }
}[/code]第一个x和第二个x分别属于main方法中的不同的子块。 当程序流程执行完第一个块内的代码时,该块内的所有变量都将消失。
因此,执行到第二个块时,不会出现“变量重复定义”。
但是,您的代码,类似于如下:
范例2:他们居然视图同居。[code=java]package org.cxy.demo;

public class Demo{
        public static void main(String[] args) {
                int x = 12;
                {
                        int x = 3;
                        System.out.println("x="+x);
                }
        }
}[/code]此时第一个x属于main方法块,只有在main方法结束后,他才会消失。而程序执行到第二个x时,第一个x并没有消失。

您的第二个错误,是代码缩进不规范导致的。
范例3:仔细看看吧。[code=java]package org.cxy.demo;

public class Demo{
        public static void main(String[] args) {
                int x = 3;
                {
                        int q = 96;
                }
                q = x;//应该这是这有问题 大家给看看这么改才能让这个程序 顺利运行
        }
}[/code]当q所在的块被执行完毕后,那么q就消失了,因此在块的外面无法访问到q。

提示:复制代码后,将代码放入记事本中,使用替换功能,可以将 替换成“ ”字符。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2