重提一下这怪事,不知道大家有没有留意过,

问题描述

一个类,其中行号为了方便说明加上去了classAnima{1privatestringname="";2publicAnima(stringname)3{4this.name=name;5}}实例化一个类:Animaan=newAnima("a")//按F9请在这里下断点按F5运行,按F11,程序运行到第1句:这时privatestringname="a"(正常情况应该是name=null,字段在没有赋值时默认为null);按F11程序运行到第2句:这时privatestringname="a"(正常情况应该是name="");按F11->第3句按F11->第4句,给这privatestringname赋值为a(正常情况name="a");最后为了印证一下在字段与构造方法中参数名称不一致时的情况是否会发生上面的问题,修改了一下再调试观察,不再出现上面的问题,请大家说说看是什么原因classAnima{1privatestringname="";2publicAnima(stringName)3{4this.name=Name;5}}

解决方案

解决方案二:
你说的顺序,不对。。
解决方案三:
引用1楼c863123的回复:

你说的顺序,不对。。

你测试一下嘛,看看就知道了啦,我是VS2008
解决方案四:
在执行newAnima("a")这句时,首先查找是否有相应的构造函数。发现有,把"a"赋值给name,所以第一行name="a".在进入构造函数时,发现name与this.name不同,就把""赋值给this.name.完毕执行赋值。
解决方案五:
不要太相信你看到的了这个估计是08智能感知的BUG他感知到的是name而不是this.name也就是在构造里只要感知到name显示的就是a其实没有错误而是显示错了你分别追踪下name与this.name就知道了
解决方案六:
引用3楼tysyjsj的回复:

在执行newAnima("a")这句时,首先查找是否有相应的构造函数。发现有,把"a"赋值给name,所以第一行name="a".在进入构造函数时,发现name与this.name不同,就把""赋值给this.name.完毕执行赋值。

不,我在调试研究观察中,如果字段有赋值行为时,是先检测有赋值行为字段,再进入构造函数,在字段没有赋值行为时,才是直接进行构造函数最后我根据多种代码修改测试调试后,得出,一个类初始化时应该是先进行字段检测与赋值再进入构造函数(因为当字段有赋值行为时,当调试为逐行时会先到这里)
解决方案七:
第1句:正常情况应该是name=null
解决方案八:
引用4楼cancerser的回复:

不要太相信你看到的了这个估计是08智能感知的BUG他感知到的是name而不是this.name也就是在构造里只要感知到name显示的就是a其实没有错误而是显示错了你分别追踪下name与this.name就知道了

在监视窗口也看了一下,name="a"这个问题一样存在;看样子,感觉调试器在处理这方面的问题时,有可能是如果在字段与构造函数中如果有同名的(调试器分不清究竟是那个变量,好象是对作用域没有分清一样),在调试器中处理为相同的值,不知这可不可以算做是一个小小的BUG
解决方案九:
name的确是=a啊你要清楚的是你要看的是两个变量name与this.name他们可是不同的东西
解决方案十:
引用8楼cancerser的回复:

name的确是=a啊你要清楚的是你要看的是两个变量name与this.name他们可是不同的东西

是的,我说的是privatestringname中name的值在调试器中的情况,也是我今天无意中发现的,我用的是vs2008,我也做了几个实验,实验内容就是把字段名与构造函数的参数名称写成同名,再调试器中用智能感知或监视窗口中观察出现这样的有趣的问题,这可能是一个小BUG吧privatestringname;privateintage=29;publicAnima(stringname,stringage){}
解决方案十一:
哇,又开一帖,看来楼主不死心。1.string是一个引用类型2.你也发现如果参数是用Name的话一切符合逻辑3.由于字段name与参数name所指地址相同,你看到的其实是参数name的值,你可以这样试一下:publicclassAnima{stringname="";publicAmina(stringname){this.name="b";}}

断点来stringname="";时,看到name是等于"a"的。

时间: 2024-10-26 19:59:40

重提一下这怪事,不知道大家有没有留意过,的相关文章

Java中对HashMap的深度分析

在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问题.找遍了大大小小的论坛,也把<Java 虚拟机规范>,<apress,.java.collections.(2001),.bm.ocr.6.0.shareconnector>,和<Thinking in Java>翻了也找不到很好的答案,于是一气之下把JDK的 src 解压出来研究,扩然开朗,遂写此文,跟大家分享感

最新更新做高权重外链方法大全

