জাভাতে String আর StringBuffer এর মধ্যে পার্থক্য কি?

উদাহরণ সহকারে (কোডসহকারে) বুঝতে চাচ্ছি।

অগ্রিম ধন্যবাদ :)

asked 27 Jun '16, 16:38

_Shaon_'s gravatar image

_Shaon_
796218

edited 27 Jun '16, 16:39


String হল immutable । এর অর্থ হল এই অবজেক্ট তৈরি করার পর পরিবর্তন করা যায় না , ধরুন আপনি একটা অবজেক্ট বানালেন

 `String str1 = "hello";`

এখন আপনি যদি এটা পরিবর্তন করতে চান ,যেমন

  String str1 = "hello";
  str1 = str1 + " world!";

এখানে আসলে যেটা হয় সেটা হল নতুন একটি অবজেক্ট তৈরি হয় যার মান str1 + " world";পরে সেটা str1 এ কপি হয় অর্থাত ,

String str1 = "hello";
String str2 = str1 + " world!";

str1 = str2;

এখানে তাহলে মেমোরি বেশি ব্যবহার হচ্ছে , তাই স্ট্রিং কপি ও পরিবর্তনের জন্য এটা ভাল নয় । এখন আপনি যদি স্ট্রিং পরিবর্তন করতে চান তাহলে ২ টা অপশন আছে , একটা হল stringbuffer অন্যটা stringbuilder , যদি আপনার কোড এ একটাই থ্রেড থাকে তাহলে stringbuilder ব্যবহার করতে পারেন , না হলে stringbuffer .কারণ stringbuilder non-synchronized অর্থাত থ্রেড ফ্রেন্ডলি না ।

 StringBuffer str = new StringBuffer ("Stanford ");
 str.append("Lost!!");

stringbuffer মেমরি অতিরিক্ত নেয় না আর এটা অনেক দ্রুত কাজ করে , stringbuffer অবজেক্ট মিউটেবল বা পরিবর্তন করা যায়

public class ConcatTest{  
    public static String concatWithString()    {  
        String t = "Java";  
        for (int i=0; i<10000; i++){  
            t = t + "Tpoint";  
        }  
        return t;  
    }  
    public static String concatWithStringBuffer(){  
        StringBuffer sb = new StringBuffer("Java");  
        for (int i=0; i<10000; i++){  
            sb.append("Tpoint");  
        }  
        return sb.toString();  
    }  
    public static void main(String[] args){  
        long startTime = System.currentTimeMillis();  
        concatWithString();  
        System.out.println("Time taken by Concating with String: "+(System.currentTimeMillis()-startTime)+"ms");  
        startTime = System.currentTimeMillis();  
        concatWithStringBuffer();  
        System.out.println("Time taken by Concating with  StringBuffer: "+(System.currentTimeMillis()-startTime)+"ms");  
    }  
}

আউটপুট

 Time taken by Concating with String: 578ms
 Time taken by Concating with  StringBuffer: 0ms
permanent link

answered 28 Jun '16, 07:30

maria1248's gravatar image

maria1248
3454

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×210
×56
×2

question asked: 27 Jun '16, 16:38

question was seen: 606 times

last updated: 28 Jun '16, 07:30