中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java.nio.Buffer源碼是什么

發布時間:2021-12-18 15:25:16 來源:億速云 閱讀:145 作者:iii 欄目:云計算

這篇文章主要介紹“java.nio.Buffer源碼是什么”,在日常操作中,相信很多人在java.nio.Buffer源碼是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java.nio.Buffer源碼是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

版本:JDK7

package java.nio;

public abstract class Buffer {

// mark <= position <= limit <= capacity
private int mark = -1;		// 標記,一個特定的position,通過mark()方法指定Buffer中的標記,之后可以通過reset()方法恢復到這個索引位置
private int position = 0;	// 下一個要讀取或寫入的數據的索引
private int limit;			// 界限,表示緩沖區中可操作數據的大小,索引等于和大于limit的數據不能進行讀寫。
private int capacity;		// 緩沖區的容量,創建后不能修改。

// Used only by direct buffers
// NOTE: hoisted here for speed in JNI GetDirectBufferAddress
long address;

// Creates a new buffer with the given mark, position, limit, and capacity,
Buffer(int mark, int pos, int lim, int cap) {
    if (cap < 0) throw new IllegalArgumentException("Negative capacity: " + cap);
    this.capacity = cap;
    limit(lim);
    position(pos);
    if (mark >= 0) {
        if (mark > pos)
            throw new IllegalArgumentException("mark > position: (" + mark + " > " + pos + ")");
        this.mark = mark;
    }
}

public final int capacity() {
    return capacity;
}

public final int position() {
    return position;
}

// 重新設置position的值
public final Buffer position(int newPosition) {
    if ((newPosition > limit) || (newPosition < 0)) throw new IllegalArgumentException();
    position = newPosition;
    if (mark > position) mark = -1;
    return this;
}

public final int limit() {
    return limit;
}

// 重新設置limit的值:如果新limit小于position,則將position設為新limit
public final Buffer limit(int newLimit) {
    if ((newLimit > capacity) || (newLimit < 0)) throw new IllegalArgumentException();
    limit = newLimit;
    if (position > limit) position = limit;
    if (mark > limit) mark = -1;
    return this;
}

// 設置標記
public final Buffer mark() {
    mark = position;
    return this;
}

// 將position的值設置為mark
public final Buffer reset() {
    int m = mark;
    if (m < 0)
        throw new InvalidMarkException();
    position = m;
    return this;
}

// 清空緩沖區:Buffer的屬性恢復到初始化狀態。注意:此時緩沖區中的數據仍然存在。
public final Buffer clear() {
    position = 0;
    limit = capacity;
    mark = -1;
    return this;
}

// 將limit設為當前的position,之后將position重置為0
public final Buffer flip() {
    limit = position;
    position = 0;
    mark = -1;
    return this;
}

// 將position設為0,并取消設置的標記:即重新讀Buffer
public final Buffer rewind() {
    position = 0;
    mark = -1;
    return this;
}

// 返回剩余的可用空間
public final int remaining() {
    return limit - position;
}

// 判斷緩沖區中是否還有元素
public final boolean hasRemaining() {
    return position < limit;
}


public abstract boolean isReadOnly();

public abstract boolean hasArray();

public abstract Object array();

public abstract int arrayOffset();

public abstract boolean isDirect();

// -- Package-private methods for bounds checking, etc. --
// ...

}

到此,關于“java.nio.Buffer源碼是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉龙| 木兰县| 石楼县| 含山县| 遂川县| 平谷区| 宁蒗| 巴南区| 宿迁市| 深州市| 志丹县| 新邵县| 新郑市| 敦煌市| 安泽县| 柳江县| 临城县| 上栗县| 安陆市| 镇安县| 吉木乃县| 通河县| 九江县| 黎川县| 丹阳市| 新巴尔虎左旗| 政和县| 调兵山市| 苏州市| 同心县| 淳化县| 新邵县| 奎屯市| 临朐县| 团风县| 玉树县| 增城市| 通渭县| 宜都市| 曲水县| 保定市|