这两年百度对于个人网站和企业网站关注的比较多,各种调整SEO方式的算法也比较多,但在绿萝算法与原创星火计划之后,其他的一些小规模的调整,整体来说对网站的影响不大.经过了几个月的调整与摸索,小编终于摸索出了一套能够适应现在网站优化的方法来,可能不是最好的,但具有一定的参考价值. 一.站长平台的作用越来越弱 站长平台是每个SEOer成长的必经之地,也是每个SEOer与站长永远都不会放弃的地方.但小编发现,站长平台的作用已经变得越来越弱.虽然现在在站长平台投稿还能获得比较高权重的外链,但这权重已经不再

Java中对HashMap的深度分析与比较

比较 在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问题.找遍了大大小小的论坛,也把<Java 虚拟机规范>,<apress,.java.collections.(2001),.bm.ocr.6.0.shareconnector>,和<Thinking in Java>翻了也找不到很好的答案,于是一气之下把JDK的 src 解压出来研究,扩然开朗,遂写此文,跟大家

Windows各系列启动速度差异的奥秘

Windows各系列启动速度差异的奥秘 作者:计算机基础教程网    来源:www.itwen.com    更新时间:2006-02-09 [ 收藏此页到: 天天 | 和讯 | 博采 | ViVi | 狐摘 | 我摘 ]   不知道大家有没有留意,最近两年Windows的版本,启动进入图形界面的所需时间有加长的趋势,这纯粹是系统没优化好吗?其实Windows从诞生的那天开始,其核心和任务的侧重点经历了三次变化,加上它们对储存设备利用的不同,导致了Windows各个系列启动速度的差异.我们就来看

小谈谷歌PK百度的用户体验

做seoer的童鞋们,接触和研究最多的搜索引擎恐怕就是百度和谷歌了.作为搜索引擎界的两大巨头.一个是外来"强人",一个是本土"一哥".时刻影响着网络的动向和网民的生活.虽然最后以避退的方式离开了大陆.但是它留给我们不仅仅是背影,还有很多. 1.我喜欢的谷歌预览功能. 大家有没有因为恶意的网页木马扰乱过我们那纯洁的桌面.有没有因为急于寻找资料点的手指疼. 预览功能 恰到好处的为我们避免了很多麻烦, 信阳seo在谷歌中的预览体验 信阳seo在百度中的搜索结果 我一直觉得

华硕飞行堡垒FX60VM全面评测

  作为PC行业的老兵,华硕对于市场的把握向来准确,似乎有一种天生的敏锐嗅觉.除了名声在外定位于高端市场的ROG玩家国度,华硕旗下的飞行堡垒系列无疑更接地气一些,这从几大电商游戏本的销量排行榜就能看出,三甲中必占一席.要说最近卖得最好的,非FX60VM莫属,因为GTX 1060独显的诱惑实在太大,以至于很多玩家还没拿到年终奖,就已经把这笔钱预支了出去.当然,有图有字才有真相,是不是真的强,测完我们再来下结论. 外观: 重新开模 走稳重路线 身处当今看脸的时代,游戏本给人留下的第一印象非常重要.华

Windows各系列启动速度差异

  一.针对不同的Windows进行优化加快启动速度 1.基于DOS架构的Windows9X的优化: 前文已经探讨了Windows9X的启动关键,就是对基本内存的合理配置运用.这要求加载HIMEM.SYS和SMARTDRV.EXE,在 CONFIG.SYS里对DOS的缓冲区BUFFERS和高端内存都进行优化设置.这些技巧在以前的很多经验文章里都介绍过,所以不再重复了.要注意的是,Windows9X图形界面下,可以不加载声卡.光驱的MS-DOS的驱动程序,以免兼容模式导致系统性能降低.今天大概没多

WWDC 2013 Session笔记 - iOS7中的ViewController切换

这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览.本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作.如果您觉得本站对您能有帮助,您可以使用RSS或邮件方式订阅本站,这样您将能在第一时间获取本站信息. 本文涉及到的WWDC2013 Session有 Session 201 Building User Interfaces for iOS 7 Session 218 Custom Transitions Using View C

营销手法——浅谈“捆绑销售”

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近上映了一部名叫"无人区"的电影不知道大家有没有去看,之所以想写这篇文章的原因是这部电影里面的一句台词给了我启发--"捆绑销售"相信做营销这行的对这个词都不陌生,甚至很 熟悉这种营销手法,小编不敢说非常熟悉这样的营销手法,简单的来聊聊它还是可以的; 什么是捆绑销售? 捆绑销售是共生营销的一种形式,是指