12. 12
Явцуу х рв лэлтө үүЯвцуу х рв лэлтө үү (narrow conversion)(narrow conversion)–ийн жишээ–ийн жишээ
short s=259;
byte b= s; // Энд компилятор алдаа заана
System.out.println(“s=”+s+”, b=”+b);
Алдааг засахдаа т р л хувиргах йлдэл хийнэ.ө ө үАлдааг засахдаа т р л хувиргах йлдэл хийнэ.ө ө ү
short s=259;
byte b=(byte) s; // Т р л хувиргалтө ө
System.out.println(“b=”+b);
Ийнх т р л хувиргалтыг хийхдээ дугуй хос хаалт ашиглана.үү ө өИйнх т р л хувиргалтыг хийхдээ дугуй хос хаалт ашиглана.үү ө ө
Одоо b хувьсагч ямар утга авах вэ?Одоо b хувьсагч ямар утга авах вэ? хэрэв s хувьсагчийн утга
byte төрлийн тодорхойлогдох мужаас (256) хэтэрсэн байвал
тодорхойлогдох мужийн хамгийн их утгыг модулиар жишиж
авна. s хувьсагчийн утга 259 (хоёртоор 100000011) бөгөөд
түүнийг 256 модулиар жишихэд 3 тул b=3; болно.
Төрөл хувиргалтТөрөл хувиргалт (Casting)(Casting)
13. 13
Зураг: short төрлийг
byte төрөлд хувиргах
Төрөл хувиргалтТөрөл хувиргалт (Casting)(Casting)
Эндээс харахад тоо нь х рв хө ө
т рлийнх тодорхойлогдох мужаасө өө
хэтэрвэл х рв х т рлийнө ө ө
тодорхойлогдох мужийн хамгийн их
утгыг модулиар жишиж авна.
Харин бодит тоог б хэл тоо рууү
х рв лэхдээ хэрчигдсэнө үү (transaction)
хувиргалтыг хийнэ. Х: бодит тоогӨ
б хэл тоо руу х рв лэхдээ т нийү ө үү үү
бутархай хэсгийг хэрчин хаяж б хэлү
хэсгийг нь авч ашиглах б г д угө өө
бодит тоо нь х рв х т рлийнхө ө ө өө
тодорхойлогдох мужаас хэтэрвэл м нө
л х рв х т рлийн тодорхойлогдохө ө ө
мужийн хамгийн их утгыг модулиар
жишиж авна.
14. 14
Т-ийн х рв лэлт: Функц дуудалтӨҮ ө үүТ-ийн х рв лэлт: Функц дуудалтӨҮ ө үү
Т р л х рв лэлтийн р нэг хэрэглээ бол функц дуудалт юм.ө ө ө үү өөТ р л х рв лэлтийн р нэг хэрэглээ бол функц дуудалт юм.ө ө ө үү өө
Энэ нь функцыг дуудахдаа зарлагдсан т рл с нь р т рлийнө өө өө өЭнэ нь функцыг дуудахдаа зарлагдсан т рл с нь р т рлийнө өө өө ө
аргументтай дуудах ед яригдана.үаргументтай дуудах ед яригдана.ү
Дараах н хц лд функцыг дуудахдаа т ний аргументынө ө үүДараах н хц лд функцыг дуудахдаа т ний аргументынө ө үү
т рл с р т рлийн аргументтай дуудаж болдог. нд:ө өө өө ө Үүт рл с р т рлийн аргументтай дуудаж болдог. нд:ө өө өө ө Үү
дуудаж буй аргументын т р л нь уул функцын аргументынө өдуудаж буй аргументын т р л нь уул функцын аргументынө ө
т рл с рг н р ихг й байх ёстой.ө өө ө ө өө өө үт рл с рг н р ихг й байх ёстой.ө өө ө ө өө өө ү
Жишээ нь:Жишээ нь:
float frads=2.34567f;
double d;
d= Math.cos(frads);
System.out.println("d="+d);
Math.cos() нь double төрлийн 1
аргументтай стандарт функц билээ .
Энд түүнийг float төрлийн аргументтай
дуудаж байна. float төрлийн өргөн
double төрлийн өргөнөөс ихгүй тул
төрлийг автоматаар хөрвүүлэх учраас
компилятор алдаа заахгүй
15. 15
Энгийн т рлийн х рв лэлт: Функц дуудалтө ө үүЭнгийн т рлийн х рв лэлт: Функц дуудалтө ө үү
Харин функцыг дуудаж буй аргументын т р л нь уул функцынө өХарин функцыг дуудаж буй аргументын т р л нь уул функцынө ө
аргументын т рл с рг н р их байвал компилятор алдаа заахө өө ө ө өө өөаргументын т рл с рг н р их байвал компилятор алдаа заахө өө ө ө өө өө
б г д энэ тохиолдолд т р л хувиргалтө өө ө өб г д энэ тохиолдолд т р л хувиргалтө өө ө ө (casting)(casting) хийнэ.хийнэ. Жишээ:Жишээ:
class A{
public int inc(int i){
return i+1;
}
}
public class test2{
public static void main(String args[]){
double d=12.0;
int k;
A a= new A();
k=a.inc(d);
System.out.println("K="+k);
}
}
int төрлийн 1 аргументтай
double төрлийн 1 аргументтай дуудахад
компилятор алдаа заана.
k=a.inc((int)d); болгож өөрчлөх замаар Casting хийх
16. 16
Т р л х рв лэлтийн р нэг хэрэглээ бол арифметикө ө ө үү өөТ р л х рв лэлтийн р нэг хэрэглээ бол арифметикө ө ө үү өө
илэрхийлэл юм. Ямар нэг илэрхийллийн р д нг хувьсагчид олгохү үилэрхийлэл юм. Ямар нэг илэрхийллийн р д нг хувьсагчид олгохү ү
ед т р л таарахг й бол хувиргалт хийдэг. нийгү ө ө ү Үүед т р л таарахг й бол хувиргалт хийдэг. нийгү ө ө ү Үү
илэрхийллийн т р л хувиргалт гэнэ.ө өилэрхийллийн т р л хувиргалт гэнэ.ө ө
Илэрхийлэлд орсон үйлдлээс хамааран гахах утгынИлэрхийлэлд орсон үйлдлээс хамааран гахах утгын
. .нарийвчлал янз бүр айдаг Жишээ нь. .нарийвчлал янз бүр айдаг Жишээ нь
byte a=60;
byte b=50;
byte c=100;
int d=a*b/c;
a*ba*b гэсэн завсрын үйлдлийн үр дүнгэсэн завсрын үйлдлийн үр дүн bytebyte төрлийн мужаастөрлийн мужаас
хэтэрнэ. Иймдхэтэрнэ. Иймд JavaJava хэлэнд бүххэлэнд бүх bytebyte болонболон shortshort төрлийнтөрлийн
хувьсагчид орсон операндын үр дүнг автоматаар өргөтгөнхувьсагчид орсон операндын үр дүнг автоматаар өргөтгөн
intint төрөлд хөрвүүлэн үр дүн болох 3000 гэсэн утгыг завсрынтөрөлд хөрвүүлэн үр дүн болох 3000 гэсэн утгыг завсрын
intint төрлийн хувьсагчид хадгална. Ийнхүү автомат төрөлтөрлийн хувьсагчид хадгална. Ийнхүү автомат төрөл
хувиргалтыг дээрх илэрхийллийн хувьд хэрэгжүүлж байна.хувиргалтыг дээрх илэрхийллийн хувьд хэрэгжүүлж байна.
Энгийн т рлийн х рв лэлт:ө ө үүЭнгийн т рлийн х рв лэлт:ө ө үү
ИлэрхийлэлИлэрхийлэл