首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java基础: Object和if子句

Java基础: Object和if子句
EN

Stack Overflow用户
提问于 2012-03-10 22:17:57
回答 4查看 140关注 0票数 0

我对一个对象有一个非常基本的问题。

我在main方法的if()语句中创建对象。(还有一个,所以它总是会被创建。)

该对象有一个print()方法,它工作得很好,但是当我将myobject.print()放在if()子句之外时,我得到了一个错误:“找不到符号”。

我想我犯了一个愚蠢的初学者错误,但是if()子句中的myobject.print()可以很好地工作,所以我的问题是,我的对象发生了什么?( main方法在两者之间不做任何其他事情。)

代码语言:javascript
复制
  else default to 20, 10, and fill randomly 1/4
  {
    int a = 20;
    int b = 10;
    Table myTable = new Table(a,b);
    myTable.randomfill(Math.round((a*b)/4)); //round in case defaults change later
    System.out.println("Printing Table .... ");
    myTable.print();  <-- here it works
  }

  //always print !!
  System.out.println("Printing Table .... ");
  myTable.print(); <-- won't work
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-10 22:19:12

myTable的作用域仅限于else块。它在else块完成后不可见。如果你想在else块之外访问它,你可以在else块外定义myTable,并在else块内给它分配对象。

代码语言:javascript
复制
Table myTable =null;
else default to 20, 10, and fill randomly 1/4 
  { 
    int a = 20; 
    int b = 10; 
    myTable = new Table(a,b); 
    myTable.randomfill(Math.round((a*b)/4)); //round in case defaults change later 
    System.out.println("Printing Table .... "); 
    myTable.print();  <-- here it works 
  } 

  //always print !! 
  System.out.println("Printing Table .... "); 
if(myTable != null){  //Make sure myTable is not null.
  myTable.print(); <-- won't work 
}
票数 1
EN

Stack Overflow用户

发布于 2012-03-10 22:23:03

其他人说的话。如果您有以下条件:

代码语言:javascript
复制
if (x == y) {
    MyObject obj = new MyObject();
}

那么,一旦您离开if{},就不会定义obj

要使对象可以在“外部”访问,您需要执行以下操作:

代码语言:javascript
复制
MyObject obj = null;
if (x == y) {
    obj = new MyObject();
}

(请注意,不要在{}中“声明”obj --省略了前导MyObject。)

票数 2
EN

Stack Overflow用户

发布于 2012-03-10 22:23:20

像myTable这样的局部变量在声明它的代码块中有作用域(仅可见)。这段代码是最里面的一组花括号,所以myTable只能用到else块的末尾。

如果您希望它在else块之后可见,则需要在if之前删除它。类似于:

代码语言:javascript
复制
Table myTable = new Table(a,b);
if (some condition) {
    // code removed
} else default to 20, 10, and fill randomly 1/4 {
    // code removed
}
// myTable now visible here and until the end of this block
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9647134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档