Я пытался что-то с помощью Integer, и выход меня волновал.Java - pass by value
public class CountB
{
public static boolean returnBool(String w, Integer count)
{
for (int i = 0; i < w.length(); i++)
{
if (w.charAt(i) == 'B' || w.charAt(i) == 'b')
{
count++;
}
}
if (count > 0)
return true;
return false;
}
// write the static method “isThisB” here
public static void main(String[] args)
{
// Scanner keyboard = new Scanner(System.in);
// System.out.println("Enter a string: ");
String w = "fgsfbhggbB";//keyboard.nextLine();
Integer count = new Integer(0);
System.out.println(returnBool(w, count));
System.out.println("Number of B and b: " + count);
}
}
Теперь Integer
есть класс обертка int
и count
быть его объектом, когда я прохожу count
от основной до returnBool
, значение count
становится 3, поэтому она возвращает true
, поскольку Java является передача по значению count
значение объекта должно изменяться в main
метод также, но в main
count
отпечатки 0.
Я хочу понять, почему это происходит?
Java всегда [** передача по значению **] (http://stackoverflow.com/q/40480/2024761) (Период) – SudoRahul
'Integer 'объекты неизменяемы. Всякий раз, когда вы думаете, что можете изменить значение «Целое», то, что вы делаете, становится новым. –
Вы должны просто вернуть счет. Java не поддерживает pass by reference, никогда не имеет. Вы можете имитировать его, но он уродлив, и я предлагаю вам прочитать ответы, приведенные в последнем вопросе, который показывает вам, как вы должны это делать. –