W3bbo,
Your example is wrong. Take a look at this example (this time using primitives)
public class PassByQuestion
{
public static void increment(int x)
{
x++;
}
public static void main(String[] args)
{
int i = 42;
System.out.println(i);
increment(i);
System.out.println(i);
}
}
Both outputs are 42, because it is pass-by-value.
It is best demonstrated using C# (as it supports both pass-by-value and pass-by-reference).
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
public class PassByQuestion
{
public static void increment_byvalue(int x)
{
x++;
}
public static void increment_byref(ref int x)
{
x++;
}
public static void Main()
{
int i = 42;
Console.Out.WriteLine(i);
increment_byvalue(i);
Console.Out.WriteLine(i);
increment_byref(ref i);
Console.Out.WriteLine(i);
}
}
}