社区
Java SE
帖子详情
局部变量重名问题
skycncomp
2005-10-13 10:34:04
在同一个方法是不可以有同一个变量名存在的,
突然想到为什么
for(int i = 0; i < 10; i++) {
Date d = new Date();
String s = new String("ssssss");
}
这样的重复名字可以存在呢?
...全文
292
13
打赏
收藏
局部变量重名问题
在同一个方法是不可以有同一个变量名存在的, 突然想到为什么 for(int i = 0; i < 10; i++) { Date d = new Date(); String s = new String("ssssss"); } 这样的重复名字可以存在呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wb0622
2005-10-19
打赏
举报
回复
d和s只作用于本次循环中不影响下次循环
trumplet
2005-10-19
打赏
举报
回复
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
for (int i=1; i<10; i++){
String s = new String("ssssss");
if (i==5) s="5";
System.out.println(i + " " + s);
}
运行结果:
1 ssssss
2 ssssss
3 ssssss
4 ssssss
5 5
6 ssssss
7 ssssss
8 ssssss
9 ssssss
skycncomp
2005-10-19
打赏
举报
回复
那要是这样写呢?
for(int i = 0; i < 10; i++) {
Date d = new Date();
String s = "ssssss";
}
同样每次都生成一个新对象吗?
aspirerME
2005-10-14
打赏
举报
回复
每次都生成了一个新的对象,这样好理解点。
trumplet
2005-10-13
打赏
举报
回复
for(int i = 0; i < 10; i++) {
Date d = new Date();
String s = new String("ssssss");
}
这里的new Date()和new String(),只是通知编译器为for循环语句块分配内存空间,作用域仅在for循环内部。声明变量(包括变量的初始化)不是可执行语句,是编译期做的事,而不是运行期做的事。
thumb3344
2005-10-13
打赏
举报
回复
这个问题很有意思啊。
差点被蒙了。
holy_phoenix
2005-10-13
打赏
举报
回复
这不是重名。要分清楚编译期和运行期是不同的两个阶段。
trumplet
2005-10-13
打赏
举报
回复
可以,因为每循环一次就重新给s分配了一个地址。
--------------------------------------------
谁说的?竟然有这事?
yanxiazhiqiu
2005-10-13
打赏
举报
回复
楼上,哈!
trumplet
2005-10-13
打赏
举报
回复
for(int i = 0; i < 10; i++) {
Date d = new Date();
String s = new String("ssssss");
}
-------------------------
这4行代码里重复名字的变量吗?
第一行里有3个i,如果这也算是重复名字的话,……………………
superslash
2005-10-13
打赏
举报
回复
for(int i = 0; i < 10; i++) {
Date d = new Date();
String s = new String("ssssss");
}
这样的重复名字可以存在呢?
============================
哪有重复啊?
bixuehui
2005-10-13
打赏
举报
回复
可以,因为每循环一次就重新给s分配了一个地址。
believefym
2005-10-13
打赏
举报
回复
一个for循环结束,作用域消失,接着进入下一个循环的作用域
[面试/笔试系列3]
局部变量
能否和全局变量
重名
1、
局部变量
能否和全局变量
重名
? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;
局部变量
可以与全局变量同名, 在函数内引用这个变量时,会用到同名的
局部变量
,而不会用到全局变量。对于有些编译器 而言,在同一个函数内可以定义多个同名的
局部变量
,比如在两个循环体内都定义一个同名 的
局部变量
,而那个
局部变量
的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern 关键字,如果用引用头文件方式 来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错, 如果你用extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连 接期间报错。
C语言面试题大汇总之华为面试题:1、
局部变量
能否和全局变量
重名
;2、如何引用一个已经定义过的全局变量;3、全局变量可不可以定义在可被多个.C文件包含的头文件中 为什么;4、语句for( ;1 ;)有什么
问题
它是什么意思……
C语言面试题大汇总之华为面试题:1、
局部变量
能否和全局变量
重名
;2、如何引用一个已经定义过的全局变量;3、全局变量可不可以定义在可被多个.C文件包含的头文件中 为什么;4、语句for( ;1 ;)有什么
问题
它是什么意思……
java面向对象上篇
Java是面向对象的程序设计语言,提供了定义类,成员变量,方法等基本功能,同时java也支持面向对象的三大特征:封装,继承和多态。java面向对象课程主要讲解java面向对象的基础内容. • 定义类的语法格式• 对象的创建和使用• 方法详解• 成员变量和
局部变量
• 隐藏与封装• 深入理解构造器• 继承与多态• 继承与组合• 初始化块
C c++ 语言 面试题 大汇 总 之 华为 面试题 笔试题
1、
局部变量
能否和全局变量
重名
? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::"
局部变量
可以与全局变量同名,在函数内引用这个变量时,会用到同名的
局部变量
,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的
局部变量
,比如在两个循环体内都定义一个同名的
局部变量
,而那个
局部变量
的作用域就在那个循环体内。
C语言面试题大汇总之华为面试题及答案
1、
局部变量
能否和全局变量
重名
? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::"
局部变量
可以与全局变量同名,在函数内引用这个变量时,会用到同名的
局部变量
,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的
局部变量
,比如在两个循环体内都定义一个同名的
局部变量
,而那个
局部变量
的作用域就在那个循环体内。
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章