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日

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据