1. Call by value passes the value of an argument into the parameter of a subroutine, so changes to the parameter have no effect on the argument. Call by reference passes the reference to an object, so changes to the object inside the method do affect the original argument. 2. Variable length arguments allow a method parameter list to be variable in length, specified with three periods (...). The variable arguments are stored in an array that can be accessed inside the method. 3. Static blocks are executed when the class is loaded, before any other code. Static methods can be called without creating an object and are used to group logically related operations.