メソッドの中で引数の中身を変える

ある関数に引数で何かを渡して、その中で引数の中身を変えたい場合、Cだったらポインタで渡す。逆に言えば、引数の型がポインタだったら、その関数の中で引数の中が変わるかも、という予想がつく。だけど、Javaの場合は基本型以外はすべてポインタ(らしきもの)で渡すので、単純に値を渡したいだけなのか、その中で何か変更されるのかが分かりづらい。そういう作り方自体に問題があるのか?
……と書いて気付いた。そういえばRubyだと破壊的なメソッドと非破壊的なメソッドは名前を変えましょうみたいなルールがあった。そういうことだったのか? 今更気付いた。Javaにはそういう区別はあるのか?
ちょっと検索しただけではRubyほど明確には扱われていないみたい?
ここに書いたことと直接関係しているわけではないけど、興味のあるページがあった。
IBM Developer 日本語版 : 大変申し訳ありません。このページは無効です。
そもそも代入自体が破壊なのか。確かにそういえばそうだ。
破壊のない言語と言うのは、全ての変数(そもそも変数なのか?)に名前をつけてしまうということか?
最近Haskellという名前は良く聞くけど、こういう流れで注目されてるのかなあ?