The value being passed is a copy of the reference.
Within main, the original reference is assigned to the local variable pbv. Within callme, a copy of that reference (i.e., a value) is assigned to the local variable ppbv. However, both of these point to the same object. So either reference can be used to change the object's state, and this change will be "visible" through the other reference.
On the other hand, if you reassigned ppbv to point to a different object...
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org
Hello,Rex Isaacs: Acturally,when you get "PassbyValue pbv = new PassbyValue(100,200);" that create an object and initialize the two variable and set Price=100 and Value=200;but when get "callme()" the reference is the "object",following