84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
StringBuffer str=new StringBuffer(); StringBuffer str1=new StringBuffer(3); System.out.println(str.capacity()); //16 System.out.println(str1.capacity()); //8为什么str1.capacity的结果是8?
认证高级PHP讲师
Anda mungkin telah membuat kesilapan, output sepatutnya:
16 3
Lihat kod sumber:
// minimumCapacity是当前已经存储的字符长度+要追加的字符长度 // value.length 是当前容量 // 所以新容量=max(2*旧容量+2,追加后的字符长度) void expandCapacity(int minimumCapacity) { int newCapacity = value.length * 2 + 2; if (newCapacity - minimumCapacity < 0) newCapacity = minimumCapacity; if (newCapacity < 0) { if (minimumCapacity < 0) // overflow throw new OutOfMemoryError(); newCapacity = Integer.MAX_VALUE; } value = Arrays.copyOf(value, newCapacity); }
Kapasiti hanya akan dikembangkan apabila menambah Semasa pemulaan, sebagai tambahan kepada lalai 16, ia boleh ditetapkan kepada sebarang nombor.
给你看JDK 1.8中的构造方法: StringBuffer的两个构造方法,继承自父类的构造方法AbstractStringBuilder: public StringBuffer() { super(16); } public StringBuffer(int capacity) { super(capacity); } AbstractStringBuilder的构造方法: AbstractStringBuilder(int capacity) { value = new char[capacity]; }
Jalankan di sini untuk melihat kompilasi dan pelaksanaan dalam talian Java: Persekitaran berjalan: java v1.7.0_80
Anda mungkin telah membuat kesilapan, output sepatutnya:
Lihat kod sumber:
Kapasiti hanya akan dikembangkan apabila menambah Semasa pemulaan, sebagai tambahan kepada lalai 16, ia boleh ditetapkan kepada sebarang nombor.
Jalankan di sini untuk melihat kompilasi dan pelaksanaan dalam talian Java: Persekitaran berjalan: java v1.7.0_80