String과 StringBuffer의 차이??
들찬길
안녕하세요~
항상 사이트에서 도움을 많이 받고 있는 웹개발자 입니다..java 통신 모듈을 개발하다 궁금증이 생겨 질문을 남깁니다.buffedinputstream 으로 파일을 읽어와 원하는 길이만큼 잘라서 db에 넣는데요string str = new string((byte[] bytes, int offset, int length); 로 str에 담아서str.substring(0,8); //일자(8)
str.substring(8,14);//시간(6)이런식으로 substring을 이용해 문자를 자릅니다.
찾아보니 new string으로 쓰면 상당한 메모리 낭비가 있다고 하는데요..stringbuffer를 사용하면 좀더 낭비가 적어진다고 하는데어떻게 사용해야 할지 잘 모르겠습니다.stringbuffer strbuf = new stringbuffer(str);
strbuestrbuf.substring(0,8); 이렇게 써주는 것이 맞는 방법일까요??그리고 substring 말고 다른 방법은 없을까요??일일히 글 길이만큼 자를 때 중간에 추가가 되면 다시 고쳐야 하는 번거로움이 있습니다..
도와주세요 ㅠ-ㅠ.. 부탁드립니다 ~
-
조은
돌려보고 좋은걸로 선택하시는게 정답...ㅋㅋㅋ
-
황예
제 소스의 경우 while문 안에
while ((len = bis.read(buf, 0, buf.length)) != -1) {
String str = new String((byte[] bytes, int offset, int length);
str.substring(0,8); //일자(8)
str.substring(8,14);//시간(6)
}
이런식으로 소스가 있습니다.
while문이 한번 돌 때 마다 string의 변수값은 변화가 생기겠군요... -
뭘봐요
String과 StringBuffer의 차이점 때문 이신듯 한데요.
String이 메모리의 낭비가 생긴다. 이것이 어떤 의미 인지 아셔야 할것 같아서요.
String은 메모리 낭비가 생기다. --꼭 그렇지 않씁니다.
어떨때 낭비가 생기죠. 어떨때냐면.........
String 변수의 값을 변화 시킬때 낭비가 생깁니다.
예를 들어 \가나다\를 \가나다라\로 바꾸면 메모리에 \가나다\와 \가나다라\ 동시에 만들어지고 사용은 \가나다라\만 쓰게 되는것이죠