0

unread()メソッドについて理解するためにPushbackInputStreamのソースコードを読んでいます:http : //javasourcecode.org/html/open-source/jdk/jdk-6u23/java/io/PushbackInputStream.java.html 194:buf [-pos] =(byte)bは、それが何を言っているのか理解できません。その行の--posの意味を誰かに教えてもらえますか?前もって感謝します。

追伸:私もこれをコーディングしようとします:

class Test2 {
public static void main(String[] args) {
    char[] c = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
            'i', 'n', 'a', 't', 'e', 'd' };
    char temp = 'o';
    c[--1] = tmp;
 }
}

しかし、Eclipseは私に教えてくれます:無効な引数操作

4

5 に答える 5

1

--pos「の値を1つ減らし、結果の値を使用する」という意味posです。

これは定数には適用できません:--1無効です。0ただし、代わりに書くこともできます。

于 2013-03-18T06:56:18.027 に答える
0

--はデクリメント演算子であり、定数ではないフィールド(変数)に対してのみ意味があります。

buf[--pos] = (byte)b;バイト値bをに設定しbuf[pos - 1]pos結果としてデクリメントされることを意味します。

于 2013-03-18T06:57:57.957 に答える
0

1定数です。定数をデクリメントすることはできません-またはその値を変更することはできません-

ただし、これを行うことはできますpos = 1;。は変数であり、定数ではないbuf[--pos]ため、必要な処理を実行します。pos

または、buf[0]

于 2013-03-18T07:01:06.537 に答える
0

実際のコードでは、posはバッファへの現在のインデックスです。バイトの読み取りを解除するには、そのインデックスを1つデクリメントし、指定されたバイトをバッファ内の新しい現在のインデックス位置に格納する必要があります。

--posには、副作用としてposが1つ減少し、その結果、posの新しい値が減少しますbuf[--pos] = (byte)b;

副作用があるため、のオペランドは--1つデクリメントできるものでなければなりません。定数はできません。

于 2013-03-18T07:01:14.803 に答える
0

無効な引数操作エラーは、変数ではなく数値に対してデクリメント操作を行っているためです。

于 2013-03-18T07:04:09.467 に答える