先补充一个关于之前学习数据类型的问题,就是小于4字节的类型的处理问题,byte short char这三个数据类型在存储时仍然保留其类型,当这三个类型参与运算时,CPU都是以4字节为基础进行读写内存的,因此这三个类型参与运算时会统一提升为int类型然后参与运算,例如:
首先是String类型与int之间的转换问题,这是个重点,这在我们日常登陆APP的时候就会用到,例如:
1.int -> String 在JAVA中任何其他类型与字符串对象“+”都会将其他类型转换为字符串类型然后进行的字符串的拼接操作,任意整型+“”;//int + String -> String + Sting;如下:
2.调用String提供的valueOf方法
3.String -> int 调用整型包装类Intger的parseInt方法,要调用这个放法,字符串必须是由纯数字组成的字符串,若包含除了数字以外的其他类型,char都不行,调用这个方法就会报错,还有超过了整型的保存范围,也会报错,如下:
第二个内容,算数运算符,计算结果,要么是是整数,要么是小数。
1.基本的数学四则运算 + - * / % ,值得注意的是int/ int = int,会自动省略小数部分 int a = 3 / 2 = 1;
2.增量运算符 += -= *= %=
3.自增/自减运算符 ++ --,分别表示给自变量+1和-1,而前置自增 =>表示先进行自增操作而后取值 ++a,后置自增 =>表示先取值,然后进行自增操作 a++,如下:
第三个内容,关系计算符:计算结果为布尔值,要么是ture,要么是false,== ,!=,<,>,<=,>=; 如下:
第四个内容,逻辑运算符,运算结果也为布尔值 &&,||,!;
1.逻辑与:&&,就是现实生活中的并且关系,语法规则:表达式1 && 表达式2,表达式1和表达式2都必须为布尔表达式,得到的也为boolean值,当且仅当表达式1和表达式2都为true,逻辑与才会返回true,有一个false,直接返回false!
2.逻辑或 ||,就是现实生活中的或者关系,语法规则:表达式1 || 表达式2,两个表达式都为false,才会返回false,有一个true,则返回true。
3.逻辑取反!。
4.关于逻辑运算符的短路求值问题,表达式1 && 表达式2:当表达式1为false,表达式2压根不会计算,直接返回false,表达式1 || 表达式2:当表达式1为true,表达式2不会计算,直接返回true,如下:
第五个内容,位运算符:直接在二进制位上进行操作的运算符,& | ~ ^
1.按位与 &,如果两个进制位都为1,则返回1,否则返回0。
2.按位或 | ,两个二进制位都为0,返回0,否则返回1。
3.按位异或:两个二进制位相同返回0,不同返回1
可以巧用异或运算定位一组数据中不同的一个数,不断进行异或运算,所有出现两次的数最终都会经过异或运算变为0,只出现一次的这个数和0做异或运算就是本身,最终的结果就是只出现一次的数字,例如:
5. 按位取反 ~:符号位也会变化,正数变为负数,负数变为正数,结果减一。
第六个内容,位移运算 << , >>:直接在二进制位上进行操作的运算符,x << 1:二进制位最右侧补一个0,相当于x * 2, x >> 1:二进制位最左补个0,相当于x / 2,如下·:
第七个内容,条件运算符,三目运算符,条件判断的一个简化写法:x = 表达式1 ? 表达式2 : 表达式3,若表达式1是真的,则x取表达式2的值,若表达式1是假的,则x取表达式3的值,另外表达式2和表达式3必须是同类型的,否则会发生隐式转换,三目运算符不能单独存在,必须使用一个变量来接收三目运算符的返回值。
接下来是程序结构的学习内容,程序逻辑就是书写代码执行代码的顺序。
第一种是顺序结构,按照代码书写的顺序一行行顺序执行(多线程场景下,执行顺序不一定严格按照书写顺序执行)
多线程场景
第二种是分支结构
1.if.. else分支
2.if... else if..else分支,可以有多个else if分支,但每个分支都要是互斥的,非此即彼,只能走一个分支
以上就是我对学习运算符与程序逻辑的一个总结