Skip to main content

Command Palette

Search for a command to run...

String in Java

Published
2 min read
String in Java
P

Computer Science Student from Myanamar.

String ဆိုတာ character ‌‌‌တွေအတွဲလိုက် စုဝေးထားတဲ့ Object အမျိုးအစားတစ်ခုပါ။ Java မှာရှိတဲ့ String ဟာ int, float, char နဲ့ boolean ‌‌တွေလို Primitive type မျိုး မဟုတ်ပါဘူး။ အခြေခံအားဖြင့် char array တစ်ခုက String တစ်ခုရဲ့ အလုပ်လုပ်ပုံနဲ့တူပါတယ်။

3.png

String ကို ပုံမှန်အားဖြင့်နည်းလမ်း ၂ ခုနဲ့ အသုံးပြုလို့ရပါတယ်။

  1. Using string literal

  2. Using new keyword

(String Object ‌‌တွေကို တည်ဆောက်ဖို့ဆိုရင် java.lang.String class ကို အသုံးပြုရပါတယ်)


String str = "Hello World";

String Literal အသုံးပြုနည်းကတော့ ရှင်းပါတယ်။ double quote လုပ်ပြီး Variable ထဲ Initialize လုပ်ဖို့ပဲလိုပါတယ်။

5.png

Java မှာ String Objects ‌တွေသိမ်းဖို့အတွက် Special memory area ဆိုပြီးရှိတယ်။ အဲ့ဒီ Memory ကို String constant pool လို့လည်းခေါ်ပါတယ်။

String Literal တစ်ခု Create လုပ်တိုင်း Memory မှာနေရာမယူခင် JVM (Java Virtual Machine) ကနေ အလုပ်တစ်ခုလုပ်ပါတယ်။ အဲ့ဒါကထည့်လိုက်တဲ့ String value ‌က pool ထဲမှာ Value ရှိိိိိိိိိိိိိိပြီးသားဆိုရင် Object အသစ်မလုပ်ပဲ Value ကို လက်ခံနိုင်ဖို့အတွက် Reference ပဲပေးလိုက်ပါတယ်။ Pool ထဲမှာ တူညီတဲ့ Value မရှိဘူးဆိုရင်တော့ Object အသစ်တစ်ခုပြုလုပ်ရပါပြီ။

String str1 = "java"; 
String str2 = "java";

ဒီလိုအခြေနေမျိုးဆိုရင် str2 အနေနဲ့ Object အသစ်လုပ်စရာ မလိုတော့ပဲ Pool ထဲက java ဆိုတဲဲ့ value ကိုပဲအသုံးပြုလိုက်ရပါတယ်။ (ပုံပါအတိုင်း)

Memory efficient ဖြစ်တယ်လို့ ‌‌ပြောလို့ရပေမယ့် String class က immutable ဖြစ်တဲ့အတွက်ကြောင့် Value change တိုင်း Overwrite ဖြစ်မှာမဟုတ်ပဲ Object ‌‌တွေသာ အသစ်လုပ်မှာဖြစ်တဲ့အတွက်ကြောင့် String Concatenation တို့လို string manipulations ‌‌တွေအကြိမ်များစွာလုပ်ရင် Memory cost ကတော့ ပိုလို့ဆိုးပါလိမ့်မယ်


String str = new String("java");

6.png

new keyword နဲ့ create လုပ်မယ်ဆိုရင်တော့ JVM က String Literal လို value တူရှိလား မစစ်တော့ပဲဲ Object ၂ ခု ‌ဆောက်ပြီး Reference တစ်ခုသုံးတဲ့ ပုံစံပြုလုပ်မှာပါ။ Object ၂ ခုမှာ တစ်ခုကို Heap ထဲမှာသာထားပြီး Literal "java" value ကိုတော့ pool ထဲမှာထည့်ထားမှာဖြစ်ပါတယ်။ Reference ကတော့ Heap (non-pool) ကနေပဲယူမှာ ဖြစ်ပါတယ်။


4.png

"==" သည် Reference တူတာကိုသာစစ်ပြီး value တူမတူ မကြည့်ပါ။

 String str1 = "btt";  
 String str2 = "btt";  
 String str3 = new String("btt");
(str1 == str2)// true

