{"id":95599,"date":"2026-04-19T22:19:17","date_gmt":"2026-04-19T15:19:17","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=95599"},"modified":"2026-04-19T22:19:17","modified_gmt":"2026-04-19T15:19:17","slug":"huong-dan-substring-trong-java","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/","title":{"rendered":"Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#Cu_phap_va_cach_su_dung_substring_trong_Java_kem_vi_du\" >C\u00fa ph\u00e1p v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng substring() trong Java k\u00e8m v\u00ed d\u1ee5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#Co_che_hoat_dong_cua_substring_trong_Java\" >C\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng c\u1ee7a substring() trong Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#Cac_loi_thuong_gap_voi_substring_va_cach_xu_ly\" >C\u00e1c l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u1edbi substring() v\u00e0 c\u00e1ch x\u1eed l\u00fd<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#Ung_dung_cua_substring_trong_Java_trong_thuc_te\" >\u1ee8ng d\u1ee5ng c\u1ee7a substring() trong Java trong th\u1ef1c t\u1ebf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#So_sanh_substring_trong_String_StringBuilder_va_StringBuffer\" >So s\u00e1nh substring() trong String, StringBuilder v\u00e0 StringBuffer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#Cac_cau_hoi_thuong_gap_ve_substring_Java\" >C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 substring() Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#Tong_ket\" >T\u1ed5ng k\u1ebft<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><strong><em>Trong ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng Java, x\u1eed l\u00fd chu\u1ed7i l\u00e0 t\u00e1c v\u1ee5 ph\u1ed5 bi\u1ebfn, t\u1eeb vi\u1ec7c tr\u00edch xu\u1ea5t d\u1eef li\u1ec7u nh\u01b0 t\u00ean mi\u1ec1n email, m\u00e3 \u0111\u1ecbnh danh \u0111\u1ebfn r\u00fat g\u1ecdn n\u1ed9i dung hi\u1ec3n th\u1ecb. \u0110\u1ec3 th\u1ef1c hi\u1ec7n hi\u1ec7u qu\u1ea3, ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code> trong l\u1edbp String l\u00e0 c\u00f4ng c\u1ee5 quan tr\u1ecdng, gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 d\u00e0ng c\u1eaft v\u00e0 thao t\u00e1c c\u00e1c ph\u1ea7n c\u1ee7a chu\u1ed7i m\u1ed9t c\u00e1ch ch\u00ednh x\u00e1c.<\/em><\/strong><\/p>\n\n\n\n<p>\u0110\u1ecdc b\u00e0i vi\u1ebft n\u00e0y \u0111\u1ec3 hi\u1ec3u th\u00eam v\u1ec1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00fa ph\u00e1p v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng ph\u01b0\u01a1ng th\u1ee9c substring() trong Java<\/li>\n\n\n\n<li>C\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng c\u1ee7a substring()<\/li>\n\n\n\n<li>C\u00e1c l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u1edbi substring() v\u00e0 c\u00e1ch x\u1eed l\u00fd<\/li>\n\n\n\n<li>So s\u00e1nh substring() trong String, StringBuilder v\u00e0 StringBuffer<\/li>\n\n\n\n<li>C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cu-phap-va-cach-s\u1eed-d\u1ee5ng-substring-trong-java-kem-vi-d\u1ee5\"><span class=\"ez-toc-section\" id=\"Cu_phap_va_cach_su_dung_substring_trong_Java_kem_vi_du\"><\/span><strong>C\u00fa ph\u00e1p v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng substring() trong Java k\u00e8m v\u00ed d\u1ee5<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code> l\u00e0 c\u00f4ng c\u1ee5 c\u1ed1t l\u00f5i c\u1ee7a l\u1edbp String trong Java, \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 tr\u00edch xu\u1ea5t (c\u1eaft) m\u1ed9t ph\u1ea7n c\u1ee7a chu\u1ed7i g\u1ed1c th\u00e0nh m\u1ed9t chu\u1ed7i con (sub-string) m\u1edbi. \u0110\u00e2y l\u00e0 gi\u1ea3i ph\u00e1p hi\u1ec7u qu\u1ea3 v\u00e0 ch\u00ednh x\u00e1c nh\u1ea5t gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean thao t\u00e1c v\u00e0 x\u1eed l\u00fd c\u00e1c ph\u00e2n \u0111o\u1ea1n d\u1eef li\u1ec7u v\u0103n b\u1ea3n, ph\u1ee5c v\u1ee5 c\u00e1c t\u00e1c v\u1ee5 ph\u1ed5 bi\u1ebfn nh\u01b0 r\u00fat g\u1ecdn n\u1ed9i dung, tr\u00edch xu\u1ea5t m\u00e3 \u0111\u1ecbnh danh, hay l\u1ea5y t\u00ean mi\u1ec1n t\u1eeb email.<\/p>\n\n\n\n<p>Trong Java, l\u1edbp String cung c\u1ea5p hai bi\u1ebfn th\u1ec3 (overloading) c\u1ee7a ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>substring(int beginIndex)\nsubstring(int beginIndex, int endIndex)<\/code><\/pre>\n\n\n\n<p>T\u00f9y v\u00e0o m\u1ee5c \u0111\u00edch c\u1ea7n c\u1eaft chu\u1ed7i t\u1eeb m\u1ed9t v\u1ecb tr\u00ed c\u1ed1 \u0111\u1ecbnh hay tr\u00edch xu\u1ea5t m\u1ed9t \u0111o\u1ea1n n\u1eb1m gi\u1eefa, b\u1ea1n c\u00f3 th\u1ec3 l\u1ef1a ch\u1ecdn c\u00fa ph\u00e1p ph\u00f9 h\u1ee3p.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-substring-int-beginindex\"><strong>substring(int beginIndex)<\/strong><\/h3>\n\n\n\n<p>Ph\u01b0\u01a1ng th\u1ee9c n\u00e0y \u0111\u01b0\u1ee3c d\u00f9ng khi b\u1ea1n mu\u1ed1n l\u1ea5y to\u00e0n b\u1ed9 ph\u1ea7n c\u00f2n l\u1ea1i c\u1ee7a chu\u1ed7i k\u1ec3 t\u1eeb m\u1ed9t v\u1ecb tr\u00ed x\u00e1c \u0111\u1ecbnh.<\/p>\n\n\n\n<p><strong>C\u01a1 ch\u1ebf:<\/strong> Tr\u00edch xu\u1ea5t c\u00e1c k\u00fd t\u1ef1 b\u1eaft \u0111\u1ea7u t\u1eeb ch\u1ec9 s\u1ed1 beginIndex cho \u0111\u1ebfn k\u00fd t\u1ef1 cu\u1ed1i c\u00f9ng c\u1ee7a chu\u1ed7i.<\/p>\n\n\n\n<p><strong>V\u00ed d\u1ee5:<\/strong>&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>```java\nString str = \"Hello\";\nString result = str.substring(2); \n\/\/ K\u1ebft qu\u1ea3: \"llo\"<\/code><\/pre>\n\n\n\n<p>Gi\u1ea3i th\u00edch: Java b\u1eaft \u0111\u1ea7u \u0111\u1ebfm t\u1eeb 0 (H=0, e=1, l=2). T\u1ea1i v\u1ecb tr\u00ed index 2 l\u00e0 ch\u1eef &#8216;l&#8217;, ph\u01b0\u01a1ng th\u1ee9c s\u1ebd l\u1ea5y t\u1eeb \u0111\u00f3 \u0111\u1ebfn h\u1ebft.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-substring-int-beginindex-int-endindex\"><strong>substring(int beginIndex, int endIndex)<\/strong><\/h3>\n\n\n\n<p>\u0110\u00e2y l\u00e0 bi\u1ebfn th\u1ec3 linh ho\u1ea1t h\u01a1n, cho ph\u00e9p b\u1ea1n c\u1eaft ch\u00ednh x\u00e1c m\u1ed9t \u0111o\u1ea1n v\u0103n b\u1ea3n n\u1eb1m gi\u1eefa chu\u1ed7i.<\/p>\n\n\n\n<p><strong>C\u01a1 ch\u1ebf:<\/strong> Tr\u00edch xu\u1ea5t t\u1eeb v\u1ecb tr\u00ed <strong>beginIndex <\/strong>\u0111\u1ebfn tr\u01b0\u1edbc v\u1ecb tr\u00ed <strong><code>endIndex<\/code><\/strong>.<\/p>\n\n\n\n<p><strong>L\u01b0u \u00fd quan tr\u1ecdng:<\/strong> Ph\u01b0\u01a1ng th\u1ee9c n\u00e0y bao g\u1ed3m k\u00fd t\u1ef1 t\u1ea1i <strong>beginIndex <\/strong>nh\u01b0ng kh\u00f4ng bao g\u1ed3m k\u00fd t\u1ef1 t\u1ea1i <strong><code>endIndex<\/code> <\/strong>(t\u01b0\u01a1ng \u0111\u01b0\u01a1ng v\u1edbi n\u1eeda kho\u1ea3ng <strong><code>$[beginIndex, endIndex)$<\/code><\/strong>).<\/p>\n\n\n\n<p><strong>C\u00f4ng th\u1ee9c t\u00ednh \u0111\u1ed9 d\u00e0i chu\u1ed7i con:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$$\\text{Length} = \\text{endIndex} - \\text{beginIndex}$$<\/code><\/pre>\n\n\n\n<p><strong>V\u00ed d\u1ee5:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String text = \"Hello World\";\nString sub = text.substring(0, 5);\n\/\/ K\u1ebft qu\u1ea3: \"Hello\"<\/code><\/pre>\n\n\n\n<p>Gi\u1ea3i th\u00edch: L\u1ea5y t\u1eeb index 0 \u0111\u1ebfn index 4. K\u00fd t\u1ef1 t\u1ea1i index 5 (kho\u1ea3ng tr\u1eafng) s\u1ebd b\u1ecb lo\u1ea1i b\u1ecf.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-c\u01a1-ch\u1ebf-ho\u1ea1t-d\u1ed9ng-c\u1ee7a-substring-trong-java\"><span class=\"ez-toc-section\" id=\"Co_che_hoat_dong_cua_substring_trong_Java\"><\/span><strong>C\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng c\u1ee7a substring() trong Java<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u0110\u1ec3 s\u1eed d\u1ee5ng <code>substring()<\/code> m\u1ed9t c\u00e1ch t\u1ed1i \u01b0u, l\u1eadp tr\u00ecnh vi\u00ean c\u1ea7n hi\u1ec3u r\u00f5 nh\u1eefng g\u00ec th\u1ef1c s\u1ef1 x\u1ea3y ra b\u00ean trong b\u1ed9 nh\u1edb (Heap Memory).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-tinh-b\u1ea5t-bi\u1ebfn-immutability\"><strong>T\u00ednh b\u1ea5t bi\u1ebfn (Immutability)<\/strong><\/h3>\n\n\n\n<p>M\u1ed9t \u0111\u1eb7c \u0111i\u1ec3m c\u1ed1t l\u00f5i c\u1ee7a l\u1edbp String trong Java l\u00e0 t\u00ednh b\u1ea5t bi\u1ebfn. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 khi b\u1ea1n g\u1ecdi ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code>, chu\u1ed7i g\u1ed1c ho\u00e0n to\u00e0n kh\u00f4ng b\u1ecb thay \u0111\u1ed5i hay b\u1ecb &#8220;c\u1eaft&#8221; \u0111i.<\/p>\n\n\n\n<p>Thay v\u00e0o \u0111\u00f3, Java s\u1ebd kh\u1edfi t\u1ea1o m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng String ho\u00e0n to\u00e0n m\u1edbi trong Memory \u0111\u1ec3 ch\u1ee9a n\u1ed9i dung v\u1eeba tr\u00edch xu\u1ea5t. V\u00ec v\u1eady, n\u1ebfu b\u1ea1n mu\u1ed1n s\u1eed d\u1ee5ng chu\u1ed7i con n\u00e0y, b\u1ea1n ph\u1ea3i g\u00e1n n\u00f3 cho m\u1ed9t bi\u1ebfn m\u1edbi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String original = \"Java Programming\";\nString sub = original.substring(0, 4); \nSystem.out.println(original); \/\/ V\u1eabn l\u00e0 \"Java Programming\"\nSystem.out.println(sub);      \/\/ \"Java\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-s\u1ef1-thay-d\u1ed5i-c\u01a1-ch\u1ebf-qua-cac-phien-b\u1ea3n-java\"><strong>S\u1ef1 thay \u0111\u1ed5i c\u01a1 ch\u1ebf qua c\u00e1c phi\u00ean b\u1ea3n Java<\/strong><\/h3>\n\n\n\n<p>C\u01a1 ch\u1ebf qu\u1ea3n l\u00fd b\u1ed9 nh\u1edb c\u1ee7a <code>substring()<\/code> \u0111\u00e3 c\u00f3 s\u1ef1 thay \u0111\u1ed5i \u0111\u00e1ng ch\u00fa \u00fd qua c\u00e1c phi\u00ean b\u1ea3n Java:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tr\u01b0\u1edbc Java 7u6:<\/strong> Ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code> t\u1ea1o ra m\u1ed9t String m\u1edbi nh\u01b0ng v\u1eabn chia s\u1ebb chung m\u1ea3ng k\u00fd t\u1ef1 (<code>char[] value<\/code>) v\u1edbi chu\u1ed7i g\u1ed1c. \u0110i\u1ec1u n\u00e0y gi\u00fap ti\u1ebft ki\u1ec7m b\u1ed9 nh\u1edb v\u00e0 th\u1eddi gian nh\u01b0ng l\u1ea1i g\u00e2y ra l\u1ed7i <strong>Memory Leak<\/strong> (R\u00f2 r\u1ec9 b\u1ed9 nh\u1edb).\u00a0<\/li>\n<\/ul>\n\n\n\n<p>V\u00ed d\u1ee5: B\u1ea1n ch\u1ec9 l\u1ea5y m\u1ed9t chu\u1ed7i con r\u1ea5t nh\u1ecf t\u1eeb m\u1ed9t chu\u1ed7i kh\u1ed5ng l\u1ed3, nh\u01b0ng chu\u1ed7i kh\u1ed5ng l\u1ed3 \u0111\u00f3 v\u1eabn kh\u00f4ng \u0111\u01b0\u1ee3c b\u1ed9 thu gom r\u00e1c (GC) gi\u1ea3i ph\u00f3ng v\u00ec chu\u1ed7i con v\u1eabn \u0111ang gi\u1eef tham chi\u1ebfu \u0111\u1ebfn m\u1ea3ng k\u00fd t\u1ef1 c\u1ee7a n\u00f3.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>T\u1eeb Java 7u6 tr\u1edf \u0111i:<\/strong> \u0110\u1ec3 kh\u1eafc ph\u1ee5c v\u1ea5n \u0111\u1ec1 tr\u00ean, Java \u0111\u00e3 thay \u0111\u1ed5i c\u01a1 ch\u1ebf.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>M\u1ed7i khi g\u1ecdi <code>substring()<\/code>, m\u1ed9t m\u1ea3ng k\u00fd t\u1ef1 m\u1edbi \u0111\u01b0\u1ee3c copy ho\u00e0n to\u00e0n. \u0110i\u1ec1u n\u00e0y gi\u00fap chu\u1ed7i con \u0111\u1ed9c l\u1eadp ho\u00e0n to\u00e0n v\u1edbi chu\u1ed7i g\u1ed1c, cho ph\u00e9p chu\u1ed7i g\u1ed1c \u0111\u01b0\u1ee3c gi\u1ea3i ph\u00f3ng kh\u1ecfi b\u1ed9 nh\u1edb n\u1ebfu kh\u00f4ng c\u00f2n \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng, gi\u00fap \u1ee9ng d\u1ee5ng ho\u1ea1t \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh h\u01a1n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-l\u1ed7i-th\u01b0\u1eddng-g\u1eb7p-v\u1edbi-substring-va-cach-x\u1eed-ly\"><span class=\"ez-toc-section\" id=\"Cac_loi_thuong_gap_voi_substring_va_cach_xu_ly\"><\/span><strong>C\u00e1c l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u1edbi substring() v\u00e0 c\u00e1ch x\u1eed l\u00fd<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>D\u00f9 l\u00e0 m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n, <code>substring()<\/code> v\u1eabn th\u01b0\u1eddng xuy\u00ean g\u00e2y ra nh\u1eefng l\u1ed7i khi\u1ebfn \u1ee9ng d\u1ee5ng b\u1ecb d\u1eebng \u0111\u1ed9t ng\u1ed9t (crash). D\u01b0\u1edbi \u0111\u00e2y l\u00e0 nh\u1eefng l\u1ed7i ph\u1ed5 bi\u1ebfn nh\u1ea5t v\u00e0 c\u00e1ch x\u1eed l\u00fd chuy\u00ean nghi\u1ec7p:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ngo\u1ea1i-l\u1ec7-stringindexoutofboundsexception\"><strong>Ngo\u1ea1i l\u1ec7 <\/strong><strong>StringIndexOutOfBoundsException<\/strong><\/h3>\n\n\n\n<p>\u0110\u00e2y l\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p ph\u1ed5 bi\u1ebfn nh\u1ea5t. L\u1ed7i n\u00e0y x\u1ea3y ra khi c\u00e1c tham s\u1ed1 b\u1ea1n truy\u1ec1n v\u00e0o ph\u01b0\u01a1ng th\u1ee9c kh\u00f4ng n\u1eb1m trong ph\u1ea1m vi h\u1ee3p l\u1ec7 c\u1ee7a chu\u1ed7i.<\/p>\n\n\n\n<p><strong>Nguy\u00ean nh\u00e2n:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>beginIndex<\/code> nh\u1ecf h\u01a1n 0.<\/li>\n\n\n\n<li><code>endIndex<\/code> l\u1edbn h\u01a1n \u0111\u1ed9 d\u00e0i th\u1ef1c t\u1ebf c\u1ee7a chu\u1ed7i (<code>str.length()<\/code>).<\/li>\n\n\n\n<li><code>beginIndex<\/code> l\u1ea1i l\u1edbn h\u01a1n <code>endIndex<\/code>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-\u1ee9ng-d\u1ee5ng-c\u1ee7a-substring-trong-java-trong-th\u1ef1c-t\u1ebf\"><span class=\"ez-toc-section\" id=\"Ung_dung_cua_substring_trong_Java_trong_thuc_te\"><\/span><strong>\u1ee8ng d\u1ee5ng c\u1ee7a substring() trong Java trong th\u1ef1c t\u1ebf<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Kh\u00f4ng ch\u1ec9 \u0111\u01a1n thu\u1ea7n l\u00e0 c\u1eaft chu\u1ed7i, ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code> l\u00e0 c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd, k\u1ebft h\u1ee3p v\u1edbi c\u00e1c ph\u01b0\u01a1ng th\u1ee9c kh\u00e1c (nh\u01b0 <code>indexOf()<\/code> hay <code>length()<\/code>), \u0111\u1ec3 gi\u1ea3i quy\u1ebft nhi\u1ec1u b\u00e0i to\u00e1n x\u1eed l\u00fd d\u1eef li\u1ec7u chu\u1ed7i (String) th\u1ef1c t\u1ebf trong \u1ee9ng d\u1ee5ng:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-trich-xu\u1ea5t-ten-mi\u1ec1n-t\u1eeb-d\u1ecba-ch\u1ec9-email\"><strong>Tr\u00edch xu\u1ea5t T\u00ean mi\u1ec1n t\u1eeb \u0110\u1ecba ch\u1ec9 Email<\/strong><\/h3>\n\n\n\n<p>Th\u01b0\u1eddng \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 l\u1ea5y ph\u1ea7n t\u00ean mi\u1ec1n c\u1ee7a m\u1ed9t \u0111\u1ecba ch\u1ec9 email. B\u1ea1n s\u1ebd d\u00f9ng indexOf() \u0111\u1ec3 t\u00ecm v\u1ecb tr\u00ed k\u00fd t\u1ef1 @ v\u00e0 b\u1eaft \u0111\u1ea7u c\u1eaft chu\u1ed7i t\u1eeb v\u1ecb tr\u00ed ti\u1ebfp theo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String email = \"laptrinhvien@domain.com\";\nint atIndex = email.indexOf('@'); \/\/ V\u1ecb tr\u00ed c\u1ee7a k\u00fd t\u1ef1 '@'\n\nif (atIndex != -1 &amp;&amp; atIndex &lt; email.length() - 1) {\n    String domain = email.substring(atIndex + 1);\n    \/\/ K\u1ebft qu\u1ea3: \"domain.com\"\n} else {\n    \/\/ X\u1eed l\u00fd tr\u01b0\u1eddng h\u1ee3p email kh\u00f4ng h\u1ee3p l\u1ec7 (kh\u00f4ng c\u00f3 '@' ho\u1eb7c '@' \u1edf cu\u1ed1i)\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-chu\u1ea9n-hoa-ho\u1eb7c-trich-xu\u1ea5t-ma-d\u1ecbnh-danh-format-user-id-code\"><strong>Chu\u1ea9n h\u00f3a ho\u1eb7c Tr\u00edch xu\u1ea5t M\u00e3 \u0111\u1ecbnh danh (Format User ID\/Code)<\/strong><\/h3>\n\n\n\n<p>Trong c\u00e1c h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd, m\u00e3 \u0111\u1ecbnh danh (ID) th\u01b0\u1eddng c\u00f3 c\u1ea5u tr\u00fac c\u1ed1 \u0111\u1ecbnh. Substring gi\u00fap b\u1ea1n tr\u00edch xu\u1ea5t ph\u1ea7n th\u00f4ng tin mong mu\u1ed1n, v\u00ed d\u1ee5 nh\u01b0 s\u1ed1 th\u1ee9 t\u1ef1, m\u00e3 lo\u1ea1i, ho\u1eb7c ng\u00e0y th\u00e1ng:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String fullCode = \"INV-2024-01-04567\"; \/\/ M\u00e3 h\u00f3a \u0111\u01a1n: Lo\u1ea1i - N\u0103m - Th\u00e1ng - STT\n\n\/\/ Tr\u00edch xu\u1ea5t 5 k\u00fd t\u1ef1 cu\u1ed1i (S\u1ed1 th\u1ee9 t\u1ef1):\nString sequenceNumber = fullCode.substring(fullCode.length() - 5);\n\/\/ K\u1ebft qu\u1ea3: \"04567\"\n\n\/\/ Tr\u00edch xu\u1ea5t M\u00e3 lo\u1ea1i (Ph\u1ea7n \u0111\u1ea7u ti\u00ean tr\u01b0\u1edbc d\u1ea5u g\u1ea1ch ngang \u0111\u1ea7u ti\u00ean):\nString typeCode = fullCode.substring(0, fullCode.indexOf('-'));\n\/\/ K\u1ebft qu\u1ea3: \"INV\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-rut-g\u1ecdn-n\u1ed9i-dung-d\u1ec3-hi\u1ec3nth\u1ecb\"><strong>R\u00fat g\u1ecdn n\u1ed9i dung \u0111\u1ec3 hi\u1ec3nth\u1ecb<\/strong><\/h3>\n\n\n\n<p>\u0110\u00e2y l\u00e0 tr\u01b0\u1eddng h\u1ee3p ph\u1ed5 bi\u1ebfn khi b\u1ea1n c\u1ea7n hi\u1ec3n th\u1ecb b\u1ea3n xem tr\u01b0\u1edbc (preview) ho\u1eb7c t\u00f3m t\u1eaft m\u1ed9t \u0111o\u1ea1n v\u0103n b\u1ea3n qu\u00e1 d\u00e0i tr\u00ean giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng (v\u00ed d\u1ee5: hi\u1ec3n th\u1ecb m\u00f4 t\u1ea3 s\u1ea3n ph\u1ea9m tr\u00ean trang k\u1ebft qu\u1ea3 t\u00ecm ki\u1ebfm).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String longText = \"\u0110\u00e2y l\u00e0 m\u1ed9t \u0111o\u1ea1n v\u0103n b\u1ea3n r\u1ea5t d\u00e0i c\u1ea7n \u0111\u01b0\u1ee3c r\u00fat g\u1ecdn \u0111\u1ec3 hi\u1ec3n th\u1ecb tr\u00ean giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng...\";\nint maxLength = 100;\n\nif (longText.length() &gt; maxLength) {\n    \/\/ C\u1eaft chu\u1ed7i t\u1eeb 0 \u0111\u1ebfn v\u1ecb tr\u00ed maxLength\n    String shortText = longText.substring(0, maxLength) + \"...\";\n    \/\/ K\u1ebft qu\u1ea3: 100 k\u00fd t\u1ef1 \u0111\u1ea7u ti\u00ean + \"...\"\n} else {\n    String shortText = longText;\n}<\/code><\/pre>\n\n\n\n<p><strong>C\u00e1ch ph\u00f2ng tr\u00e1nh:<\/strong> Lu\u00f4n th\u1ef1c hi\u1ec7n ki\u1ec3m tra \u0111\u1ed9 d\u00e0i chu\u1ed7i ho\u1eb7c s\u1eed d\u1ee5ng ph\u01b0\u01a1ng th\u1ee9c Math.min() \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o ch\u1ec9 s\u1ed1 lu\u00f4n n\u1eb1m trong v\u00f9ng an to\u00e0n.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String data = \"Java\";\n\/\/ L\u1ed7i: data.substring(0, 10); -&gt; Qu\u00e1 \u0111\u1ed9 d\u00e0i chu\u1ed7i\n\n\/\/ C\u00e1ch x\u1eed l\u00fd an to\u00e0n:\nint end = 10;\nif (end &lt;= data.length()) {\n    String sub = data.substring(0, end);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nh\u1ea7m-l\u1eabn-v\u1ec1-nguyen-t\u1eafc-inclusive-exclusive\"><strong>Nh\u1ea7m l\u1eabn v\u1ec1 nguy\u00ean t\u1eafc &#8220;Inclusive &#8211; Exclusive&#8221;<\/strong><\/h3>\n\n\n\n<p>Nhi\u1ec1u l\u1eadp tr\u00ecnh vi\u00ean m\u1edbi th\u01b0\u1eddng nh\u1ea7m r\u1eb1ng endIndex l\u00e0 v\u1ecb tr\u00ed c\u1ee7a k\u00fd t\u1ef1 cu\u1ed1i c\u00f9ng h\u1ecd mu\u1ed1n l\u1ea5y. Tuy nhi\u00ean, nh\u01b0 \u0111\u00e3 \u0111\u1ec1 c\u1eadp, trong ph\u01b0\u01a1ng th\u1ee9c substring(beginIndex, endIndex), Java \u00e1p d\u1ee5ng quy t\u1eafc <strong>inclusive \u2013 exclusiv<\/strong>e (bao g\u1ed3m ch\u1ec9 s\u1ed1 b\u1eaft \u0111\u1ea7u nh\u01b0ng lo\u1ea1i tr\u1eeb ch\u1ec9 s\u1ed1 k\u1ebft th\u00fac).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Inclusive (B\u1eaft \u0111\u1ea7u)<\/strong>: K\u00fd t\u1ef1 t\u1ea1i v\u1ecb tr\u00ed beginIndex \u0111\u01b0\u1ee3c l\u1ea5y.<\/li>\n\n\n\n<li><strong>Exclusive (K\u1ebft th\u00fac)<\/strong>: K\u00fd t\u1ef1 t\u1ea1i v\u1ecb tr\u00ed endIndex b\u1ecb b\u1ecf qua.<\/li>\n<\/ul>\n\n\n\n<p><strong>V\u00ed d\u1ee5: <\/strong>N\u1ebfu b\u1ea1n mu\u1ed1n l\u1ea5y k\u00fd t\u1ef1 t\u1ea1i v\u1ecb tr\u00ed s\u1ed1 5, b\u1ea1n ph\u1ea3i truy\u1ec1n v\u00e0o endIndex l\u00e0 6.<\/p>\n\n\n\n<p><strong>M\u1eb9o ghi nh\u1edb:<\/strong> H\u00e3y lu\u00f4n nh\u1edb c\u00f4ng th\u1ee9c $\\text{\u0111\u1ed9 d\u00e0i chu\u1ed7i con} = \\text{endIndex} &#8211; \\text{beginIndex}$.&nbsp;<\/p>\n\n\n\n<p>V\u00ed d\u1ee5: N\u1ebfu b\u1ea1n mu\u1ed1n l\u1ea5y 3 k\u00fd t\u1ef1 t\u00ednh t\u1eeb v\u1ecb tr\u00ed 0, ch\u1ec9 s\u1ed1 k\u1ebft th\u00fac ph\u1ea3i l\u00e0 $0 + 3 = 3$ (<code>str.substring(0, 3)<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-x\u1eed-ly-chu\u1ed7i-null-ho\u1eb7c-chu\u1ed7i-r\u1ed7ng\"><strong>X\u1eed l\u00fd chu\u1ed7i <\/strong><strong>null<\/strong><strong> ho\u1eb7c chu\u1ed7i r\u1ed7ng<\/strong><\/h3>\n\n\n\n<p>G\u1ecdi <code>.substring()<\/code> tr\u00ean m\u1ed9t bi\u1ebfn String c\u00f3 gi\u00e1 tr\u1ecb null s\u1ebd ngay l\u1eadp t\u1ee9c n\u00e9m ra NullPointerException g\u00e2y l\u1ed7i d\u1eebng app \u0111\u1ed9t ng\u1ed9t.<\/p>\n\n\n\n<p><strong>Gi\u1ea3i ph\u00e1p:<\/strong> Lu\u00f4n s\u1eed d\u1ee5ng k\u1ef9 thu\u1eadt &#8220;Defensive Programming&#8221; b\u1eb1ng c\u00e1ch ki\u1ec3m tra str != null ho\u1eb7c s\u1eed d\u1ee5ng c\u00e1c th\u01b0 vi\u1ec7n h\u1ed7 tr\u1ee3 nh\u01b0 <code>StringUtils.substring()<\/code> c\u1ee7a Apache Commons \u0111\u1ec3 code an to\u00e0n h\u01a1n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-so-sanh-substring-trong-string-stringbuilder-va-stringbuffer\"><span class=\"ez-toc-section\" id=\"So_sanh_substring_trong_String_StringBuilder_va_StringBuffer\"><\/span><strong>So s\u00e1nh substring() trong String, StringBuilder v\u00e0 StringBuffer<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>D\u00f9 c\u1ea3 ba l\u1edbp n\u00e0y \u0111\u1ec1u cung c\u1ea5p ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code>, nh\u01b0ng c\u00e1ch ch\u00fang x\u1eed l\u00fd d\u1eef li\u1ec7u v\u00e0 t\u00e1c \u0111\u1ed9ng \u0111\u1ebfn hi\u1ec7u n\u0103ng l\u1ea1i c\u00f3 s\u1ef1 kh\u00e1c bi\u1ec7t r\u00f5 r\u1ec7t.<\/p>\n\n\n\n<p><strong>B\u1ea3ng so s\u00e1nh nhanh:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>\u0110\u1eb7c \u0111i\u1ec3m<\/strong><\/td><td><strong>String<\/strong><\/td><td><strong>StringBuilder<\/strong><\/td><td><strong>StringBuffer<\/strong><\/td><\/tr><tr><td><strong>T\u00ednh b\u1ea5t bi\u1ebfn<\/strong><\/td><td>Immutable (B\u1ea5t bi\u1ebfn)<\/td><td>Mutable (Thay \u0111\u1ed5i \u0111\u01b0\u1ee3c)<\/td><td>Mutable (Thay \u0111\u1ed5i \u0111\u01b0\u1ee3c)<\/td><\/tr><tr><td><strong>An to\u00e0n lu\u1ed3ng<\/strong><\/td><td>C\u00f3 (Thread-safe)<\/td><td>Kh\u00f4ng (Not Thread-safe)<\/td><td>C\u00f3 (Thread-safe)<\/td><\/tr><tr><td><strong>Hi\u1ec7u n\u0103ng<\/strong><\/td><td>Trung b\u00ecnh<\/td><td>Cao nh\u1ea5t<\/td><td>Trung b\u00ecnh<\/td><\/tr><tr><td><strong>K\u1ebft qu\u1ea3 tr\u1ea3 v\u1ec1<\/strong><\/td><td>String m\u1edbi<\/td><td>String m\u1edbi<\/td><td>String m\u1edbi<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>M\u1ed9t l\u01b0u \u00fd quan tr\u1ecdng m\u00e0 nhi\u1ec1u l\u1eadp tr\u00ecnh vi\u00ean hay nh\u1ea7m l\u1eabn: M\u1eb7c d\u00f9 StringBuilder v\u00e0 StringBuffer d\u00f9ng \u0111\u1ec3 ch\u1ec9nh s\u1eeda chu\u1ed7i hi\u1ec7n c\u00f3, nh\u01b0ng ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code> c\u1ee7a ch\u00fang <strong>v\u1eabn tr\u1ea3 v\u1ec1 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng Stringm\u1edbi<\/strong>. N\u00f3 kh\u00f4ng c\u1eaft tr\u1ef1c ti\u1ebfp tr\u00ean v\u00f9ng nh\u1edb \u0111\u1ec7m (buffer) hi\u1ec7n t\u1ea1i m\u00e0 t\u1ea1o ra m\u1ed9t b\u1ea3n sao \u0111\u1ecbnh d\u1ea1ng String.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-cau-h\u1ecfi-th\u01b0\u1eddng-g\u1eb7p-v\u1ec1-substring-java\"><span class=\"ez-toc-section\" id=\"Cac_cau_hoi_thuong_gap_ve_substring_Java\"><\/span><strong>C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 substring() Java<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-khi-nao-nen-dung-substring-c\u1ee7a-stringbuilder\"><strong>Khi n\u00e0o n\u00ean d\u00f9ng substring() c\u1ee7a StringBuilder?<\/strong><\/h3>\n\n\n\n<p>Vi\u1ec7c s\u1eed d\u1ee5ng <code>substring()<\/code> c\u1ee7a StringBuilder gi\u00fap t\u1ed1i \u01b0u h\u00f3a b\u1ed9 nh\u1edb trong c\u00e1c tr\u01b0\u1eddng h\u1ee3p sau:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>X\u1eed l\u00fd chu\u1ed7i ph\u1ee9c t\u1ea1p:<\/strong> Khi b\u1ea1n th\u1ef1c hi\u1ec7n nhi\u1ec1u thao t\u00e1c nh\u01b0 append, insert, delete, thay v\u00ec chuy\u1ec3n \u0111\u1ed5i ng\u01b0\u1ee3c l\u1ea1i th\u00e0nh String (toString()) r\u1ed3i m\u1edbi c\u1eaft, h\u00e3y g\u1ecdi tr\u1ef1c ti\u1ebfp <code>substring()<\/code> t\u1eeb StringBuilder. Vi\u1ec7c n\u00e0y gi\u00fap tr\u00e1nh t\u1ea1o ra c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng trung gian kh\u00f4ng c\u1ea7n thi\u1ebft.<\/li>\n\n\n\n<li><strong>X\u00e2y d\u1ef1ng n\u1ed9i dung \u0111\u1ed9ng:<\/strong> N\u1ebfu b\u1ea1n \u0111ang x\u00e2y d\u1ef1ng m\u1ed9t c\u00e2u truy v\u1ea5n SQL ho\u1eb7c m\u1ed9t file JSON l\u1edbn v\u00e0 ch\u1ec9 c\u1ea7n l\u1ea5y m\u1ed9t ph\u1ea7n k\u1ebft qu\u1ea3 cu\u1ed1i c\u00f9ng, StringBuilder.<code>substring()<\/code> s\u1ebd th\u1ef1c hi\u1ec7n vi\u1ec7c tr\u00edch xu\u1ea5t nhanh ch\u00f3ng h\u01a1n t\u1eeb v\u00f9ng \u0111\u1ec7m c\u00f3 s\u1eb5n.<\/li>\n<\/ul>\n\n\n\n<p><strong>T\u00f3m l\u1ea1i:<\/strong> Trong h\u1ea7u h\u1ebft c\u00e1c \u1ee9ng d\u1ee5ng \u0111\u01a1n lu\u1ed3ng (Single-threaded), h\u00e3y \u01b0u ti\u00ean s\u1eed d\u1ee5ng <strong>StringBuilder.<code>substring()<\/code><\/strong> \u0111\u1ec3 \u0111\u1ea1t t\u1ed1c \u0111\u1ed9 x\u1eed l\u00fd t\u1ed1i \u01b0u nh\u1ea5t.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-substring-co-lam-t\u1ed1n-b\u1ed9-nh\u1edb-memory-leak-khong\"><strong>substring()<\/strong><strong> c\u00f3 l\u00e0m t\u1ed1n b\u1ed9 nh\u1edb (Memory Leak) kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>V\u1edbi Java hi\u1ec7n \u0111\u1ea1i (t\u1eeb 7u6 tr\u1edf \u0111i): C\u00e2u tr\u1ea3 l\u1eddi l\u00e0 KH\u00d4NG. M\u1ed7i chu\u1ed7i con l\u00e0 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed9c l\u1eadp v\u1edbi m\u1ea3ng k\u00fd t\u1ef1 ri\u00eang.<\/li>\n\n\n\n<li>V\u1edbi Java c\u0169: C\u00d3. Chu\u1ed7i con v\u1eabn gi\u1eef tham chi\u1ebfu \u0111\u1ebfn m\u1ea3ng k\u00fd t\u1ef1 kh\u1ed5ng l\u1ed3 c\u1ee7a chu\u1ed7i g\u1ed1c, khi\u1ebfn b\u1ed9 nh\u1edb kh\u00f4ng \u0111\u01b0\u1ee3c gi\u1ea3i ph\u00f3ng.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-co-cach-nao-c\u1eaft-chu\u1ed7i-ma-khong-lo-b\u1ecb-nullpointerexception-khong\"><strong>C\u00f3 c\u00e1ch n\u00e0o c\u1eaft chu\u1ed7i m\u00e0 kh\u00f4ng lo b\u1ecb <\/strong><strong>NullPointerException<\/strong><strong> kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>N\u1ebfu b\u1ea1n lo l\u1eafng bi\u1ebfn String c\u00f3 th\u1ec3 b\u1ecb null, h\u00e3y s\u1eed d\u1ee5ng th\u01b0 vi\u1ec7n <strong>Apache Commons Lang<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00e1ch d\u00f9ng: StringUtils.substring(str, start, end);<\/li>\n\n\n\n<li>L\u1ee3i \u00edch: N\u1ebfu str l\u00e0 null, n\u00f3 s\u1ebd tr\u1ea3 v\u1ec1 null thay v\u00ec l\u00e0m ch\u01b0\u01a1ng tr\u00ecnh b\u1ecb v\u0103ng l\u1ed7i.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ea1i-sao-str-substring-0-str-length-khong-gay-l\u1ed7i\"><strong>T\u1ea1i sao <\/strong><strong>str.substring(0, str.length())<\/strong><strong> kh\u00f4ng g\u00e2y l\u1ed7i?<\/strong><\/h3>\n\n\n\n<p>Theo l\u00fd thuy\u1ebft, str.length() l\u00e0 ch\u1ec9 s\u1ed1 n\u1eb1m ngo\u00e0i ph\u1ea1m vi k\u00fd t\u1ef1 (v\u1ecb tr\u00ed cu\u1ed1i c\u00f9ng l\u00e0 length &#8211; 1). Tuy nhi\u00ean, v\u00ec nguy\u00ean t\u1eafc <strong>exclusive (Lo\u1ea1i tr\u1eeb)<\/strong>, Java cho ph\u00e9p endIndex b\u1eb1ng \u0111\u00fang \u0111\u1ed9 d\u00e0i chu\u1ed7i. K\u1ebft qu\u1ea3 tr\u1ea3 v\u1ec1 m\u1ed9t b\u1ea3n sao c\u1ee7a to\u00e0n b\u1ed9 chu\u1ed7i g\u1ed1c.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5: V\u1edbi chu\u1ed7i &#8220;Hi&#8221;, length l\u00e0 2.<\/p>\n\n\n\n<p><code>str.substring(0, 2)<\/code> -> L\u1ea5y k\u00fd t\u1ef1 t\u1ea1i index 0 v\u00e0 1. H\u1ee3p l\u1ec7.<\/p>\n\n\n\n<p><code>str.charAt(2)<\/code> -> L\u1ed7i IndexOutOfBounds v\u00ec kh\u00f4ng c\u00f3 k\u00fd t\u1ef1 n\u00e0o t\u1ea1i index 2.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-lam-sao-d\u1ec3-c\u1eaft-l\u1ea5y-x-ky-t\u1ef1-cu\u1ed1i-cung-c\u1ee7a-m\u1ed9t-chu\u1ed7i-trong-java\"><strong>L\u00e0m sao \u0111\u1ec3 c\u1eaft l\u1ea5y X k\u00fd t\u1ef1 cu\u1ed1i c\u00f9ng c\u1ee7a m\u1ed9t chu\u1ed7i trong Java?<\/strong><\/h3>\n\n\n\n<p>\u0110\u1ec3 l\u1ea5y X k\u00fd t\u1ef1 cu\u1ed1i c\u1ee7a m\u1ed9t chu\u1ed7i trong Java, b\u1ea1n c\u00f3 th\u1ec3 k\u1ebft h\u1ee3p ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code> v\u1edbi <code>length()<\/code>.<\/p>\n\n\n\n<p><strong>V\u00ed d\u1ee5 (L\u1ea5y 3 k\u00fd t\u1ef1 cu\u1ed1i):<\/strong>&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>```java String str = \"JavaProgramming\"; String lastThree = str.substring(str.length() - 3); \n\/\/ K\u1ebft qu\u1ea3: \"ing\"<\/code><\/pre>\n\n\n\n<p>Gi\u1ea3i th\u00edch: \u0110\u1ea7u ti\u00ean, ta l\u1ea5y t\u1ed5ng chi\u1ec1u d\u00e0i c\u1ee7a m\u1ea3ng String k\u1ec3 tr\u00ean(15), sau \u0111\u00f3 str.length() &#8211; 3 \u0111\u1ec3 l\u1ea5y ra (substring) m\u1ea3ng m\u1edbi b\u1eaft \u0111\u1ea7u b\u1eb1ng 12 t\u1ee9c k\u1ebft qu\u1ea3 \u201cing\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-k\u1ebft\"><span class=\"ez-toc-section\" id=\"Tong_ket\"><\/span><strong>T\u1ed5ng k\u1ebft<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ph\u01b0\u01a1ng th\u1ee9c <code>substring()<\/code> l\u00e0 c\u00f4ng c\u1ee5 c\u1ed1t l\u00f5i v\u00e0 kh\u00f4ng th\u1ec3 thi\u1ebfu trong x\u1eed l\u00fd chu\u1ed7i c\u1ee7a Java, gi\u00fap tr\u00edch xu\u1ea5t d\u1eef li\u1ec7u m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. \u0110\u1ec3 l\u00e0m ch\u1ee7 ph\u01b0\u01a1ng th\u1ee9c n\u00e0y, c\u1ea7n hi\u1ec3u r\u00f5 t\u00ednh b\u1ea5t bi\u1ebfn (Immutability) c\u1ee7a l\u1edbp String, t\u1ee9c l\u00e0 m\u1ed7i l\u1ea7n g\u1ecdi <code>substring()<\/code> s\u1ebd t\u1ea1o ra m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng String m\u1edbi. \u0110\u1ed1i v\u1edbi c\u00e1c \u1ee9ng d\u1ee5ng \u0111\u01a1n lu\u1ed3ng ph\u1ee9c t\u1ea1p, \u01b0u ti\u00ean s\u1eed d\u1ee5ng <code>StringBuilder.substring()<\/code> \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u n\u0103ng, v\u00e0 \u00e1p d\u1ee5ng c\u00e1c k\u1ef9 thu\u1eadt \u0111\u01b0\u1ee3c \u0111\u1ec1 c\u1eadp trong b\u00e0i vi\u1ebft \u0111\u1ec3 x\u1eed l\u00fd chu\u1ed7i null an to\u00e0n.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u0110\u1ecdc th\u00eam: <strong><a href=\"https:\/\/itviec.com\/blog\/cac-cau-lenh-trong-java\/\" target=\"_blank\" rel=\"noreferrer noopener\">C\u00e1c c\u00e2u l\u1ec7nh trong Java: Chi ti\u1ebft t\u1eeb c\u01a1 b\u1ea3n \u0111\u1ebfn n\u00e2ng cao<\/a><\/strong><\/em><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Trong ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng Java, x\u1eed l\u00fd chu\u1ed7i l\u00e0 t\u00e1c v\u1ee5 ph\u1ed5 bi\u1ebfn, t\u1eeb vi\u1ec7c tr\u00edch xu\u1ea5t d\u1eef li\u1ec7u nh\u01b0 t\u00ean mi\u1ec1n email, m\u00e3 \u0111\u1ecbnh danh \u0111\u1ebfn r\u00fat g\u1ecdn n\u1ed9i dung hi\u1ec3n th\u1ecb. \u0110\u1ec3 th\u1ef1c hi\u1ec7n hi\u1ec7u qu\u1ea3, ph\u01b0\u01a1ng th\u1ee9c substring() trong l\u1edbp String l\u00e0 c\u00f4ng c\u1ee5 quan tr\u1ecdng, gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 [&hellip;]<\/p>\n","protected":false},"author":203,"featured_media":95600,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109,10350,10104],"tags":[],"class_list":["post-95599","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it","category-java","category-tai-lieu-java"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p - ITviec Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p\" \/>\n<meta property=\"og:description\" content=\"Trong ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng Java, x\u1eed l\u00fd chu\u1ed7i l\u00e0 t\u00e1c v\u1ee5 ph\u1ed5 bi\u1ebfn, t\u1eeb vi\u1ec7c tr\u00edch xu\u1ea5t d\u1eef li\u1ec7u nh\u01b0 t\u00ean mi\u1ec1n email, m\u00e3 \u0111\u1ecbnh danh \u0111\u1ebfn r\u00fat g\u1ecdn n\u1ed9i dung hi\u1ec3n th\u1ecb.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-19T15:19:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2026\/04\/11-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"421\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tien Tran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tien Tran\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p - ITviec Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/","og_locale":"vi_VN","og_type":"article","og_title":"Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p","og_description":"Trong ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng Java, x\u1eed l\u00fd chu\u1ed7i l\u00e0 t\u00e1c v\u1ee5 ph\u1ed5 bi\u1ebfn, t\u1eeb vi\u1ec7c tr\u00edch xu\u1ea5t d\u1eef li\u1ec7u nh\u01b0 t\u00ean mi\u1ec1n email, m\u00e3 \u0111\u1ecbnh danh \u0111\u1ebfn r\u00fat g\u1ecdn n\u1ed9i dung hi\u1ec3n th\u1ecb.","og_url":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2026-04-19T15:19:17+00:00","og_image":[{"width":800,"height":421,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2026\/04\/11-scaled.png","type":"image\/png"}],"author":"Tien Tran","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Tien Tran","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"12 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/"},"author":{"name":"Tien Tran","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/1595d671c49cfa2a48cd3c0a047a1298"},"headline":"Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p","datePublished":"2026-04-19T15:19:17+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/"},"wordCount":2862,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2026\/04\/11-scaled.png","articleSection":["Chuy\u00ean m\u00f4n IT","Java","T\u00e0i li\u1ec7u Java"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/","url":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/","name":"Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2026\/04\/11-scaled.png","datePublished":"2026-04-19T15:19:17+00:00","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2026\/04\/11-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2026\/04\/11-scaled.png","width":800,"height":421,"caption":"Substring java - ITviec Blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/huong-dan-substring-trong-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"Substring Java: C\u00e1ch d\u00f9ng t\u1eeb A-Z v\u00e0 l\u1ed7i th\u01b0\u1eddng g\u1eb7p"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/1595d671c49cfa2a48cd3c0a047a1298","name":"Tien Tran","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/05\/tien-tran-author-e1715658627643-100x100.jpg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/05\/tien-tran-author-e1715658627643-100x100.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/05\/tien-tran-author-e1715658627643-100x100.jpg","caption":"Tien Tran"},"url":"https:\/\/itviec.com\/blog\/author\/tien-tran\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/95599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/203"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=95599"}],"version-history":[{"count":3,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/95599\/revisions"}],"predecessor-version":[{"id":95712,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/95599\/revisions\/95712"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/95600"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=95599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=95599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=95599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}