<!--类和静态方法-->
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-->
所有数据类型在所有机器中的大小都是相同的