CodeMartain 2022-05-02 16:48 采纳率: 76.3%
浏览 11
已结题

java作用域中在套一个作用域,属性重名就不行,为什么C语言就可以?

有一个问题,像不太明白,
java作用域中再套一个作用域,属性重名就不行,为什么C语言就可以?

    {
        System.out.println("xx00");
        String str="hello";
        {
            String str="hello";
            System.out.println("00xx");
        }
    }
   

什么原理?有知道的吗?

  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-05-02 17:07
    关注

    作用域在Java方法中是不能嵌套的。
    在Java中,方法内的一个变量的作用域(包括方法参数)是从它定义的地方开始,直到它所在的作用域的结束位置。
    比如,在方法开始定义了变量i,那么直到方法结束都不能再定义另一个i了。再比如在一个for语句中定义了变量i,那么在这个for循环内不能再有同名变量,但出了for循环之后,是可以再次定义的。这就是作用域不能嵌套的意思。
    在c/c++中,作用域可以嵌套,比如:
    int i;
    {
    int i;
    {
    ......可以无限制地嵌套下去,这里每对大括号之间就是一个独立的作用域
    }
    }

    再深入一点,在Java中,类与方法之间作用域是可以嵌套的,把类看做一个大的作用域,它定义的字段(或叫域)可以被方法中的同名字段所屏蔽,其行为类似于上面将的c/c++的作用域嵌套。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月20日
  • 已采纳回答 6月12日
  • 创建了问题 5月2日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度