18 Nisan 2012 Çarşamba

JAVADA LITERALS

Javada integer reqemler 3 yolla temsil olunur:

  • Decimal (base 10)
  • Octal (base 8)
  • Hexadecimal ( base 16)
Decimal Literallar-normal yazilan reqemlerdir.yeni hec 1 prefix on sekilcisi qebul etmirler.
                        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