A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张帅 黑马帝   /  2012-2-6 23:40  /  2428 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一个String value = System.getProperty("os.name");是main方法的局部变量
作用范围是整个main方法,而String value =  (String)prop.get(obj);是for循环
里的,作用范围只限for循环中,所以会报错,但是若果把
String value = System.getProperty("os.name");放在for循环后面就没问题。
简单点说就是出了大括号就没作用了



评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 张帅 于 2012-2-7 15:11 编辑

我的问题是,我有两个同名的value变量,但是i其中一个是局部的,在for里,为什么会提示?
  1. import java.util.*;
  2. class Demo{
  3.         public static void main(String args[]) throws Exception{
  4.                 Properties prop = System.getProperties();
  5.                 //因为Properties是Hashtable的子类,也就是Map集合的一个类的对象。
  6.                 //那么可以通过Map的方法获取出该集合中的元素。
  7.                 //该集合中存储都是字符串,没有泛型定义
  8.                
  9.                 //如何在系统中自定义一些特有信息呢?
  10.                 System.setProperty("mykey","myvalue");
  11.                
  12.                 //获取指定属性信息
  13.                 String value = System.getProperty("os.name");
  14.                 System.out.println("value="+value);
  15.                 //获取所有属性信息。
  16.                 for(Object obj : prop.keySet()){
  17.                         String value = (String)prop.get(obj);
  18.                         System.out.println(obj+"::"+value);
  19.                 }
  20.         }
  21. }
复制代码
Demo.java:17: 已在 main(java.lang.String[]) 中定义 value
                        String value = (String)prop.get(obj);
                               ^
1 错误

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

8 个回复

倒序浏览
1,局部变量:定义在函数中,或者语句内。
1,这两个value都是局部变量,因为都定义在主函数里。
2,这两个value因为都是局部变量,所以被重复定义了。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 赞一个!

查看全部评分

回复 使用道具 举报
我认为:
两个都在局部位置上,
同属局部变量,
应该不能重名吧.

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
陈时峰 发表于 2012-2-6 23:49
第一个String value = System.getProperty("os.name");是main方法的局部变量
作用范围是整个main方法,而St ...

感觉在for里,就和外面的不冲突了
回复 使用道具 举报
王文龙 发表于 2012-2-6 23:56
我认为:
两个都在局部位置上,
同属局部变量,

第二个不是在for的范围内吗?怎么跟外边还有联系?
回复 使用道具 举报
秦碧 黑马帝 2012-2-7 00:10:34
7#
张帅 发表于 2012-2-6 23:57
第二个不是在for的范围内吗?怎么跟外边还有联系?

main也是Demo类中的一个函数
所以两个value都是局部变量
一个函数中不可以定义两个同名的局部变量

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
张帅 黑马帝 2012-2-7 00:34:09
8#
秦碧 发表于 2012-2-7 00:10
main也是Demo类中的一个函数
所以两个value都是局部变量
一个函数中不可以定义两个同名的局部变量 ...

我知道了,我是在这里迷糊了,这个是对的吧
比如
int i= 0
for(int i =0;;){

}
回复 使用道具 举报
王_涛 黑马帝 2012-2-7 14:16:03
9#
1.这两个都是局部变量

2.第一个局部变量的范围在main方法中包含for循环,

3.两个局部变量存在交集是问题发生的根本所在

点评

对  发表于 2012-2-7 14:57

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马