Java: изменение переменных без аргументов - PullRequest
0 голосов
/ 01 сентября 2011

Я только начинаю изучать Java, и я очень разочарован изучением правил области видимости Java. Вы видите, что я хочу создать метод без использования аргументов / параметров.

В JavaScript я могу легко сделать это, используя функции:

/** Function to increase 2 vars.
/** **/
function modifyNow(){
 a++;
 b++;
} // END

var a = 5;
var b = 10;

modifyNow();
// By this part, a and b would be 6 and 11, respectively.

Теперь это экономит мне много времени и просто, поскольку при каждом вызове функции var a и b уже существуют.

Итак, есть ли способ сделать это в Java без аргументов вроде того, как я это делаю в JavaScript? Или есть другой путь?

Спасибо, благодарю за помощь ... ^^

Ответы [ 6 ]

3 голосов
/ 01 сентября 2011

В чем проблема с a и b как закрытыми переменными в вашем классе и увеличением их на modifyNow ()?И, между прочим, все в Java должно быть в классе .Вы не можете иметь глобальный код, искажающий ...

2 голосов
/ 01 сентября 2011

Вы можете сделать это для полей класса, а не для локальных переменных.

class Clazz {

    int a = 5;
    int b = 10;

    public void modifyNow() {
        a++;
        b++;
    }
}

// ...

Clazz c = new Clazz();
c.modifyNow();

Теперь после каждого вызова modifyNow поля обновляются.

1 голос
/ 01 сентября 2011
class Foo {

  int a = 5;
  int b = 10;

  public void modifyNow(){
    a++;
    b++;
  }

}
1 голос
/ 01 сентября 2011

Вы видите, я хочу создать метод без использования аргументы / параметры.

Лучший ответ: не надо!

Если вы все же хотите этого, поищите общедоступные статические переменные.

1 голос
/ 01 сентября 2011

Глобальные переменные плохие.Не зная вашего намерения, я бы сказал, что вам нужно добавить переменные в качестве членов вашего класса.Они доступны тогда из любой функции-члена.

0 голосов
/ 01 сентября 2011

Вам нужно использовать так называемые member переменные, они привязаны к instance вашего класса.

public class MyClass
{ 

  // these are Class variables, they are tied to the Class
  // and shared by all instances of the class.
  // They are referenced like MyClass.X
  // By convention all static variables are all UPPER_CASE
  private static int X;
  private static int Y

  // these are instance variables that are tied to 
  // instances of the class
  private int a;
  private int b;

  /** this the default no arg constructor */
  public MyClass() { this.a = 5; this.b = 10; }

  /** this is a Constructor that lets you set the starting values
      for each instance */
  public MyClass(final int a, final int b) { this.a = a; this.b = b; }

  public modifyNow() { this.a++; this.b++; }

  /** this is an accessor to retrieve the value of a */
  public int getA() { return this.a; }

  public int getB() { return this.b; }
 }

 final MyClass myInstanceA = new MyClass();
 myInstance.modifyNow();
 // a = 6, b = 11

 final MyClass myInstanceB = new MyClass(1, 2);
 myInstance.modifyNow();
 // a = 2, b = 3

Каждый раз, когда вы делаете new MyClass(), вы получаете новую независимую instance из MyClass, который отличается от всех других instance.

Поскольку вы изучаете, JavaScript никоим образом не связан с Java.Это ужасная пародия на то, что они выбрали это имя по маркетинговым причинам.

...