| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1370 人关注过本帖
标题:变量 的 重新定义
只看楼主 加入收藏
h17891789
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-12-18
收藏
 问题点数:0 回复次数:14 
变量 的 重新定义

各位大哥 请指教一下 下面的程序:
/*
*块的嵌套
*/
public class PartArea1
{ int a=6;
public static void main(String[] args)
{
int a = 15;
int b = 2;
if(a == 15)
{
//(去掉int后不出错) int a = 10;//在一个方法内该类的局部变量不能在该类的块中重新定义
double c = 2;//c是可用的
System.out.println(a + "/" + c + "=" + (a/c));
System.out.println("the value a is " + a);//a是可用的
}
//System.out.println("the value c is " + c);//在这里c已经不再可用
System.out.println(a + "/" + b + "=" + (a/b));
System.out.println(a + "%" + b + "=" + (a%b));
}
}
我想请教的是
1. a作为全局变量后;继续在方法里面重新定义后;但是在方法体里面的小块里面 不能重新定义 是为什么?
2. 为什么在if语句中 如果强行定义a的情况下 必须去掉 类修饰符 为什么?
3.在if语句中 去掉类修饰符后 代表什么 难道 变量有什么默认类型吗 如果有 那是什么啊?

搜索更多相关主题的帖子: 变量 定义 
2007-03-25 14:23
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
以下是引用h17891789在2007-3-25 14:23:11的发言:

各位大哥 请指教一下 下面的程序:
/*
*块的嵌套
*/
public class PartArea1
{ int a=6;
public static void main(String[] args)
{
int a = 15;
int b = 2;
if(a == 15)
{
//(去掉int后不出错) int a = 10;//在一个方法内该类的局部变量不能在该类的块中重新定义
double c = 2;//c是可用的
System.out.println(a + "/" + c + "=" + (a/c));
System.out.println("the value a is " + a);//a是可用的
}
//System.out.println("the value c is " + c);//在这里c已经不再可用
System.out.println(a + "/" + b + "=" + (a/b));
System.out.println(a + "%" + b + "=" + (a%b));
}
}
我想请教的是
1. a作为全局变量后;继续在方法里面重新定义后;但是在方法体里面的小块里面 不能重新定义 是为什么?
2. 为什么在if语句中 如果强行定义a的情况下 必须去掉 类修饰符 为什么?
3.在if语句中 去掉类修饰符后 代表什么 难道 变量有什么默认类型吗 如果有 那是什么啊?

1,JAVA里面没有全局变量这一说,只有成员变量和静态变量还有局部变量,因为你在 main方法里面定义了int a,那么此时a的作用域就是整个main方法,所以当然不能再定义一个int a了.如果还可以定义过一个的话,那当我们用a的时候,谁知道我们用的是第一个 还是第二个a呢?
2,因为你在main方法外面定义的a不是静态变量,而是成员变量,main是静态的方法,在静态方法里面是不能直接访问成员变量的,除非你把main方法外面的a定义成静态的
3,代表a就是你在main方法里面定义的a


可惜不是你,陪我到最后
2007-03-25 14:29
h17891789
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-12-18
收藏
得分:0 
谢谢 但是我不怎么明白你所解释的第三条:我的理解是:a如果是在main 方法里重新定义的那个a 但是运行出来后不是 被定义的a的值啊
2007-03-26 10:00
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
第三条说白了就是作用域的问题,你好好理解一下吧

可惜不是你,陪我到最后
2007-03-26 12:28
h17891789
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-12-18
收藏
得分:0 
非常感谢  
2007-03-27 17:29
风的声音
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2007-3-27
收藏
得分:0 
以下是引用h17891789在2007-3-26 10:00:10的发言:
谢谢 但是我不怎么明白你所解释的第三条:我的理解是:a如果是在main 方法里重新定义的那个a 但是运行出来后不是 被定义的a的值啊

//(去掉int后不出错) int a = 10;//在一个方法内该类的局部变量不能在该类的块中重新定义
这个已经不是重新定义了吧,还是那个a吧
去掉当然不会出错,而且是正确的思路啊。。。


一念心清净,莲花处处开。 一花一净土,一土一如来。
2007-03-27 19:30
liuzhe
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-2-25
收藏
得分:0 

以下是引用千里冰封在2007-3-25 14:29:00的发言:


1,JAVA里面没有全局变量这一说,只有成员变量和静态变量还有局部变量,因为你在 main方法里面定义了int a,那么此时a的作用域就是整个main方法,所以当然不能再定义一个int a了.如果还可以定义过一个的话,那当我们用a的时候,谁知道我们用的是第一个 还是第二个a呢?

如果想把第一个int a定义成成员变量 , 那要怎么定义啊?? 有些不懂 ,谢谢指教

[此贴子已经被作者于2007-3-29 9:27:52编辑过]

2007-03-29 09:27
风月_无边
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:60
帖 子:2960
专家分:652
注 册:2007-1-19
收藏
得分:0 
你的main()外面不是有一个a了吗,那就是成员变量了。

我的网站 http://www.
2007-03-29 09:37
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

直接定义在类里面的不加static 的变量就是成员变量,它们每个对象都有一份


可惜不是你,陪我到最后
2007-03-29 10:04
sea7
Rank: 2
等 级:新手上路
威 望:3
帖 子:291
专家分:0
注 册:2007-2-17
收藏
得分:0 

千里把什么都说了


软件是一种修养
2007-03-29 12:35
快速回复:变量 的 重新定义
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016822 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved