3.Java操作符
2019-02-15 本文已影响0人
云木杉
操作符
java这些基础的东西,我已经用了很久,潜意识来讲已经牢记于心,但看到公司老大那么6的以Java很基础的东西解决我困恼已久的问题,还是惊艳到了,还是再回去研究研究基础是正道。
赋值
-
基本数据类型赋值:做赋值操作时,左边为变量,右边为值,例如i = 0;而书中的意思是右边的值需要一个物理控件去储存(就是Java的内存);
-
对象赋值
创建一个对象Kand,里面有一个参数level,创建这个对象的两个引用A,B,给两个引用分别赋值两个数值,然后把B赋值给A,当前A的旧引用被回收机制回收,A,B引用指向同一个数值,再修改任何一个引用的数值时,另一个数值也会跟着变化。尽量避免对象赋值操作。
public static void main(String[] args) { Tank t1 = new Tank(); Tank t2 = new Tank(); t1.level = 9; t2.level = 47; System.out.println(t1.level); // 9 System.out.println(t2.level); // 47 System.out.println("----------"); t1 = t2; System.out.println(t1.level); // 47 System.out.println(t2.level); // 47 System.out.println("----------"); t1.level = 27; System.out.println(t1.level); // 27 System.out.println(t2.level); // 27 System.out.println("----------"); t2.level = 270; System.out.println(t1.level); // 270 System.out.println(t2.level); // 270 }
Java操作符
加号(+)及减号(-)其实都是比较常见的基础操作,但乘号(*)及除号(/)的操作还是要说一下,虽然一直感觉自己是会的,但确实不会
- 乘号(*) 当两个整数型做乘法时结果为整数,但是当有一方为浮点数时,那结果即为浮点数
- 除号(/) 当两个整数型做除法时,结果为整数,如果除不净的话会取整(丢失小数位),当其中一位为浮点数时,获取到的值才为正确的。
- 取余(%) 从整数除法中产生余数。
Random类
-
初始化时,如果没有传递任何参数,将会以当前时间作为随机数生成器的种子
-
初始化时,有携带参数(提供种子),随机数生成器对于特定的种子值总是产生相同的随机数序列。
public static void main(String[] args) { // Create a seeded random number generator: Random rand = new Random(68); int i, j, k; // Choose value from 1 to 100: j = rand.nextInt(100) + 1; print("j : " + j); k = rand.nextInt(100) + 1; print("k : " + k); }
自动递增,自动递减
一直以来对运算符这块儿,都没有什么特别的概念,觉得挺简单的东西,但日子一长容易忘记,翻过来再看的话也是麻烦,这里记录一下
前缀式/后缀式
- 前缀式自动递增/递减(++i,--i),其实就是先运算后赋值的操作,例如++i,原始值为1的话,经过运算+1以后再赋值,输出即为2。先运算再赋值;
- 后缀式自动递增/递减(i++,i--),是一种先赋值后运算的操作,例如i++的原始值为1的话,会先赋值,后运算,即输出为1,后赋值为2。先赋值再运算;
public static void main(String[] args) {
int i = 2, j = 2;
System.out.println("i++ = " + i++); // 2
System.out.println("i = " + i); // 3
System.out.println("++i = " + ++i); // 4
System.out.println("i = " + i); // 4
System.out.println("j-- = " + j--); // 2
System.out.println("j = " + j); // 1
System.out.println("--j = " + --j); // 0
System.out.println("j = " + j); // 0
}
关系操作符
-
操作符==和!=比较的是对象的引用地址。基本数据类型用的也是==和!=操作符,这也是我一直模糊不清也又没真正去深究过的东西。
-
Object的euqals()方法,用来比较所有对象的实际内容。
public class Equivalence { 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 } }
类型转换操作符
-
对基本数据类型执行算数运算或按位运算,只要比类型int小(char、short、byte)运算之前都会转为int。
-
按位操作符用来操作整数基本数据类型中的单个“比特(bit)”
关系操作符
- 三位运算符有返回值返回,ifelse运算没有返回值,但比三位运算符更好理解。