<!--类和静态方法-->
package com.one;
public class Print {
public static void print(String s){
System.out.println(s);
}
}
<!--测试静态导入的方法-->
package com.one;
// 静态导入方法
import static com.one.Print.*;
public class TestPrint {
public static void main(String[] args) {
System.out.println("Nomal Print");
// 静态导入的方法输出
print("Simple Print");
}
}
String类支持"+"和"+="
优先级顺序
赋值分类
对象类型赋值:将“引用”从一个地方复制到另一个地方( 一个对象对应多个引用,一个引用可能有0或1个对象 ),类似指针,由于原来的指针指向新的对象,所以原来的对象将被垃圾回收器清理,具体可见以下实现
class Tank{
int level;
}
public class Assignment{
public static void main(String[] args){
// 赋值前
Tank t1 = new Tank();
Tank t2 = new Tank();
t1.level = 9;
t2.level = 47;
print(t1+","+t2);
// 第一次赋值
t1 = t2;
print(t1+","+t2);
// 第二次赋值
t1.level = 22;
print(t1+","+t2);
}
}
/*
output:
9,47
47,47
22,22
*/
别名现象解析
原理分析
操作符种类
Random方法
如果种子参数相同,则生成的随机数也相同,见下方
package com.four;
import java.util.Random;
public class TestRandom {
public static void main(String[] args) {
// 种子数相同
Random random1 = new Random(10);
Random random2 = new Random(10);
int i = random1.nextInt();
int j = random2.nextInt();
System.out.println("i="+i);
System.out.println("j="+j);
}
}
/* output:
i=-1157793070
j=-1157793070
*/
一元加号:将数据类型修改为int类型 <!--比如原类型为char,添加加号输出后,结果是对应的ASCII码的值-->
package com.four;
public class TestAdd {
public static void main(String[] args) {
int i = 1;
char j = 'c';
short k = 5;
System.out.println(i);
System.out.println(j);
System.out.println(k);
System.out.println("添加加号");
System.out.println(+i);
System.out.println(+j);
System.out.println(+k);
System.out.println("添加减号");
System.out.println(-i);
System.out.println(-j);
System.out.println(-k);
}
}
/* output
1
c
5
添加加号
1
99
5
添加减号
-1
-99
-5
*/
// /Users/toyz/Package/Note/Thinking in Java/Practice/Operators/src/com/four/TestAdd.java
分类
后缀递增、后缀递减:先生成值,后执行运算
<!--测试代码如下-->
package com.four;
import static util.Print.*;
public class TestIncreasing {
public static void main(String[] args) {
int i = 1;
int j = i;
print("i = "+i);
// 前缀递增
j = ++i;
print("前缀递增后");
print("i = "+i);
print("j = "+j);
i = 1;
j = i;
// 前缀递减
j = --i;
print("前缀递减后");
print("i = "+i);
print("j = "+j);
i = 1;
j = i;
// 后缀递增
j = i++;
print("后缀递增后");
print("i = "+i);
print("j = "+j);
i = 1;
j = i;
// 后缀递减
j = i--;
print("后缀递减后");
print("i = "+i);
print("j = "+j);
i = 1;
j = i;
}
}
/* output
i = 1
前缀递增后
i = 2
j = 2
前缀递减后
i = 0
j = 0
后缀递增后
i = 2
j = 1
后缀递减后
i = 0
j = 1
*/
// /Users/toyz/Package/Note/Thinking in Java/Practice/Operators/src/com/four/TestIncreasing.java
分类
==和!=比较的是对象的引用 <!--即使对象的内容相同,两个对象的引用也不同-->
package com.five;
public class TestEquals {
public static void main(String[] args) {
// 使用==比较 基本数据类的相同内容的不同对象
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.print("使用==比较 相同内容的不同对象:");
System.out.println(n1 == n2);
// 使用equals比较 基本数据类的相同内容的不同对象
System.out.print("使用equals比较 相同内容的不同对象:");
System.out.println(n1.equals(n2));
// 使用==比较 自定义类的相同内容的不同对象
Dog dog1 = new Dog();
dog1.setName("spot");
dog1.setSays("Ruff!");
Dog dog2 = new Dog();
dog2.setName("spot");
dog2.setSays("Ruff!");
System.out.print("使用==比较 自定义类的相同内容的不同对象:");
System.out.println(dog1 == dog2);
// 使用equals比较 自定义类的相同内容的不同对象
System.out.print("使用equals比较 相同内容的不同对象:");
System.out.println(dog1.equals(dog2));
}
}
/* output
使用==比较 相同内容的不同对象:false
使用equals比较 相同内容的不同对象:true
使用==比较 自定义类的相同内容的不同对象:false
使用equals比较 相同内容的不同对象:false
*/
// /Users/toyz/Package/Note/Thinking in Java/Practice/Operators/src/com/five/TestEquals.java
总结
分类
演示过程:当判断到(j<2)时为false时,程序不会执行后续判断,直接输出false
package com.seven;
import static util.Print.*;
public class ShortCircuit {
public static void main(String[] args) {
int i = 1;
int j = 2;
int k = 3;
print("res:"+((i<2)&&(j<2)&&(k<2)));
}
}
直接常量的后缀字符标注了类型
常用类型
程序设计时使用e代表“10的幂次”,但是在科学和工程领域,e代表自然对数的基数
运算方式
运算规则
进制运算
使用二进制表示负数
获得补码(反码加一):11010001
<!--原码末尾为零,反码加一需要向前进位-->
byte和short类型使用位移运算时,会先转换成int类
if-else操作符,形式为boolean-eep ? value1 : value2
当结果为true时,就计算value1;当结果为false,就计算value2
package com.thirteen;
import static util.Print.*;
public class PrintString {
public static void main(String[] args) {
int x = 0 , y = 1 , z = 2;
String s = "x,y,z";
System.out.println(s+x+y+z);
System.out.println(s+(x+y+z));
System.out.println(x+y+z+s);
System.out.println(x+""+s);
System.out.println(""+x);
System.out.println(x+y+z);
}
}/* output
x,y,z012
x,y,z3
3x,y,z
0x,y,z
0
3
*/
“类”数据类型不允许类型转换,除非使用特殊方法
截尾
舍入
表达式中的最大数据类型决定了表达式最终结果的数据类型 <!--比如,double乘以float,结果为double-->
所有数据类型在所有机器中的大小都是相同的