// 当一个表达式中存在多个操作符时,操作符的优先级决定了各部分的计算顺序 // 强烈推荐:使用括号明确规定运算顺序
文件目录结构
Main.java
class person
{ int age=1984;}
class dynasity {
static void birthday(person x)
{ x.age++; }
public static void main(String[] args)
{
person Anthony= new person();
person Carmelo = Anthony;
birthday(Anthony);
System.out.println(Carmelo.age+" "+Anthony.age);
}
}
class Tank
{ int level=11;}
public class Main {
String i="2002"; //
String j="0815";
String s= "zzh";
Integer value = 127; //另外Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值在-128~127之间时才使用常量池。
Short value1 = 127;
public static void main(String[] args)
{
Tank t1=new Tank(),t2=new Tank();
dynasity era = new dynasity();
dynasity.main(null);
t1.level=9;
t2.level=47;
System.out.println(t1.level);
System.out.println(t2.level); // 变量可以被修改
Main value = new Main();
System.out.println(Integer.valueOf(value.value1).equals(value.value)); // true
//System.out.println(value.value1==value.value);
System.out.println(value.i+ value.j+value.s);
}
}
进制转换(binary.java)
public class binary {
public static void main(String[] args) {
//十六进制
int hexInt = 0x1A2B;
long hexLong = 0x1234567890ABCDEFL;
float hexFloat = 0x1.0p-4f; // 0.0625
double hexDouble = 0x1.2345p+10; // 4660.0
//字面值后的尾随字符标志着它的类型。若为大写或小写的L,代表long;大写或小写的F,代表float;大写或小写的D,则代表double
//八进制
int octInt = 0100;
long octLong = 01234567L;
//小数
float floatVal = 3.14f; //编译器通常会将小数作为双精度数(double)处理,所以对单精度变量赋值时一定要尾随f
double doubleVal = 2.718;
double scientificDouble = 6.022e23; // 6.022 x 10^23 科学计数法
double index = 31.4E-1; // 指数计数法:3.14=31.4E-1=0.314e1
// 进制准换
Integer n1 = 10;
String 二进制 = Integer.toBinaryString(n1); //”1010”
String 十六进制 = Integer.toHexString(10); //”a”
String 八进制 = Integer.toOctalString(10); //”12”
System.out.println(二进制);
System.out.println(十六进制);
System.out.println(八进制);
}
}
产生随机数(LearnRandom.java)
import java.util.*;
public class learnRandom {
public static void GRN(Random r, int count, String type) {
for (int i = 0; i < count; i++) {
switch (type) {
case "int":
System.out.println(r.nextInt());
break;
case "double":
System.out.println(r.nextDouble());
break;
case "boolean":
System.out.println(r.nextBoolean());
break;
}
}
}
public static void main(String[] args) {
Random r1 = new Random(10); //指定一个种子数。相同种子数的Random对象,相同次数生成的随机数字是相同的。
Random r2 = new Random(10);
Random r = new Random();
GRN(r, 10, "boolean");
for (int i = 0; i < 10; i++) {
System.out.println(r1.nextInt());
System.out.println(r2.nextInt());
}
System.out.println(r.nextInt()); //生成完全随机
// 生成一个随机的boolean值,生成true和false的值几率都是50%
System.out.println(r.nextBoolean());
//生成一个随机的double值,数值介于[0, 1.0)之间
System.out.println(r.nextDouble());
//生成一个随机的介于[0, n)的int值,包含0而不包含n。
System.out.println(r.nextInt(10));
}
}
逻辑判断(LogicJudgement.java)
import java.lang.*;
//! =和= =也适用于所有对象引用
//但要注意:不是比较对象本身,而是比较对象的引用
public class LogicJudgement {
public static void main(String[] args) {
{
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1 == n2);//false
System.out.println(n1 != n2); //true
System.out.println(n1.equals(n2)); //true
// 大多数Java类库都实现了equals(),但由于equals()的默认行为还是比较对象的引用。所以应在自己的新类中重新定义equals()
}
}
}
位运算.java
public class 位运算 {
public static void main(String[] args) {
Integer value1 = 0b1111;
Integer value2 = 0b0000;
int a = 0b1010; // 10 in decimal
int b = 0b1100; // 12 in decimal
//位与运算符(&)
int c = a & value1;
int d = a & value2;
//位或运算符 |
int e = a | value1;
int f = a | value2;
//位异或运算符 ^
int g = a ^ value1;
int h = a ^ value2;
//复合赋值运算符
int b1 = (b &= 0b1111);
int b2 = (b |= 0b1111);
int b3 = (b ^= 0b1111);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
System.out.println(g);
System.out.println(h);
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
}
}
字符操作符.java
public class 位运算 {
public static void main(String[] args) {
Integer value1 = 0b1111;
Integer value2 = 0b0000;
int a = 0b1010; // 10 in decimal
int b = 0b1100; // 12 in decimal
//位与运算符(&)
int c = a & value1;
int d = a & value2;
//位或运算符 |
int e = a | value1;
int f = a | value2;
//位异或运算符 ^
int g = a ^ value1;
int h = a ^ value2;
//复合赋值运算符
int b1 = (b &= 0b1111);
int b2 = (b |= 0b1111);
int b3 = (b ^= 0b1111);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
System.out.println(g);
System.out.println(h);
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
}
}
移位运算.java
public class 移位运算符 {
public static void main(String[] args){
// 左移位运算符 <<
int a1 = 0b0001;
int b1 = a1 << 2;
// 右移位运算符 >>
int a2 = 0b1000;
int b2 = a2 >> 2;
// 无符号右移位运算符 >>>
int a3 = -1; // 0b11111111111111111111111111111111 in binary
int b3 = a3 >>> 8; b = 0b00000000000000000000000011111111
// 移位复合赋值运算符
int a4 = 0b0001;
a4 <<= 2;
a4 >>= 1;
a4 >>>= 2;
//三元运算符 ?:
int a5 = 5, b5 = 10;
int max = (a5 > b5) ? a5 : b5; // max = 10
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(a4);
System.out.println(max);
}
}
类型转换.java
public class 类型转换 {
public static void main(String[] args){
//窄化转换: 精度损失
double d = 3.14;
int i = (int) d; // i = 3
//扩展转换:
int i1 = 5;
double d1 = (double) i1; // d = 5.0
//复合赋值与强制转换
int i2 = 128;
byte b1 = (byte) (i2 += 200); // b = -28 要把运算结果赋回给较小的类型,就必须使用强制类型转换。
System.out.println(i);
System.out.println(d1);
System.out.println(b1);
// // 不允许的转换:
//boolean b = true;
//int i = (int) b; // 编译错误: 无法将 boolean 转换为 int
}
}