str1 == str2 သည် String Literal များဖြစ်ပြီး Reference တူသောကြောင့် true အဖြေထွက်မည်။ (Reference တူသည်ဟု ‌ပြောခြင်းမှာ String Literal များဖြစ်ကြပြီး Value လည်းတူသောကြောင့်ဖြစ်သည်)

(str1 == str3) // false

Value တူသော်လည်း Reference မတူသောကြောင့် false ပြန်လိမ့်မည်။ (str1 သည် constant pool ထဲက Reference ဖြစ်ပြီး str3 သည် Heap ထဲက Reference ဖြစ်သောကြောင့်ဖြစ်သည်။

equals() method သည် Value content ‌‌ေ‌တွ တူရင်ရပြီဖြစ်လို့ Reference ကိုမကြည့်ပါ။

String str1 = "btt";  
String str2 = "btt";  
String str3 = new String("btt"); 

str1.equals(str2); // true
str1.equals(str3); // true

str1 နဲ့ str2 သည် value တူကြပြီး str1 နှင့် str3 သည်လည်း value တူကြသည်။ ဒါကြောင့် အားလုံး true ဖြစ်ကြပါတယ်။

ဒါကြောင့်မို့ String ‌‌တွေတူမတူစစ်တဲ့အခါ Content Value ‌‌တွေပဲ တူမတူ စစ်တာများတဲ့အတွက်ကြောင့် equals() method ကိုသာ သုံးသင့်ပါတယ်။

String သုံးနည်းမှာ String Literal နဲ့ New keyword ၂ ခုသာရှိတာမဟုတ်ပါဘူး။ StringBuffer နဲ့ StringBuilder စတဲ့ Mutable class ‌‌တွေလည်း ရှိပါသေးတယ်။ Immutable နဲ့ Mutable ကိုတော့ ‌နောက်မှဆက်ရှင်းပါမယ်။

More from this blog

Quantum Computer

ယနေ့ခေတ်သုံး Classical Computing နည်းပညာတိုးတက်လာတာနဲ့အမျှ Computer ဆိုတာနေ့စဥ်ဘဝတွင်မပါမဖြစ်တဲ့ အရာတစ်ခုလိုဖြစ်လာပါပြီ။ ယနေ့ခေတ် Classical Computer တွေက ဘယ်လိုအလုပ်တွေကို ဘယ်လောက်မြန်မြန်လုပ်ပေးမှာလဲ။ အခုကျွန်တော်တို့သုံးနေကြတဲ့ Digital Computer တ...

Feb 6, 20233 min read
Quantum Computer

Why UniCode?

ကျွန်တော်တို့ ယူနီကုဒ် ဘာကြောင့် သုံးသင့်တာလဲ အရင်မပြောခင် What is Unicode? ဆိုတာလေး အရင်ပြောပြပါမယ်။ (ယူနီကုဒ်ဘယ်လို ပြောင်းရလဲ ပြောမှာတော့မဟုတ်ဘူး ယူနီကုဒ် နဲ့ ပတ်သတ်တဲ့ Knowledge တွေပဲပြန် share မှာပါ)​ What is Unicode? Unicode ဆိုတာ Internationa...

Feb 6, 20234 min read
Why UniCode?

Why Physics is important for Computer Science?

Computer University တွေမှာ Physics ဘာသာရပ်ကို ဘာကြောင့်သင်ကြားရတာလဲ ပတ်သတ်ပြီး ကွန်ပျူတာကျောင်းသားတချို့မှာ မေးခွန်းတွေရှိနေပါတယ်။ အဲ့ဒီမေးခွန်းရဲ့အဖြေနဲ့ ဘာကြောင့် Physics ကို Information Technology ရဲ့ဘယ်နေရာတွေမှာ အသုံးချလဲဆိုတာ အမြင်လေးနည်းနည်း s...

Feb 6, 20234 min read
Why Physics is important for Computer Science?

Popular Mobile Hybrid Apps

Hybrid application ဆိုတာ ဘာလဲ Hybrid applications တွေအကြောင်းမပြောခင် လက်ရှိလူသိများတဲ့ Front-end application (mobile) အကြောင်းနည်းနည်း ပြောချင်ပါတယ်။ လက်ရှိ application development​ တွေထဲမှာ ရှိတာတွေကတော့ Native app, Web app, Hybrid app ဆိုပြီးတော့...

Feb 6, 20237 min read
Popular Mobile Hybrid Apps

Phyo Wai Nyunt's blog

7 posts