409 lines
7.3 KiB
Java
409 lines
7.3 KiB
Java
//: operators/AllOps.java
|
|
// Tests all the operators on all the primitive data types
|
|
// to show which ones are accepted by the Java compiler.
|
|
|
|
public class AllOps {
|
|
// To accept the results of a boolean test:
|
|
void f(boolean b) {}
|
|
void boolTest(boolean x, boolean y) {
|
|
// Arithmetic operators:
|
|
//! x = x * y;
|
|
//! x = x / y;
|
|
//! x = x % y;
|
|
//! x = x + y;
|
|
//! x = x - y;
|
|
//! x++;
|
|
//! x--;
|
|
//! x = +y;
|
|
//! x = -y;
|
|
// Relational and logical:
|
|
//! f(x > y);
|
|
//! f(x >= y);
|
|
//! f(x < y);
|
|
//! f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
f(!y);
|
|
x = x && y;
|
|
x = x || y;
|
|
// Bitwise operators:
|
|
//! x = ~y;
|
|
x = x & y;
|
|
x = x | y;
|
|
x = x ^ y;
|
|
//! x = x << 1;
|
|
//! x = x >> 1;
|
|
//! x = x >>> 1;
|
|
// Compound assignment:
|
|
//! x += y;
|
|
//! x -= y;
|
|
//! x *= y;
|
|
//! x /= y;
|
|
//! x %= y;
|
|
//! x <<= 1;
|
|
//! x >>= 1;
|
|
//! x >>>= 1;
|
|
x &= y;
|
|
x ^= y;
|
|
x |= y;
|
|
// Casting:
|
|
//! char c = (char)x;
|
|
//! byte b = (byte)x;
|
|
//! short s = (short)x;
|
|
//! int i = (int)x;
|
|
//! long l = (long)x;
|
|
//! float f = (float)x;
|
|
//! double d = (double)x;
|
|
}
|
|
void charTest(char x, char y) {
|
|
// Arithmetic operators:
|
|
x = (char)(x * y);
|
|
x = (char)(x / y);
|
|
x = (char)(x % y);
|
|
x = (char)(x + y);
|
|
x = (char)(x - y);
|
|
x++;
|
|
x--;
|
|
x = (char)+y;
|
|
x = (char)-y;
|
|
// Relational and logical:
|
|
f(x > y);
|
|
f(x >= y);
|
|
f(x < y);
|
|
f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
//! f(!x);
|
|
//! f(x && y);
|
|
//! f(x || y);
|
|
// Bitwise operators:
|
|
x= (char)~y;
|
|
x = (char)(x & y);
|
|
x = (char)(x | y);
|
|
x = (char)(x ^ y);
|
|
x = (char)(x << 1);
|
|
x = (char)(x >> 1);
|
|
x = (char)(x >>> 1);
|
|
// Compound assignment:
|
|
x += y;
|
|
x -= y;
|
|
x *= y;
|
|
x /= y;
|
|
x %= y;
|
|
x <<= 1;
|
|
x >>= 1;
|
|
x >>>= 1;
|
|
x &= y;
|
|
x ^= y;
|
|
x |= y;
|
|
// Casting:
|
|
//! boolean bl = (boolean)x;
|
|
byte b = (byte)x;
|
|
short s = (short)x;
|
|
int i = (int)x;
|
|
long l = (long)x;
|
|
float f = (float)x;
|
|
double d = (double)x;
|
|
}
|
|
void byteTest(byte x, byte y) {
|
|
// Arithmetic operators:
|
|
x = (byte)(x* y);
|
|
x = (byte)(x / y);
|
|
x = (byte)(x % y);
|
|
x = (byte)(x + y);
|
|
x = (byte)(x - y);
|
|
x++;
|
|
x--;
|
|
x = (byte)+ y;
|
|
x = (byte)- y;
|
|
// Relational and logical:
|
|
f(x > y);
|
|
f(x >= y);
|
|
f(x < y);
|
|
f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
//! f(!x);
|
|
//! f(x && y);
|
|
//! f(x || y);
|
|
// Bitwise operators:
|
|
x = (byte)~y;
|
|
x = (byte)(x & y);
|
|
x = (byte)(x | y);
|
|
x = (byte)(x ^ y);
|
|
x = (byte)(x << 1);
|
|
x = (byte)(x >> 1);
|
|
x = (byte)(x >>> 1);
|
|
// Compound assignment:
|
|
x += y;
|
|
x -= y;
|
|
x *= y;
|
|
x /= y;
|
|
x %= y;
|
|
x <<= 1;
|
|
x >>= 1;
|
|
x >>>= 1;
|
|
x &= y;
|
|
x ^= y;
|
|
x |= y;
|
|
// Casting:
|
|
//! boolean bl = (boolean)x;
|
|
char c = (char)x;
|
|
short s = (short)x;
|
|
int i = (int)x;
|
|
long l = (long)x;
|
|
float f = (float)x;
|
|
double d = (double)x;
|
|
}
|
|
void shortTest(short x, short y) {
|
|
// Arithmetic operators:
|
|
x = (short)(x * y);
|
|
x = (short)(x / y);
|
|
x = (short)(x % y);
|
|
x = (short)(x + y);
|
|
x = (short)(x - y);
|
|
x++;
|
|
x--;
|
|
x = (short)+y;
|
|
x = (short)-y;
|
|
// Relational and logical:
|
|
f(x > y);
|
|
f(x >= y);
|
|
f(x < y);
|
|
f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
//! f(!x);
|
|
//! f(x && y);
|
|
//! f(x || y);
|
|
// Bitwise operators:
|
|
x = (short)~y;
|
|
x = (short)(x & y);
|
|
x = (short)(x | y);
|
|
x = (short)(x ^ y);
|
|
x = (short)(x << 1);
|
|
x = (short)(x >> 1);
|
|
x = (short)(x >>> 1);
|
|
// Compound assignment:
|
|
x += y;
|
|
x -= y;
|
|
x *= y;
|
|
x /= y;
|
|
x %= y;
|
|
x <<= 1;
|
|
x >>= 1;
|
|
x >>>= 1;
|
|
x &= y;
|
|
x ^= y;
|
|
x |= y;
|
|
// Casting:
|
|
//! boolean bl = (boolean)x;
|
|
char c = (char)x;
|
|
byte b = (byte)x;
|
|
int i = (int)x;
|
|
long l = (long)x;
|
|
float f = (float)x;
|
|
double d = (double)x;
|
|
}
|
|
void intTest(int x, int y) {
|
|
// Arithmetic operators:
|
|
x = x * y;
|
|
x = x / y;
|
|
x = x % y;
|
|
x = x + y;
|
|
x = x - y;
|
|
x++;
|
|
x--;
|
|
x = +y;
|
|
x = -y;
|
|
// Relational and logical:
|
|
f(x > y);
|
|
f(x >= y);
|
|
f(x < y);
|
|
f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
//! f(!x);
|
|
//! f(x && y);
|
|
//! f(x || y);
|
|
// Bitwise operators:
|
|
x = ~y;
|
|
x = x & y;
|
|
x = x | y;
|
|
x = x ^ y;
|
|
x = x << 1;
|
|
x = x >> 1;
|
|
x = x >>> 1;
|
|
// Compound assignment:
|
|
x += y;
|
|
x -= y;
|
|
x *= y;
|
|
x /= y;
|
|
x %= y;
|
|
x <<= 1;
|
|
x >>= 1;
|
|
x >>>= 1;
|
|
x &= y;
|
|
x ^= y;
|
|
x |= y;
|
|
// Casting:
|
|
//! boolean bl = (boolean)x;
|
|
char c = (char)x;
|
|
byte b = (byte)x;
|
|
short s = (short)x;
|
|
long l = (long)x;
|
|
float f = (float)x;
|
|
double d = (double)x;
|
|
}
|
|
void longTest(long x, long y) {
|
|
// Arithmetic operators:
|
|
x = x * y;
|
|
x = x / y;
|
|
x = x % y;
|
|
x = x + y;
|
|
x = x - y;
|
|
x++;
|
|
x--;
|
|
x = +y;
|
|
x = -y;
|
|
// Relational and logical:
|
|
f(x > y);
|
|
f(x >= y);
|
|
f(x < y);
|
|
f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
//! f(!x);
|
|
//! f(x && y);
|
|
//! f(x || y);
|
|
// Bitwise operators:
|
|
x = ~y;
|
|
x = x & y;
|
|
x = x | y;
|
|
x = x ^ y;
|
|
x = x << 1;
|
|
x = x >> 1;
|
|
x = x >>> 1;
|
|
// Compound assignment:
|
|
x += y;
|
|
x -= y;
|
|
x *= y;
|
|
x /= y;
|
|
x %= y;
|
|
x <<= 1;
|
|
x >>= 1;
|
|
x >>>= 1;
|
|
x &= y;
|
|
x ^= y;
|
|
x |= y;
|
|
// Casting:
|
|
//! boolean bl = (boolean)x;
|
|
char c = (char)x;
|
|
byte b = (byte)x;
|
|
short s = (short)x;
|
|
int i = (int)x;
|
|
float f = (float)x;
|
|
double d = (double)x;
|
|
}
|
|
void floatTest(float x, float y) {
|
|
// Arithmetic operators:
|
|
x = x * y;
|
|
x = x / y;
|
|
x = x % y;
|
|
x = x + y;
|
|
x = x - y;
|
|
x++;
|
|
x--;
|
|
x = +y;
|
|
x = -y;
|
|
// Relational and logical:
|
|
f(x > y);
|
|
f(x >= y);
|
|
f(x < y);
|
|
f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
//! f(!x);
|
|
//! f(x && y);
|
|
//! f(x || y);
|
|
// Bitwise operators:
|
|
//! x = ~y;
|
|
//! x = x & y;
|
|
//! x = x | y;
|
|
//! x = x ^ y;
|
|
//! x = x << 1;
|
|
//! x = x >> 1;
|
|
//! x = x >>> 1;
|
|
// Compound assignment:
|
|
x += y;
|
|
x -= y;
|
|
x *= y;
|
|
x /= y;
|
|
x %= y;
|
|
//! x <<= 1;
|
|
//! x >>= 1;
|
|
//! x >>>= 1;
|
|
//! x &= y;
|
|
//! x ^= y;
|
|
//! x |= y;
|
|
// Casting:
|
|
//! boolean bl = (boolean)x;
|
|
char c = (char)x;
|
|
byte b = (byte)x;
|
|
short s = (short)x;
|
|
int i = (int)x;
|
|
long l = (long)x;
|
|
double d = (double)x;
|
|
}
|
|
void doubleTest(double x, double y) {
|
|
// Arithmetic operators:
|
|
x = x * y;
|
|
x = x / y;
|
|
x = x % y;
|
|
x = x + y;
|
|
x = x - y;
|
|
x++;
|
|
x--;
|
|
x = +y;
|
|
x = -y;
|
|
// Relational and logical:
|
|
f(x > y);
|
|
f(x >= y);
|
|
f(x < y);
|
|
f(x <= y);
|
|
f(x == y);
|
|
f(x != y);
|
|
//! f(!x);
|
|
//! f(x && y);
|
|
//! f(x || y);
|
|
// Bitwise operators:
|
|
//! x = ~y;
|
|
//! x = x & y;
|
|
//! x = x | y;
|
|
//! x = x ^ y;
|
|
//! x = x << 1;
|
|
//! x = x >> 1;
|
|
//! x = x >>> 1;
|
|
// Compound assignment:
|
|
x += y;
|
|
x -= y;
|
|
x *= y;
|
|
x /= y;
|
|
x %= y;
|
|
//! x <<= 1;
|
|
//! x >>= 1;
|
|
//! x >>>= 1;
|
|
//! x &= y;
|
|
//! x ^= y;
|
|
//! x |= y;
|
|
// Casting:
|
|
//! boolean bl = (boolean)x;
|
|
char c = (char)x;
|
|
byte b = (byte)x;
|
|
short s = (short)x;
|
|
int i = (int)x;
|
|
long l = (long)x;
|
|
float f = (float)x;
|
|
}
|
|
} ///:~
|