优先级:
- 所有的关系运算符的优先级比算数运算的低,但是比赋值运算的高
运算优先级>关系运算符>赋值运算符 - 判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
- 整型和浮点型可以比较;浮点型和浮点型用==判断存在误差(浮点型判断相等一般采用二者差值的绝对值是否小于一个无穷小量
例:Math.abs(f1-f2)<1e-6)
判断语句:
- if-else
- if-else if-else(级联)——嵌套
- switch-case(分支)
switch(控制表达式){
case 常量:
语句;
(break;)
case 常量:
语句;
(break;)
default:
语句;
(break;)
…
}
a) 控制表达式只能是整型结果
b) 常量可以使常数也可以是表达式
c) 根据表达式的结果,找到匹配的case,并执行case的语句,直到break为止;如果所有的case都不匹配,则执行default的语句结果
如果case的语句中没有break,则会继续运行越过下一个case的边界执行下一个case的语句直到遇到break为止
循环:
- while:循环开始之前判断是否继续循环;条件成立是循环继续的条件
- for(初始化;进入循环条件;单步动作)
采用哪种循环: - 如果有固定循环次数,用for
- 如果必须执行一次,用do_while
- 其他情况用while
break vs continue
break:跳出循环
continue:跳过循环这一轮剩下的语句进入下一轮循环
多重循环嵌套,可以给循环前加标号,内层循环中执行break+标号 直接跳出外层循环
【debug】
数组:
-
定义数组变量:<类型>[] <名字>=new <类型>[元素个数]
a. 元素个数必须是整数
b. 元素个数必须给出
c. 元素个数可以是变量
(数组的元素个数一旦设定就不可变,实现可变需要使用其它容器)
数组名.length表示数组内元素的个数 -
数组变量赋值
普通变量是数据的所有者
数组变量是数据的管理者
int[] b=a;
代表两个管理者a、b管理同一个数组
a. 数组变量是数组的管理者而非数组本身
b. 数组必须创建出来然后交给数组变量管理
c. 数组变量之间的赋值是管理权限的赋予
d. 数组变量之间的比较是判断是否管理同一个数组;假设a和b管理的两个数组的内容相同,然而这两个数组依然是不同的数组因此a和b不相等 -
遍历数组
通常都是使用for循环,让循环变量i从0到<数组的length,这样循环体内最大的i正好是数组的最大有效下标
常见错误:
a. 循环结束条件写成<=数组长度
b. 离开循环后,继续用i的值来做数组元素的下标来访问数组 -
for-each循环
for (<类型> <变量>:<数组>)
{…
}
对于数组中的每一个元素,循环的每一轮将数组中对应的元素拿出来作为k的值,适合于遍历数组,但不能记录数组的位置信息
通过for-each循环不能改变数组内的元素值,但可以读出数组中的元素值 -
二维数组
int[][] a=new int[3][5]
创建二维数组
遍历二维数组:两层循环
字符类型char
字符用Unicode编码,每一个字符都对应一个整数
-
逃逸字符:
用来表达无法打印出来的控制字符或特殊字符,由一个反斜杠“\”开头,后面跟上另一个字符,这两个字符合起来组成一个字符
\b 回退一格
\t 到下一个制表位
\n 换行
\r 回车
\” 双引号
\’ 单引号
\ 反斜杠本身 -
包裹类型
基础类型:boolean、char、int、double…
包裹类型:Boolean、Character、Integer、Double
每种基础类型都有对应的包裹类型
包裹类型的用处:
获得该类型的最大值最小值
Integer.MIN_VALUE Integer.MAX_VALUE
(当需要让一个类或对象做事情的时候,用.运算符 eg. a.length)
其他功能: -
Math类型:
(abs round random pow…)
字符串变量
String s
String 是一个类,String的变量是对象的管理者而非所有者(就像数组变量是数组的管理者而非所有者一样)
- 创建字符串
String s=new String(“a string”);//创建了一个String的对象,用“a string”初始化这个对象,创建管理这个对象的变量s - 初始化字符串变量
String s=“hello”;编译器帮助创建一个String类的对象交给s来管理 - 字符串连接
a. 用加号(+)可以连接两个字符串
b. 当这个+的一边是字符串而另一边不是时,会将另一边表达为字符串后做连接 - 输入字符串
in.next();//读取一个单词
in.nextline();//读取一整行 - 字符串操作:
a.字符串是对象,对它的所有操作都是通过“.”这个运算字符进行的
b.(字符串.操作)表示对.左边的字符串进行右边的操作
c. 字符串可以是变量也可以是常量
(1)字符串比较大小(根据Unicode字符编码判断)
s1.compareTo(s2)
a.s1<s2,结果为负;s1=s2,结果为0;s1>s2,结果为正
b.compareToIgnoreCase可以不区分大小写地比较大小
(2)获得String的长度
用length()函数
(3)访问String里的字符
(4)得到子串
(5)寻找字符
(6)其他操作
【注意】String操作不是在原来字符串的基础上进行修改,字符串本身不可变,而是根据原字符串创造一个新的字符串