- Decimal (base 10)
- Octal (base 8)
- Hexadecimal ( base 16)
int a=343;
int b=25,656; // xeta verecek cunki , var.
Octal Literallar-Burada reqemler yalniz 0-8 araliginda olur ve on sekilci kimi 0 qebul edir.Meselen:
int a=06;
int b=07;
int c=010; // int c=08; yazsaydim xeta verecekdi.
Octallarin hesablanma qaydalari:
int a=018; yazsam yene xeta verecek cunki terkibinde 8 var ,Dedikki ancaq 8-e qeder olan reqemleri qebul edir.
public class Test{
public static void main(String [] args){
int a=017;
System.out.print(a);
}
}
CONSOLE: 15.
Bunlari hesablayanda ilk once 0-dan sagda yerlesen reqeme baxilir.eger 0-dan sonra 1-dirse bu o demekdirki 1-dene 8 olmalidi.eger 2-dise 2-dene 8 yeni 16 olmalidi ve s.Ondan sonra yerlesen reqem ise bu 8,16 ve s.-nin uzerine elave olunur.bu numunemizde 0-dan sonra 1 gelib.Bu o demekdirki 1 dene 8 var.sonra 7 geldiyi ucun 7+8=15 olub.Bu qeder sade.
Hexadecimal Literals-16 ferqli simvol istifade ederek qurulub.0-dan 16-ya qeder olan hexadecimal reqemler asagidaki kimi olur.
0 1 2 3 4 5 6 7 8 9 a b c d e f
yeni 9-dan boyuk sayilar A B C D E F herfleri ile yazilir.Java boyuk veya balaca herfleri istifade edir extra reqemler ucun.0x veya 0X on sekilci kimi elave olunur.Meselen:
int a=0X0001;
int b=0x7fffffff;
int z=0XDeadCdfe;
Eger yuxarida gosterilen herfler-den basqa 1 herf elave etsem o zaman xeta verecek.yeni:
int a=0X987UYtr; // xet verecek.Cunki UYtr herfleri a-e veya A-E araligina daxil deyildir.
Yuxarida dediklerimiz default olaraq int kimi mueyyen olunur.,amma onlar hemcinin long kimide mueyyen oluna biler ve sonuna suffix kimi l veya L herfi elave oluna biler.
long a=0XFFFL;
long b=11111L;
Floating-Point Literals-Float-i yazanda mutleq axirinda F veya f suffix qoyulmalidi.Eger qoyulmasa bu compile error verecek.Yeni o double kimi tesevvur oluncaq ve deyer itkisi bas verecek.
float f=23.647747; // Compile error,guman olunurki deyer itkisi ola biler.
float f=23.46736F; // OK,Cunki F suffixi var.
Double-da ise sonuna suffix kimi D veya d qoyulada biler qoyulmayada biler.
double d=3636.93838;
double d=737.737732D; // teleb olunmur olada biler olmayada biler.
Boolean Literals-boolean deyerler yalniz true ve false ola biler.
boolean a=true; // Legal;
boolean b=0; // Compile error.
Char Literals-char deyerler ' ' icinde yazilir.(single quotes-tek dirnaq).cut dirnaqda yazilsa xeta verece
char a='a';
char b='@';
Unicode deyerleride istifade etmek olar.prefix kimi qarsisina \ u yazmaqla.
char a='\u004E'; // N herfi
Character-ler 16 bitlik yer tuturlar.Yeni 65535-e qeder olan reqemler ala bilerler hemcinin.
char a=0X987; // hexadecimal literal
char b=983; // int literal;
char c=(char)70.000; // burada cast teleb olunur.Cunki 70.000 16-bitlik zenciri(65535) kecir.
char a=(char)-98; // gulmelidir ancaq legaldir.
char c=' \" '; // cut dirnaq;( " )
char d=' \n '; // yeni setir.
Primitive Assignments
byte a=8;
byte b=8;
byte c=a+b; // bu kod normalda sehvsiz gorunur.Ancaq compile olmayacaq.Cunki a+b toplananda cixilanda bolunende ve vurulanda int kimi ozunu aparir.ona gore mutleq cast emeliyyati yerine yetirilmelidir.
byte c=(byte)a+b;
Umumiyyetle int-den balaca olan tiplerin hamisinda bu hal bas verir.(byte,short,char)
char a='o';
char b='g';
char v=a+b; // xeta verecek,cahr-lari toplayanda onlari int kimi toplayir.ona gore cast olmalidi.
char v=(char) a+b;
Integer deyerler explicitly castt olmadan double-a menimsedile biler.Cunki her hansi 1 integer deyer 64 bit double tuta biler.Bundan elave olaraq double informasiyanin 1 cox hissesini tuta biler.
double a=100L;
int a=227.977; // illegaldir.cunki double--> int 64-->32
bunun ucun cast etmek lazimdir.
int a=(int ) 227.977; // legal cast
netice ise tam hisse olaraq cixacaq.yeni 227 cap olunacaq.yeni burada deyer itkisi bas verecek.
her1 floating point deyerler implicitly olaraq double-dir.float deyil.meselen; 32.3 double hesab edilir.eger bu double-i float-a menimsetmek istesek o zaman mutleq onu floata cast etmek lazimdir. 64-->32
float f=(float) 32.3;
float f=32.3f;
float f=32.3F;
Eger byte b=5;
b+=5; yazsaq bu zaman hec 1 problem olmaz.netice 10 olar.
byte b=5;
b=(byte ) (b+5); yazsaq ise compile olmayacaq cast olmadan.
+=, -=,*= , /= bunlar implicitly cast edir.
Hiç yorum yok:
Yorum Gönder