在上一篇的博客中,我回顾到Java中的关键字,标识符等知识点,而今天这篇博文将回顾Java的,哦,不,不止Java,据本人了解,几乎在所有的语言中的基础阶段,都会存在这些运算,只是语法不一样而已。
今天回顾的先做一个总结:1.运算符;2.实现键盘录入;3.流程控制语句;4.控制跳转语句。
运算符:千万不要被字面所迷惑,千万不要认为运算符就是用于数学运算的工具。数据,不仅是数学角度的运算数据。
(1).算术运算符:+,/,-,*,%,++,--;
+:有三种用法:
1.数学上的加法;
2.数学上的正号;
3.这是最关键上的一点:字符串连接符;在这个用法上面,容易出现一个计算障眼法:
String str = "hello" + 'a' + 2;
String str2 = 2 + 'a' + "hello";
在上方的两个运算中,是存在加法的两种用法,这就是待会要讲到的流程控制语句;
要记住一个关键点就是ASCII码表:a的十进制值是97;然后记住,默认运算从左到右;分析第一个:hello和a先运算+;字符串和一个char类型相加,那么就是字符串连接符的功能,然后helloa和2相加,所以str的值就是helloa2;
分析第二个:2和a运算:int类型和char类型运算,实际就是运算其二者的十进制值,所以接下来就是99和hello运算,+表现字符串连接符的功能,所以str2的值是99hello。
-:减法就是用于数学角度的运算操作。
/和%:二者都是运用于数学角度的除法:而得出的结果就是:/是商,%是余数。
++和--:自增,自减一个单位;但是在使用的时候就是有区别;如果单独操作那么就是自增或者自减,运算符放在前面或者后面都是一样是运算效果,例:int a = 100; a++; ++a; //得出的结果第一个a值变为101,第二个运算:a值变为102;
但是 用于操作运算中,就是运算符的放前放后就是不一样,例:运算符放在操作前面使用,则是先自增(自减),在参与操作。int a = 10; int b = ++a; 这样的b的值就是11,a的值也是11。那么运算符放在操作后面使用,则是先参与操作,在自增(自减)操作。int a1 = 10; int b1 = a1++; 那么b1的值就是先得到a1的值10,那么a1在进行自增操作,所以a1的值最后变为11。
(2).赋值运算符: =,+=,*=,/=,%= 等;
其中“=”号就是最基本的赋值运算符,例:int i = 10; 其运行的操作就是把10这个值赋值给int类型的变量i。
而其余的则为扩展的赋值运算符:而其中就有一个特殊的特点,就是蕴含了强制转换。例:short s = 1; s = s + 1; 其中我们知道short为单精度的数据类型,而这样的代码块是报错的,因为s为short类型,而s = 1,1 + 1为默认int类型,所以:short s = 1; s = (short) s + 1;这样的运算符才是正确的。所以:short s = 1; s += 1; 这样的代码块才不会,报错,因为s = (short) s + 1; === s += 1;
(3).比较运算符:==,!=,>,<,>=,<=等,而比较运算符的运算结果始终都是boolean类型;
(4).逻辑运算符:&,|,^,!,&&,|| 等,在其中,逻辑运算符是用于为boolean类型搭桥的公式,所以,在逻辑运算符的左右都为boolean类型;
&:在运算符的左右中:如果有false则总体为false;
|:在运算符的左右中:如果有true则总体为true;
^:在运算符的左右中:如果相同总体则为false,不同总体则为true;
!:运算符的右边如果为true则为false,如果为false,则总体为true;
&&:在运算符的左右中:如果左边为false,则右边不执行,执行之后的总体结果就是和&运算判断方法一致,而这种效果就称为短路效果;
||: 在运算符的左右中:如果左边为true,则右边不执行,执行之后的总体结果就是和 | 运算结果一致,
(5).位运算:就是^的一种特殊的功能;用于数值上的运算;数值a和数值b异或两次,那么该运算的值就是数值a的值,不变。
所以,其中就可以运用到两个数据的交换,例: int a = 10; int b = 20; b = a ^ b ; a= a ^ b ; b = a ^ b ;
2.在数据运算中,我们总是只有运用固定的字符,来进行数据的操作,如果想修改数据,只有重新运行一遍代码,这样,大大的加大了程序的调试难度,那么我们就要实现人机交互,实现键盘录入的功能:这样大大的提高了代码的灵活性。这样我们就是需要运用到后面内容的匿名类功能:那么键盘录入的格式:
(1).导包: import java.utli,Scanner;
(2).创建Scanner对象:Scanner scanner = new Scanner(System.in);
(3).调用该对象,获取键盘录入数据:int i = scanner.nextInt();
3.流程控制语句:总共分为三种:1.顺序结构:从上往下,依次执行; 2.选择结构:按照不同的选择,执行不同的代码块; 3.循环结构:按照循环的条件,执行需要循环的代码块不断执行。
4.if语句:一共有三种格式;其中要注意的是:比较的一个表达式,结果永远是boolean类型;if语句中控制执行的语句如果是一条语句的话,那么{}是可以省略的;如果其中一个执行,那么接下来的条件就不执行。
5.swith语句:格式就不讲了,太low。在switch语句中,就是有几个面试题经常会碰到的题:在switch的表达式中通常是一个数据类型:byte,short,int,char,那么在jdk5之后可以是枚举,在jdk7之后可以是字符串String,但是不能是long类型。还有一个问题就是如果省略了break,那么就会出现case穿透现象。
6.循环语句:for循环,while循环,do...while循环
(1).for循环:有几个注意事项,在判断条件语句一定是boolean类型。在循环体语句中,如果只有一条语句,那么就可以省略大括号。
(2).while循环:对于在while循环和for循环中的使用上的区别,可以这么讲:for适合于一个范围上的判断
while循环呢?适合循环的次数不明确的循环操作。
(3).do...while循环:它和while循环的区别就是它无论循环的条件成立不成立,循环体语句都会执行一次,而for和while就需要先判断条件成立。
在循环中,有些特殊情况需要注意,就是一个死循环现象,对于死循环现象,不要在字面上理解他为一个bug,一个错误的代码,其实在程序中,死循环是一种需要存在的代码,格式比如:for( ; ; ) 和while(true){},就是就是循环条件一定成立,一定是true。那么怎么停止程序呢?这就是待会要讲的控制跳转语句的支持了。在for循环还有一个增强for的应用,在后期的集合中会提到应用
7.控制跳转语句:1.break,2.continue,3.return
对于这三者的区别,需要很强的逻辑能力才能区分,理解。
(1).break:中断,用于跳出单层循环,跳出多层循环。
(2).continue:继续,用于跳出单层循环一次,然后下一次继续循环
(3).return:返回,用于结束方法,在遇到return,该方法,程序就会结束。