我是Java的新手。我做了一个示例程序,找到一个矩形区域。代码如下。
package rectangle;
public class Rectangle {
int length, width;
int rectArea() {
int area = length * width;
return (area);
}
}
class RectArea {
public static void main(String[] args) {
int area1;
Rectangle rect1 = new Rectangle();
rect.length = 14;
rect.width = 13;
area1 = rect.rectArea();
System.out.println("Area1=" + area1);
}
}
在上面的代码中,length
和width
是在类Rectangle
中声明的变量。现在area
也是一个包含数据length * width
的变量,此area
变量也在类Rectangle
中声明
我们可以使用点运算符从另一个名为length
的类中访问width
和RectArea
个变量。但是为什么我们不能直接从area
类(使用点运算符)访问Rectangle
类中声明的RectArea
变量以评估Rectangle
的值?
也就是说,为什么我们无法使用以下代码来评估rect1
类中新创建的对象RectArea
的值。
area1 = rect1.area;
System.out.println("Area1="+ area1);
或者为什么我们无法使用上述代码访问area
类Rectangle
类中声明的RectArea
变量?
答案 0 :(得分:2)
区域不是类级别变量。它是rectArea方法中的局部变量,因此,它在方法外部不可见,并且不能通过点运算符访问,如类变量
答案 1 :(得分:1)
区域不是类变量,它是内部方法,您无法访问方法变量,因为它们是本地的,仅对方法可见。
答案 2 :(得分:1)
有局部变量和实例(类)变量。类变量类似于长度和宽度,它们可以在整个类中使用。
但是对于局部变量,它们只能在您声明它们的方法/代码块中使用。在这种情况下,区域在方法中声明,并且仅在方法中可用。
一旦代码跳出方法(返回)区域就不再存在。
我修复了下面的代码,以便它可以正常工作:
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "test.test",
"indexFilterSet" : false,
"parsedQuery" : {
"document_type_id" : {
"$in" : [
"3",
"7"
]
}
},
"winningPlan" : {
"stage" : "COUNT",
"inputStage" : {
"stage" : "COLLSCAN",
"filter" : {
"document_type_id" : {
"$in" : [
"3",
"7"
]
}
},
"direction" : "forward"
}
},
"rejectedPlans" : [ ]
},
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 0,
"executionTimeMillis" : 681,
"totalKeysExamined" : 0,
"totalDocsExamined" : 2000100,
"executionStages" : {
"stage" : "COUNT",
"nReturned" : 0,
"executionTimeMillisEstimate" : 630,
"works" : 2000102,
"advanced" : 0,
"needTime" : 2000101,
"needFetch" : 0,
"saveState" : 15625,
"restoreState" : 15625,
"isEOF" : 1,
"invalidates" : 0,
"nCounted" : 400020,
"nSkipped" : 0,
"inputStage" : {
"stage" : "COLLSCAN",
"filter" : {
"document_type_id" : {
"$in" : [
"3",
"7"
]
}
},
"nReturned" : 400020,
"executionTimeMillisEstimate" : 600,
"works" : 2000101,
"advanced" : 400020,
"needTime" : 1600081,
"needFetch" : 0,
"saveState" : 15625,
"restoreState" : 15625,
"isEOF" : 1,
"invalidates" : 0,
"direction" : "forward",
"docsExamined" : 2000100
}
}
},
"serverInfo" : {
"host" : "ptpll354",
"port" : 5000,
"version" : "3.0.7",
"gitVersion" : "6ce7cbe8c6b899552dadd907604559806aa2e9bd"
},
"ok" : 1
}
答案 3 :(得分:0)
area 是方法 rectArea 的局部变量。除了相同的方法之外,它不能在课外或课堂内访问。
如果您想在外面访问区域,为什么不尝试这样的事情:
public class Rectangle {
int length, width, area;
void getData(int x, int y) {
length = x;
width = y;
area = length * width;
}
}