私は整数で何かをしようとしていましたが、出力が私を驚かせています。
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 が出力されます。
なぜこれが起こっているのか理解したいですか?