为啥 Java 不允许在循环中使用访问修饰符?

Posted

技术标签:

【中文标题】为啥 Java 不允许在循环中使用访问修饰符?【英文标题】:Why Java will not allow to use access modifiers in loops?为什么 Java 不允许在循环中使用访问修饰符? 【发布时间】:2018-09-29 12:27:28 【问题描述】:
for(public int i=0;i<10;i++) 

        System.out.println(i);

        
for(private int i=0;i<10;i++) 

        System.out.println(i);

    

Eclipse 说只允许 final。

【问题讨论】:

因为局部变量永远不能在它们声明的范围之外被访问。 您希望在循环中声明的公共变量的语义是什么? 我问过那个问我这个问题的人同样的问题,但他说你找到了。他还问我哪个是局部变量的默认修饰符 那你不是很有才华的公司,是吗? 这个问题是在我的工作面试中提出的:P 【参考方案1】:

首先我们需要知道访问修饰符的需要是什么。 访问修饰符限制对另一个类中的类、构造函数、数据成员和方法的访问。

但是当我们在循环中声明一个变量或任何东西时,它们的范围/使用仅限于该循环。 这意味着我们只能在该循环内使用这些变量。我们不能在该循环之外使用这些变量。 (SUN写java的人有限制)。

所以如果我们不在循环外使用循环变量,那么在循环内需要使用访问修饰符吗?这就是为什么java不允许它。

【讨论】:

以上是关于为啥 Java 不允许在循环中使用访问修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Java 反射 API 允许我们访问私有和受保护的字段和方法?这不会破坏访问修饰符的目的吗? [复制]

为啥Java限制隐藏方法的访问修饰符[关闭]

Java访问修饰符优先级[关闭]

为啥我们不能在 Kotlin 的 Singleton 类(对象)中使用受保护的访问修饰符

java访问修饰符

C#:为啥我必须在类的变量中使用公共访问修饰符?