SlideServe
Menu
Préférences
© SlideServe · v2026

Literals

dugan avatar
38 diapositives · 667 Views · Jul 24, 2014

Literals. float x = 2.5;. Why does this produce an error?. Literals. float x = 2.5;. Floating-point default datatype is ‘double’. Literals. float x = (float) 2.5;. Solution 1: cast 2.5 to float. Literals. float x = 2.5f;. Solution 2: use ‘f’ or ‘F’ identifier. Literals.

Literals - slide 1
01 / 38Literals
1 / 17

Télécharger la présentation

Literals
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Literals float x = 2.5; • Why does this produce an error?

  2. Literals float x = 2.5; • Floating-point default datatype is ‘double’.

  3. Literals float x = (float) 2.5; • Solution 1: cast 2.5 to float

  4. Literals float x = 2.5f; • Solution 2: use ‘f’ or ‘F’ identifier

  5. Literals char c = ‘a’; • char literals are delimited by single quotes

  6. Literals char c = ‘a’; int x = 3 + c; System.out.println( x );

  7. numeric boolean integral floatingpoint character integer boolean char byte short int long float double 16 + 8 +/- 16 +/- 32 +/- 64 +/- 32 +/- 64 +/-

  8. Literals char c = ‘a’; int x = 3 + c; System.out.println( x ); • char is a numeric integral type (i.e. evaluates to an integer • What is the output?

  9. Literals • char c = ‘a’; char c = ‘\u0061’; • Unicode escape sequence is backslash + u + 4 digit hex • Unicode can be used ANYWHERE in java code

  10. Literals ch\u0061r c = ‘\u0061’;

  11. Numeric Promotion int x = 3 / 2 * 4 • 3,2 and 4 are int literals • Integer Division! • Result of 3 / 2 is : 1 • Therefore, x=3/2*4 is the same as x=1*4 • x = 4 !

  12. Numeric Promotion int x = 3 / 2 * 4 f

  13. Numeric Promotion int x = 3 / 2 * 4 f • The ‘f’ denotes ‘float’ datatype

  14. Numeric Promotion int x = 3 / 2 * 4 f • The ‘f’ denotes ‘float’ datatype • The binary operator ‘/’ must have same datatype on both sides. Therefore, 2 is promoted to float datatype

  15. Numeric Promotion int x = 3 / 2 * 4 f • The ‘f’ denotes ‘float’ datatype • The binary operator ‘/’ must have same datatype on both sides. Therefore, 2 is promoted to float datatype • Now the binary operator ‘*’ must promote its right hand operand. 4 is promoted to float.

  16. Numeric Promotion int x = 3 / 2 * 4 f • The right hand expression evaluates to 6.0 • This will not compile because float to integer is a narrowing conversion requiring an explicit cast

  17. Numeric Promotion int x = (int) 3 / 2 * 4 f • Explicit cast ! • System.out.print (x) : 4

  18. Numeric Promotion float x = 3 / 2 * 4 f • cast not needed • System.out.print (x) : 6.0

  19. Numeric Promotion float x = 3 / 2 * 4 f • Another method!

  20. Numeric Promotion float x = 3.0 / 2 * 4 • Another method! • Literals are promoted to which datatype???

  21. Numeric Promotion float x = 3.0 / 2 * 4 • Another method! • Literals are promoted to ‘double’ datatype

  22. Numeric Promotion float x = 3.0 / 2 * 4 • Another method! • Literals are promoted to ‘double’ datatype • This expression will not compile because it requires an explicit narrowing conversion from double to float

  23. Numeric Promotion float x = (float) 3.0 / 2 * 4 • Finished!

  24. Numeric Promotion float x = (float) 3.0 / 2.0 * 4 • Does not compile.. Cast only operates on left hand operand 3.0

  25. Numeric Promotion float x = (float) (3.0 / 2.0) * 4 • Phew!

  26. Finally ! double x = 3 / 2 * 4.0 • evaluates left to right • 3 / 2 is integer division, result is 1 • Int 1 is promoted to double 1.0 • 1.0 * 4.0 evaluates to double 4.0

  27. Literals int x = 2147483647 + 1; System.out.println( x ); • What is the output?

  28. Literals 0 1111111 11111111 11111111 11111111 Sign bit: +/- • Int datatype is 32 bits: 1 sign bit + 31 bits to represent the number • Sign bit: 0 means positive, 1 means negative

  29. Literals 0 1111111 11111111 11111111 11111111 + 0 0000000 00000000 00000000 00000001 = 1 0000000 00000000 00000000 00000000 Sign bit is now 1

  30. Literals 2,147,483,647 0 1111111 11111111 11111111 11111111 + 0 0000000 00000000 00000000 00000001 = 1 0000000 00000000 00000000 00000000 1 - 2,147,483,648

  31. Implicit Narrowing Conversion 0 1000000 10000001 • What is the decimal value of this bit pattern?

  32. Implicit Narrowing Conversion 0 1000000 10000001 • 16513 ( 16384 + 128 + 1 )

  33. Implicit Narrowing Conversion 0 1000000 10000001 short x = 16513; ‘16513’ is an integer literal. Default type is ‘int’. No cast required here because integral types (including ‘char’) can perform ‘implicit narrowing conversion’ as long as the value is in range. ( float c = 2.5 is illegal, because floating point types cannot perform implicit narrowing conversion.)

  34. Implicit Narrowing Conversion • Rule 1: Both datatypes must be integer types • Rule 2: Value must be within range of target datatype

  35. loss of precision with casting 0 1000000 10000001 short x = 16513; byte b = (byte) x;

  36. loss of precision with casting short x = 16513; byte b = (byte) x; 0 1000000 10000001 bye, bye….

  37. loss of precision with casting short x = 16513; byte b = (byte) x; 0 1000000 10000001 Value of x is -127