JP SS 7 Typy i operacje


Języki Programowania
Typy i operacje
Primitive types: numerical values
ż Types for numerical values
ż Integers (-3, 0, 1, 5500, -29567, & )
ż Type byte
ż Type short
ż Type int
ż Type long
ż Real numbers (0.0, -23.45, 4.67093)
ż Type float
ż Type double
R. Pełka: Języki Programowania, 2008 2
Integers
ż Different sizes
ż different sizes (# bits)
allocated in memory for storing the value
ż different range of possible values
Type # bits Range
byte
8 bits -128 to 127
short
16 bits -32768 to 32767
int
32 bits -2147483648 to 2147483647
long
64 bits -9223372036854775808 to 9223372036854775807
(L,l - long; O - octal; 0x - hex)
A. Poniecki: Języki Programowania, 2012 3
Real numbers
ż Different sizes
ż different sizes (# bits)
ż Floating point numbers (Float and Double)
ż Double
ż higher precision (more decimals)
ż smaller and bigger values (smaller and bigger power values)
Type # bits Range
float
32 bits - 3.402823466385289 *10 +38 to - 1.401298464 *10 -45 (F, f)
1.401298464324817E-45 to 3.4028234663852886E38(F, f)
double
64 bits -1.7976931348623157*10+308 to - 4.94065645841247 *10 -324
4.94065645841246544E-324 to 1.7976931348623157E308
R. Pełka: Języki Programowania, 2008 4
Typy rzeczywiste cd.
ż Typ float: 6, 7 cyfr znaczących
ż Typ double: 15 cyfr znaczących
np: 0.125 to 2-3
w zapisie hex: 0x1.0p-3
- wykładnik potęgi p (podstawa 2) zamiast E (10)
jest przedstawiany w notacji dziesiętnej, natomiast
mantysa w hex.
ż Dla liczb przekraczających zakres:
- dodatnia i ujemna nieskończoność
double.positive_infinity, float.negative_infinity
- NaN (ang. Not a Number)
A. Poniecki: Języki Programowania, 2012 5
Typy rzeczywiste cd.
public class LitLicz {
public static void main(String[] args) {
System.out.println( 10 + 0x10 );
System.out.println( 10/3 );
System.out.println( 10./3 );
System.out.println( 10d/3);
System.out.println( 2147483648L );
System.out.println( 2147483647 + 1 );
System.out.println( 2147483647L + 1 ); } }
ż Wynik działania programu:
26
3
3.3333333333333335
3.3333333333333335
2147483648
-2147483648
R. Pełka: Języki Programowania, 2008 6
2147483648
Arithmetic operators
ż Basic numerical operators
+ Addition
% Subtraction
* Multiplication
/ Division
% Remainder (mod)
ż Operators precedence
ż First priority
* / %
ż Second priority
+ %
ż Operators with higher priority are applied first
ż Operators with same priority are applied from left to right
R. Pełka: Języki Programowania, 2008 7
Arithmetic operators
ż Basic numeric operators: comparisons
== Equality
< Less than
> Greater than
!= Inequality
<= Less than or equal to
>= Greater than or equal to
R. Pełka: Języki Programowania, 2008 8
Type conversions
ż Implicit conversion (niejawne konwersje)
z możliwością powstania niedokładności
byte short int long float double
ż Explicit conversion: casting (jawne konwersje,
rzutowanie)
()
ż Example
double f;
int i = 3;
f =(double) i;
y = (byte) 300;
A. Poniecki: Języki Programowania, 2012 9
Type conversions
ż Przykład niejawnej konwersji typów byte (do int):
byte a, byte b=4. byte c=5;
w operacji a = b * c; zgłoszony zostaje błąd.
Prawidłowa postać równania:
a = (byte) (b * c);
A. Poniecki: Języki Programowania, 2012 10
Variable declaration
ż Arithmetic Variable Declaration
variable s name
byte b;
variable s type
int i;
short j;
long k;
float f;
double d;
ż If no values assigned: 0 by default
R. Pełka: Języki Programowania, 2008 11
Variable names and declarations
ż Nazwy jako ciągi znaków:
ż sekwencja jednego lub więcej znaków.
ż początek od litery lub znaku  _
ż może zawierać wyłącznie litery, cyfry, znak '_', znak '$'
i i1 i2 anInteger afloat
ż Gdzie umieszczać definicje zmiennych?
ż Przed początkiem metod.
R. Pełka: Języki Programowania, 2008 12
Variable assignments
ż Numerical variables assignment
=
assignment operator
ż arithmetic_expression is one of:
ż Arithmetic value
ż Variable of numeric primitive type
ż Combination of values and/or variables with numeric
operators
ż Expression evaluates to same type as the variable type
Warning: implicit conversions may change types and
results.
R. Pełka: Języki Programowania, 2008 13
Przypisanie do zmiennych
Assignment Evaluated as
double f = 13.0 / 5.0;
2.6
double f = 13 / 5;
2.0 // implicit conversion (int -> double)
int i = 13 / 5;
2
long l = 200;
200 // implicit conversion (int -> long)
R. Pełka: Języki Programowania, 2008 14
Inkrementacja i dekrementacja
ż The increment and decrement operators use only
one operand
ż The increment operator (++) adds one to its operand
ż The decrement operator (--) subtracts one from its
operand
ż The statement
count++;
is functionally equivalent to
count = count + 1;
R. Pełka: Języki Programowania, 2008 15
Inkrementacja i dekrementacja - uwagi
ż The increment and decrement operators can be applied in
postfix form:
count++ uses old value in the expression,
then increments
ż or prefix form:
++count increments then uses new value in
the expression
ż When used as part of a larger expression, the two forms can
have different effects
ż Because of their subtleties, the increment and decrement
operators should be used with care
ż x++ + x++ `" 2*(x++)
ż x++ + x `" x + x++
ż Such effects are known as side-effects.
Take care of them!
R. Pełka: Języki Programowania, 2008 16
Przypisanie i operator jednocześnie
ż There are many assignment operators in Java, including
the following:
Operator Example Equivalent To
+= x += y x = x + y
-= x -= y x = x - y
*= x *= y x = x * y
/= x /= y x = x / y
%= x %= y x = x % y
R. Pełka: Języki Programowania, 2008 17
Numerical values are not Strings
ż What is the difference between:
int i = 35;
String s =  35 ;
ż Assuming the above declarations, are these assignments legal?
i =  35 ;
String
i = s;
s = i;
int
ż of course, not
R. Pełka: Języki Programowania, 2008 18
Typ prymitywny: char
ż character  a ,  A ,  _ ,  9 ,  ? ,  Ł ,   ,  \ 
ż Type char
ż possible values: all 216 (65536)
characters encodable in the Unicode
character set (16-bit values)
ż considered numeric values
Type # bits Values
char 16 0x0 to 0xffff (hexadecimal notation)
ż Java supports the UNICODE but many
software tools like editors and operating
systems do not support UNICODE
ż When c is the char, then c++ is the next
character and c is the previous one
ż Non printable chars eg.: \n, \t, \r
char code \uF9BC
R. Pełka: Języki Programowania, 2008 19
UNICODE
Unicode (zwany czasem po polsku Unikod)
- komputerowy zestaw znaków mający w
zamierzeniu obejmować wszystkie pisma
używane na świecie. Definiują go dwa
standardy - Unicode oraz ISO 10646. Znaki
obu standardów są identyczne. Standardy
te różnią się w drobnych kwestiach, m.in.
Unicode określa sposób składu.
R. Pełka: Języki Programowania, 2008 20
Typ char cd.
ż Od Java 5.0 zestaw unicode został rozszerzony.
ż Współrzędne kodowe (code points) zostały pogrupowane
w 17 przestrzeniach numeracyjnych (code planes)
ż Pierwsza zwana jest wielojęzyczną (BMP):
ż U+0000 do U+FFFF
ż Pozostałe 16 stanowią obszary surogatów:
ż U+10000 do U+10FFFF
ż Kodowane są jako pary jednostek kodowych (z 2048
nieużywanych w BMP)
ż Np. znak o współrzędnej U+1056B: U+D835 oraz U+DD6B
ż Niepolecany typ do wykorzystania w programach.
A. Poniecki: Języki Programowania, 2012 21
char  comparisons
ż Same as for other primitive types
==
Equality
<
Less than
>
Greater than
!=
Inequality
<=
Less than or equal to
>=
Greater than or equal to
ż What is the difference between:
int i = 2; // numeric value 2
char a =  2 ; // equivalent to numeric value 50
String s =  2 ; // a Java (String) Object
R. Pełka: Języki Programowania, 2008 22
Primitive types: boolean
ż boolean primitive type, names as for other
primitive types
ż type boolean
ż values: true false
George Boole
ż type conversion
the English mathematician (1815-1864)
ż no type conversion!
ż relational operators
ż apply on operands of numeric primitive data types
ż return boolean value
a < b a less than b?
a <= b a less than or equal than b?
a > b a greater than b?
a >= b a greater than or equal to b?
ż 2 < 4 , 4 <= 0 , 3.14 > 9
R. Pełka: Języki Programowania, 2008 23
Operators
ż Equality Operators
ż Apply on operands of primitive data type
ż Return boolean value
Are a and b equal? (same primitive value?)
Equality a == b
Are a and b not equal? (different primitive value?)
Inequality a != b
ż (2 == 4) , ( @ != 6) , (true == false)
ż Boolean Logical Operators
ż Apply on boolean expressions
ż Return boolean value
AND x && y
true if both x and y are true, false otherwise false
x || y
true if either or both x, y are true, otherwise false
OR
ż (2 > 4) && (5 < 0), !true || true
R. Pełka: Języki Programowania, 2008 24
Java operators  summary
Arithmetic Op. : + ++ - -- * / %
Relational Op. : > >= < <= == !=
Logical Op. : && || !
Bit Op. : & | ^(xor) ~ (not) << (przes.) >> >>> (z 0)
Operators
Conditional Op. : ? : (wyr_bool ? wart1 : wart2)
of Java
Assign Op. : = += -= *= /= %= &= ^= |= >>=
<<= >>>=
Casting Op. : (Data Type)
Array Op. : [] ([] [] , itd.)
Method Op. : () .
instanceof Op. : instanceof operator instanceof określa, czy
obiekt jest danego typu, np. obiekt instanceof typ (przy rzutowaniu)
R. Pełka: Języki Programowania, 2008 25
Pierwszeństwo operatorów
Examples
ż Operator precedence
ż not !
boolean b = (2 == 4);
ż relational operators
boolean c = (b & true);
< <= > >=
ż equality operators
== !=
ż logical and &&
ż logical or ||
Expression Evaluated as Result
(4 == 2) && (1 < 4) (4 == 2) && (1 < 4) false
!false || (2 >= 8) (!false) || (2 >= 8) true
false | false & true (false | (false & true)) false
(4 == 2) == true ((4 == 2) == true) false
 @ != 6 ( @ != 6 ) true
R. Pełka: Języki Programowania, 2008 26
Operators precedence
Operator Association Precedence
Left Assoc. (High)
() [] .
Left Assoc.
! ~ ++ -- + - (Data Type)
Left Assoc.
* / %
Left Assoc.
+ -
Left Assoc.
<< >> >>> (Shift left, right, right unsigned)
Left Assoc.
< <= > >= instance
Left Assoc.
== !=
Left Assoc.
&
Left Assoc.
^
Left Assoc.
|
Left Assoc.
&&
Left Assoc.
||
Left Assoc.
? :
Left Assoc. (Low)
= += -= *= /= %= &= ^= |= <<= >>= >>>=
R. Pełka: Języki Programowania, 2008 27
Wrapper classes  klasy  opakowane
ż Sometimes it is necessary for a primitive
type value to be an Object, rather than
just a primitive type.
ż Some data structures only store Objects.
ż Some Java methods only work on Objects.
ż Wrapper classes also contain some
useful constants and a few handy
methods.
R. Pełka: Języki Programowania, 2008 28
Wrapper classes
ż Each primitive type has an associated wrapper class:
char Character
int Integer
long Long
float Float
double Double
ż Each wrapper class Object can hold the value that would normally
be contained in the primitive type variable, but now has a number of
useful static methods.
R. Pełka: Języki Programowania, 2008 29
Wrapper classes
Integer number = new Integer(46); // Wrapping
Integer num = new Integer( 908 );
Integer.MAX_VALUE // gives maximum integer
Integer.MIN_VALUE // gives minimum integer
Integer.parseInt( 453 ) // returns 453
Integer.toString(653) // returns  653
int aNumber = number.intValue(); // aNumber is 46
R. Pełka: Języki Programowania, 2008 30
Constants
ż Things that do not vary
ż unlike variables
ż will never change
ż Syntax:
ż final typeName variableName = value;
ż Example
ż final int DELAY_MS = 120;
ż Constant names in all upper case
ż Java convention, not compiler/syntax requirement
ż Some predefined constants available:
ż E, PI (java.lang.Math)
R. Pełka: Języki Programowania, 2008 31


Wyszukiwarka

Podobne podstrony:
JP SS 6 Klasy i obiekty
JP SS 2 algorytmy i podstawy programowania
JP SS 5 podstawy Java
JP SS 4 start Java
JP SS 5 podstawy Java (3)
JP SS Interfejs graficzny
JP SS 1 podstawy JP
JP SS 4 wprowadzenie Java
JP SS 1 podstawy JP
JP SS 5 podstawy Java
JP SS 7 Klasy i obiekty
JP SS 6 BlueJ
JP SS 3 jezyk C
JP SS 3 jezyk C
JP SS 4 start Java
JP SS 8 Instrukcje, pętle
JP SS 9 Tablice IO wyjątki
JP SS 3 jezyk C

więcej podobnych podstron