我有非常非常基本的java问题: 对于下面的课程:
public class Hello {
public final static int a;
public final int a;
public int a;
int a;
static public void Method(){}
public void Method(){}
private void Method(){}
}
上面的声明和方法有什么区别?
答案 0 :(得分:2)
public final static int a;
这声明了一个静态的常量属性。这意味着它不依赖于Hello类的任何实例,并且可以在Hello类和内部访问。由于它是最终的,您将无法修改此值,它将始终是其默认值0。
public final int a;
与上面的类似,除了它与Hello的这个实例相关联。
public int a;
这是Hello实例的公共属性,可以在Hello类的内部和外部修改。这被认为是不好的做法。
int a;
此Hello实例的默认级别属性。只能在这个Hello实例中修改。
static public void Method() {}
Hello类中的静态(未绑定到实例)方法,可以在内部和外部访问。它无法访问以下内容:
public final int a;
public int a;
int a;
它无法访问这些,因为此方法与此实例无关,而所有这些值都是。
public void Method() {}
Hello类的公共方法。它可以在内部和外部访问。
private void Method() {}
与上述方法类似,但只能在内部访问。
答案 1 :(得分:1)
Corey Sunwold的回答非常明确。如果您还不知道,我只想补充几句话。如果final
用于对象引用,则意味着您无法将其更改为引用另一个对象,但对象本身仍然是可变的。例如
public final static List a = new ArrayList();
变量a
设置为引用ArrayList
的实例。您将无法将a
设置为另一个ArrayList
对象,但仍可以将元素添加到a
。
final
关键字并不意味着常量,并且不等同于C ++中的const
关键字。它确实意味着变量(原始),引用(对象),方法或类是最终的,不能进一步修改。
答案 2 :(得分:1)
public final static int a;
它不属于任何实例并且保持不变。
public final int a;
它是常量,不能在整个程序/应用程序中更改
public int a;
变量的正常声明,可以在任何时间通过应用程序/程序进行更改。
int a;
与public int a相同,默认情况下,未使用说明符声明的变量仍为public。所以,没有区别
static public void Method(){}
此方法不属于任何类的实例。
public void Method(){}
任何其他类都可以通过扩展来访问此方法,即在继承的帮助下。
private void Method(){}
此方法只能由其所属的类访问。因此在任何时候都不能被其他类访问。
有关访问说明符click here的更多信息 有关继承的更多信息click here
答案 3 :(得分:0)
让我们做你的作业:
public final static int a;
a
是公开的,因此可以从任何地方访问。这是最终的,所以它的价值在宣布后不能改变。它是静态的,因此它不属于Hello
- 类的实例,而属于类本身。
答案 4 :(得分:0)
public class Hello {
public final static int a;
public final int a;
public int a;
int a;
static public void Method(){}
public void Method(){}
private void Method(){}
}
上面的声明和方法有什么区别??
=>声明是前4行,因为您没有为其分配任何内容。如果使用 = (例如,int a = 3)进行分配,则将其作为赋值语句调用。
最后三行是方法。它们的格式为:
访问修饰符(例如public)返回类型(例如void)方法名称(ex.Method)参数(())body({})
声明与方法的区别在于:
- 声明:您声明具有您的名字的东西,但您尚未分配任何内容。
- 方法:一个函数,它执行正文中的代码。
答案 5 :(得分:0)
这里有两件事很棘手,第一:
public final static int a;
实际上这是静态变量的意思(不依赖于实例)然后是最终的,所以它的平均值应该在整个程序中保持不变,而且公众意味着它的内部和外部都是可访问的。
第二:
static public void Method() {}
与此方法相同,不与实例绑定,可在内部和外部访问