Java
46 subscribers
42 photos
36 files
137 links
Download Telegram
Data Types in Java
انواع مختلفی از دیتاها در جاوا وجود داره که به دو نوع تقسیم میشن
Primitive data types
Non-primitive data types
Primitive data type
اولین نوع از دیتاها در جاواست و از قبل تعریف شده هستن
که تعداد اونا ۸ تاست
boolean

char

byte

short

int

long

float

double
اما non primitive type ها
نوعی از داده ها هستن که بصورت کلاس تعریف میشن
مثل String, Array و .....
و کلاس‌هایی که خودمون تعریف میکنیم
مقدار و سایز اولیه primitive type ها به شکل زیر هست

Data-Type  Default-Value  Default-size

boolean    false          1 bit

char       '\u0000'       2 byte

byte       0              1 byte

short      0              2 byte

int        0              4 byte

long       0L             8 byte

float      0.0f           4 byte

double     0.0d           8 byte
چندتا مثال
class Simple {  

    public static void main (String[] args) {  

        int a = 10;  

        int b = 10;  

        int c =  a + b;  

        System.out.println(c);  

    }

}

--------------------------------------------

Output: 
20


جمع دوتا متغیر در جاوا
class Simple {  

    public static void main (String[] args) {  

        int a = 10;  

        float f = a;  

        System.out.println(a);  

        System.out.println(f);  

    }

}

--------------------------------------------

Output:

10

10.0


ریختن دیتا یک نوع متغیر به نوع دیگر
در این مثال مقدار a ریخته میشه در متغیر f
ینی int به float
به این کار میگن Widening یا گسترش دادن
انواع Widening ها رو میشه به صورت زیر دید

- From a byte to a short, an int, a long, a float, or a double

- From a short to an int, a long, a float, or a double

- From a char to an int, a long, a float, or a double

- From an int to a long, a float, or a double

- From a long to a float or a double

- From a float to a double


در واقع تبدیل شدن نوع دیتا کوچکتر به بزرگتر به راحتی در جاوا امکان‌پذیر هست
class Simple {  

    public static void main(String[] args) {  

        float f = 10.5f;  

        //int a = f; // Compile time error  

        int a = (int) f;  

        System.out.println(f);  

        System.out.println(a);  

    }

}

--------------------------------------------

Output:

10.5

10


ریختن نوع دیتا بزرگتر در کوچک تر به طور مستقیم امکان پذیر نیست
بخاطر همین در خط ۴ در صورت کامنت نبودن خط، compile error خواهیم داشت
بخاطر همین در خط ۵ میگیم متغیر f رو می خوایم به int تبدیل کنیم
ینی از متغیر float مقدار اضافه شو بردار بریز تو متغیر int
به اینکار میگن Narrowing (Type Casting)
انواع type casting ها رو میشه به صورت زیر دید

- From a byte to a char

- From a short to a byte or a char

- From a char to a byte or a short

- From an int to a byte, a short, or a char

- From a long to a byte, a short, a char, or an int

- From a float to a byte, a short, a char, an int, or a long

- From a double to a byte, a short, a char, an int, a long, or a float


از نوع دیتا بزرگتر به نوع دیتا کوچکتر
class Simple {  

    public static void main(String[] args) {  

        // Overflow  

        int a = 130;  

        byte b = (byte) a;  

        System.out.println(a);  

        System.out.println(b);  

    }

}

--------------------------------------------

Output:

130

-126


وقتی داریم از type casting استفاده می‌کنیم باید به این نکته توجه کنیم که امکان داره دیتامون خراب بشه، چون داریم اونو از یک نوع بزرگتر به کوچکتر تبدیل می‌کنیم
در این مثال میبینیم که مقدار متغیر a بزرگتر از اندازه‌ای هست که درb جا بشه، (بیشترین مقدار byte ۱۲۷ هست)، بخاطر همین بر می‌گرده و از اول شروع به پرشدن میشه (اولین مقدار byte -۱۲۸ هست)
دقت کنید که اینجا هیچ گونه error ی وجود نداره
این اتفاق رو بهش میگن Overflow یا سرریز شدن
class Simple {  

    public static void main (String[] args) {  

        byte a = 10;  

        byte b = 10;  

        // byte c = a + b; 

        // Compile Time Error: because a + b = 20 will be int  

        byte c = (byte) (a + b);  

    System.out.println(c);  

    }

}

--------------------------------------------

Output:

20


در این مثال به دلیل اینکه جمع دو عدد a و b برابر یه عدد به صورت int خواهد بود حتما باید با استفاده از casting جمع دو عدد در نوع byte رو دوباره به byte تبدیل کنیم
و خب در غیر این صورت کامپایل error خواهیم داشت
Operators in java
Java Unary Operator Example: ++ and --


class OperatorExample {  

    public static void main (String args[]) {  

        int x = 10;  

        System.out.println(x++);//10 (11)  

        System.out.println(++x);//12  

        System.out.println(x--);//12 (11)  

        System.out.println(--x);//10  

    }

}

--------------------------------------------

Output:

10

12

12

10


در این مثال عملات‌های ++ و — رو نشون میده
همون طور که میبینید اگر عملات در جلوی متغیر
(x++)

وجود داشته باشه اول متغیر خونده میشه و بعد عملیات روی متغیر اعمال میشه
اما اگر عملات قبل از متغیر
(--x)

باشه، اول عملیات اجرا میشه و بعد متغیر خونده میشه
Java Unary Operator Example 2: ++ and --


class OperatorExample {  

   public static void main (String args[]) {  

      int a = 10;  

      int b = 10;  

      System.out.println(a++ + ++a);//10+12=22  

      System.out.println(b++ + b++);//10+11=21    

   }

}

--------------------------------------------

Output:

22

21
Java Unary Operator Example: ~ and !


class OperatorExample {  

   public static void main (String args[]) {  

      int a = 10;  

      int b = -10;  

      boolean c = true;  

      boolean d = false;  

      System.out.println(~a);//-11 (minus of total positive value which starts from 0)  

      System.out.println(~b);//9 (positive of total minus, positive starts from 0)  

      System.out.println(!c);//false (opposite of boolean value)  

      System.out.println(!d);//true  

   }

}

--------------------------------------------

Output:

-11

9

false

true


در این مثال دو نوع علامت مخالف وجود داره ! و ~
اولین علامت مخالف ~ هست که در واقع قرینه یک عدد رو به ما میده اما نه بصورت ریاضی
مثلا قرینه عدد 5 میشه -5 و بر عکسش
اما در اینجا اینطور نیست و وقتی میگیم قرینه عدد ۵ چون ۰ رو هم جز اعداد مثبت حساب میشه پس ما ۶ تا عدد مثبت داریم که قرینه اون میشه -۶
و برعکس اون قرینه عدد -۵ میشه ۴، چون ۵تا عدد مثبت از ۰ میشه ۴
و علامت ! هم که در مخالف true و false بودن متغیر کاربرد داره
Java Arithmetic Operator Example


class OperatorExample {  

    public static void main (String args[]) {  

        int a = 10;  

        int b = 5;  

        System.out.println(a + b);//15  

        System.out.println(a - b);//5  

        System.out.println(a * b);//50  

        System.out.println(a / b);//2  

        System.out.println(a % b);//0  

    }

}

--------------------------------------------

Output:

15
5
50
2
0