Both basic data types and Objects in java are pass by value. The difference is the value held by Objects in Java is their reference. So the answer is: Java is always pass by value.