2015-04-21 99 views
3

当看到实例变量的声明时,我看到了作为Java冲突约定的新手眼睛。例如,一个典型的银行账户实例变量可能看起来像这样,这非常合理。实例变量声明语法

private double balance = 0.0; 

访问修饰符,数据类型,变量名和值都是我(错误地)以为走进了一个实例变量。现在令人困惑的部分。

考虑导入的库/类/包,名为ColorImage。它显然有一个画布对象,但这里是实例变量声明的样子。

private Canvas canvas = new Canvas(); 
private ColorImage image1 = new ColorImage("file.gif"); 

现在看起来对象名称,和图书馆/包/类本身连名字,被用作数据类型。而且,实例变量已经加入了看起来像构造函数的东西。

我的问题: 为什么第二个语法看起来好像与第一个语句有很大的不同?

任何帮助,将不胜感激。

+1

什么问题?你不知道基元和对象之间的区别吗? – Kayaman

回答

5

为什么第二个语法看起来好像与第一个语句有很大的偏差?

它从第一个开始并没有偏离

Part      First example  Second example 
Access modifier    private    private 
Type      double    Canvas 
Name      balance    canvas 
Initialization expression 0.0     new Canvas() 

你在哪里看到差异?是的,这个类型可以是一个类,而不仅仅是一个原始类。是的,初始化表达式可以是任何表达式(不使用其他实例变量),而不仅仅是文字。这完全不会改变语法

注意访问修饰符是可选的(默认为“包访问”),还有其他潜在的调节剂(volatilefinalstatic)。但在您的示例中,应用的修改器集合完全相同。

+0

欣赏回应。不,我不知道我可以使用类作为数据类型,而不是原语。 –

+1

@NewGuy_IL:如果你不能使用类作为变量的数据类型,它们不会太用...... –

3

访问修饰符,数据类型,变量名和值都是我(错误地)以为走进变量

的情况下它实际上是相同的:

private ColorImage image1 = new ColorImage("file.gif"); 

私有 - 访问修饰符
ColorImage - da ta类型
image1 - 变量名称
new ColorImage(“file。GIF“) - 表达,创建一个新对象,并返回对象引用的值

Java数据类型可以是原始类型引用类型在您的例子,double是原始类型,和ColorImageCanvas都是引用类型

=的右侧,你可以有任何表情。

private double balance = 1.0 - 1.0; 

private double balance = zero(); 
static double zero() { 
    return 0.0; 
} 
+0

谢谢你这个非常清晰的解释。这帮了很多。 –

+0

@NewGuy_IL很高兴帮助! –