{"id":178,"date":"2016-07-13T14:14:00","date_gmt":"2016-07-13T14:14:00","guid":{"rendered":"http:\/\/www.java2blog.com\/?p=178"},"modified":"2021-01-12T17:18:44","modified_gmt":"2021-01-12T11:48:44","slug":"difference-between-stringbuffer-and-stringbuilder-in-java","status":"publish","type":"post","link":"https:\/\/java2blog.com\/difference-between-stringbuffer-and-stringbuilder-in-java\/","title":{"rendered":"Difference between StringBuffer and StringBuilder in java"},"content":{"rendered":"<div id=\"toc_container\" class=\"toc_light_blue no_bullets\"><p class=\"toc_title\">Table of Contents<\/p><ul class=\"toc_list\"><li><a href=\"#StringBuffer_vs_StringBuilder\">StringBuffer vs StringBuilder<\/a><ul><li><a href=\"#Performance_comparison_between_StringBuffer_and_StringBuilder_in_single_thread_environment\">Performance comparison between StringBuffer and StringBuilder in single thread environment<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<div dir=\"ltr\" style=\"text-align: left;\">In this post, we will see difference between StringBuffer and StringBuilder in java<\/p>\n<h3 style=\"text-align: left;\"><span id=\"StringBuffer_vs_StringBuilder\">StringBuffer vs StringBuilder<\/span><\/h3>\n<table style=\"border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr style=\"height: 12.9pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;\">\n<th style=\"border: 1pt solid; height: 12.9pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\"><b><span lang=\"EN-US\">Parameter<\/span><\/b><\/div>\n<\/th>\n<th style=\"border: 1pt solid; height: 12.9pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\"><b>StringBuffer<\/b><\/div>\n<\/th>\n<th style=\"border: 1pt solid; height: 12.9pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\"><b>StringBuilder<\/b><\/div>\n<\/th>\n<\/tr>\n<tr style=\"height: 38.05pt; mso-yfti-irow: 1;\">\n<td style=\"border: 1pt solid; height: 38.05pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\"><span style=\"color: red;\">Thread-safe<\/span><\/div>\n<\/td>\n<td style=\"border-bottom-width: 1pt; border-color: initial; border-right-width: 1pt; border-style: none solid solid none; height: 38.05pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\">StringBuffer is thread safe. Two threads can not call methods of StringBuffer simultaneously.<\/div>\n<\/td>\n<td style=\"border-bottom-width: 1pt; border-color: initial; border-right-width: 1pt; border-style: none solid solid none; height: 38.05pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\">StringBuilder is not thread safe, so two threads can call methods of StringBuilder simultaneously.<\/div>\n<\/td>\n<\/tr>\n<tr style=\"height: 51.7pt; mso-yfti-irow: 2;\">\n<td style=\"border: 1pt solid; height: 51.7pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\"><span style=\"color: red;\">Performance<\/span><\/div>\n<\/td>\n<td style=\"border-bottom-width: 1pt; border-color: initial; border-right-width: 1pt; border-style: none solid solid none; height: 51.7pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">It is less performance efficient as it is thread-safe<\/td>\n<td style=\"border-bottom-width: 1pt; border-color: initial; border-right-width: 1pt; border-style: none solid solid none; height: 51.7pt; padding: 0cm 5.4pt; width: 159.1pt;\" valign=\"top\" width=\"212\">\n<div style=\"margin-bottom: 0.0001pt;\">It is more performance efficient as it is not thread-safe.<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4 style=\"text-align: left;\"><span id=\"Performance_comparison_between_StringBuffer_and_StringBuilder_in_single_thread_environment\">Performance comparison between StringBuffer and StringBuilder in single thread environment<\/span><\/h4>\n<pre name=\"code\">package org.arpit.java2blog;\n\npublic class StringBuilderAndBufferMainTest {\n\n public static void main(String[] args) {\n\n     long startTime = System.currentTimeMillis();  \n        StringBuffer sb = new StringBuffer(\"Java\");  \n        for (int i=0; i<100000; i++){  \n            sb.append(\"2Blog\");  \n        }  \n        System.out.println(\"Time taken by StringBuffer: \" + (System.currentTimeMillis() - startTime) + \"ms\");  \n        startTime = System.currentTimeMillis();  \n        StringBuilder sbuilder = new StringBuilder(\"Java\");  \n        for (int i=0; i<100000; i++){  \n         sbuilder.append(\"2Blog\");  \n        }  \n        System.out.println(\"Time taken by StringBuilder: \" + (System.currentTimeMillis() - startTime) + \"ms\");  \n\n }\n\n}<\/pre>\n<p>When you run above program, you may get below output:<\/p>\n<pre name=\"code\">Time taken by StringBuffer: 21ms\nTime taken by StringBuilder: 9ms<\/pre>\n<p>You can go through\u00a0<a href=\"http:\/\/www.java2blog.com\/2016\/07\/core-java-interview-questions-and-answers.html\" target=\"_blank\" rel=\"noopener\">core java interview questions<\/a>\u00a0for more such questions.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Table of ContentsStringBuffer vs StringBuilderPerformance comparison between StringBuffer and StringBuilder in single thread environment In this post, we will see difference between StringBuffer and StringBuilder in java StringBuffer vs StringBuilder Parameter StringBuffer StringBuilder Thread-safe StringBuffer is thread safe. Two threads can not call methods of StringBuffer simultaneously. StringBuilder is not thread safe, so two threads [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_mi_skip_tracking":false},"categories":[27,144],"tags":[],"_links":{"self":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/posts\/178"}],"collection":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/comments?post=178"}],"version-history":[{"count":0,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/posts\/178\/revisions"}],"wp:attachment":[{"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/categories?post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/java2blog.com\/wp-json\/wp\/v2\/tags?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}