2016-06-28 13 views
6

StringBuilder có giới hạn ký tự cho dung lượng tối đa trong JAVA hay không.Có bao nhiêu ký tự mà một chuỗi Java StringBuilder có thể giữ?

StringBuilder url=new StringBuilder(); 

stmt = connnection.createStatement(); 
String sql="SOME QUERY"; 
rs = stmt.executeQuery(sql); 
while(rs.next()) 
{ 
    String emailId=rs.getString("USER_EMAIL_ID"); 
    url.append(emailId); 
} 

hiện StringBuilder biến 'url' có công suất tối đa hoặc có thể chứa mọi thứ?

Trả lời

7

Có, nó có giới hạn về dung lượng của số nguyên tối đa 2147483647 (về mặt kỹ thuật).

StringBuilder nội bộ giữ các bộ chuốt trong đối tượng char[] và mảng có giới hạn về kích thước. read more about it on other thread

+2

và điều gì sẽ xảy ra nếu vượt quá giới hạn tối đa? –

0

Nếu bạn đi qua với liên kết này này có thể xóa bạn nhiều Oracle Docs String Builder Buffer Capacity

Bây giờ bạn muốn khai báo năng lực của bất kỳ lớp StringBuilder, sau đó một Constructor StringBuilder(int initCapacity) được định nghĩa cho việc này.

StringBuilder(int initCapacity) :- Creates an empty string builder with the specified initial capacity.

đây vì tham số như int công suất tối đa mà một Class StringBuilder có thể được đạt sẽ 2147483647.

có nhiều phương pháp khác nhau về ngữ cảnh Công suất này ở StringBuilder Lớp học, các phương pháp đó cũng xem xét các thông số loại int.

void setLength(int newLength) :- Sets the length of the character sequence. If newLength is less than length(), the last characters in the character sequence are truncated. If newLength is greater than length(), null characters are added at the end of the character sequence.

void ensureCapacity(int minCapacity) :- Ensures that the capacity is at least equal to the specified minimum.

các phương pháp này cũng lấy đối số là loại int. Vì vậy, Sử dụng các phương pháp hoặc contructors này, bạn sẽ có thể tạo ra một đối tượng với công suất tối đa là 2147483647.

+4

Không có phương pháp nào bạn hiển thị, có bất cứ điều gì để làm khả năng * tối đa *, đó là những gì câu hỏi là về. Liên kết bạn cung cấp cũng không nói gì về công suất tối đa. Đối với câu cuối cùng của bạn, chỉ vì tham số là 'int', không có nghĩa là bạn sẽ không gặp lỗi nếu bạn đưa ra giá trị nguyên lớn nhất có thể, và' StringBuilder mới (Integer.MAX_VALUE) 'sẽ nhận' OutOfMemoryError: Kích thước mảng được yêu cầu vượt quá giới hạn VM' bất kể bạn đã gán bao nhiêu bộ nhớ cho máy ảo. Tóm lại, không một phần nào của câu trả lời này có liên quan và chính xác cho câu hỏi. – Andreas

+0

@Andreas yes Bạn nói đúng. Nếu không đủ bộ nhớ thì nó sẽ làm tăng lỗi JVM 'OutOfMemory'. Tôi đã không đề cập đến lỗi. Cảm ơn –

+0

Ngay cả khi đủ bộ nhớ * có sẵn, không có nghĩa là 'new char [Integer.MAX_VALUE]' sẽ hoạt động. Kích thước tối đa của một mảng có thể bị hạn chế bởi các ràng buộc khác, phụ thuộc nền tảng. – Andreas

Các vấn đề liên quan