位运算符 含义 实例
<< 左移 5<<2=20
右移 5>>1=2
无符号右移 5>>>1=2
& 与运算(只要有一个为0则结果就为0)5&3=1
| 或运算(只要有一个结果为1则为1否为0)5|3
^ 异或位运算(如果两个数值一样运算结果 5^3=6
为0否则为1 )
~ 取反运算 ~6--->0110=-7
备注:位运算计算机底层采用的是对整数进行二进制的运算没有无符号左移运算符
二进制整数表示、源码、反码、补码
三目运算符:
?:
三目运算符格式:
布尔类型表达式?真的结果值:假的结果值
三目运算符格式:
数据类型 变量名=布尔类型表达式?真的结果值:假的结果值
计算方式:
如果布尔类型表达式结果是true,三目运算符运算的结果为紧邻?后面的值
如果布尔类型表达式结果是false,三目运算符运算的结果为紧邻:后面的值
备注:当三目运算符运算参与有其他的运算(赋值运算)
要求三目运算符中的?和:后面的值的数据类型保持一致。
流程控制
1.顺序结构
Ⅰ.程序是从上往下进行加载,按照代码的编写顺序进行执行。
2.选择结构(分支结构)
Ⅰ. if else 语句
1. if 单支情况
if语句的格式:
if(布尔类型表达式/布尔类型值){
语句体。。
}
if语句(单支)的执行流程:
1 首先判断布尔类型表达式看它的结果是false还是true
2 如果是true就执行{}里面的方法体内容
3 如果是false就不执行{}里面的方法体内容,程序往后加载
2. if else 双支情形
格式:
if(布尔表达式){
语句体内容1
}else{
语句体内容2
}
if else 多支的执行流程:
1 首先判断布尔类型表达式看它的结果是true还是false
2 如果是true,就执行语句体内容1
3 如果是false,就执行语句体内容2
3. if....else if...else语句 多支情形
格式:
if(布尔类型表达式1){
方法体内容1.。。
}else if(布尔类型表达式2){
方法体内容2.。。
}
.......
}else if(布尔类型表达式n){
方法体内容n
}else{
方法体内容n+1.。。。。
}
执行流程:
1 首先判断布尔类型表达式1看其结果是true还是false
2 如果是true,就执行方法体内容1
3 如果是false,就继续判断布尔类型表达式2,看其结果是true还是false
4 如果是true,就执行方法体内容2
5 如果是false,就继续判断布尔类型表达式....看其结果是true还是false
6 .......
7 如果以上所有的布尔类型表达式都为false,最后执行else{}里面的方法体内容n+1
4. if..if..else...else语句 嵌套情形
格式:
if(布尔类型表达式1){
方法体内容1.。。
if(布尔类型表达式2){
方法体2
}else{
方法体内容3
}
}else{
方法体内容4
}
执行流程:
1 首先判断布尔类型表达式1,看其结果是true还是false
2 如果是true,就执行方法体内容1,再继续判断布尔类型表达式2,看其结果是 true 还是false,如果是true,就执行方法体内容2
如果是false,就执行方法体内容3
3 如果是false,就执行方法体内容4,之后加载后面的程序。
if语句和三目运算符的互换
int num01 = 10;
int num02 = 20;
//定义一个变量,保存num01和num02的最大值
int c;
if(num01>num02){
c=num01;
}else{
c=num02;
}
//上面的语句我们也可以使用三目运算符
c=num01>num02 ? num01 : num02;
Ⅱ. switch case语句
格式:
switch(表达式/变量){
case 常量值1:
//语句体内容1
break;
case 常量值2:
//语句体内容2
break;
......
default:
//语句体n
break;
}
执行流程:
1 首先计算出表达式中的值
2 其次,依次和case后面的常量值做比较,一旦有对应的值,就会执行相应的语句体内容
在执行的过程中,遇到break就会结束 switch case语句。
3 最后,如果所有的case都和表达式的值不匹配,就会执行default中的语句体内容,然后程序switch case语句结束。
注意:在switch语句中,表达式的数据类型,可以是byte/short/int/char/ enum(枚举),JDK1.7之后可以接收字符串类型
case穿透性
在switch语句中,如果case后面的break省略掉,将会出现穿透现象。不会判断后面的case情形值直接向后加载case中的方法体内容,知道遇到break结束。
3.循环结构 【重点】
(三种基本循环)for、while、do-while
循环结构组成部分 : 一般可以分为四部分
初始化语句:在循环最初开始时,需要定义一个初始化的变量,而且只会定义一次
条件判断(结束条件):如果条件成立满足,进入循环,如果条件不满足,则退出循环
循环体内容:重复要做的事情内容,可能包含很多条语句。(事情是有规律的)
迭代语句(步进语句):每次循环结束之后需要执行步进语句(迭代语句),对初始化的变量做步进或者是迭代。
for循环语句结构
格式:
for(1初始化语句;2条件判断表达式;4迭代语句){
//3循环体内容
}
执行流程:
执行的顺序:1----->2------->3------->4------->2------>3----->4------>2----->3--->4.....2不满足为止。
1主要负责循环变量的初始化
2负责判断是否满足循环条件,不满足退出循环
3负责执行具体的语句(逻辑功能)
4负责变量的迭代
Scanner类和Random类的使用
API(Application programming interface)应用程序编程接口,javaAPI就是程序员的一本字典。
是JDK中提供给我门使用的类的说明文档。只需要查阅API搜索查阅自己需要的类
Scanner类
他是一个可以解析基本数据类型和字符串的文本扫描器。主要作用就是把外部的数据录入到系统中。
Scanner sc=new Scanner();
//让系统能够从外部录入一个整数 nextInt();
int num = ();
//备注: 可以实现通过键盘往系统录入一个数据。
//让系统能够实现从外部录入一个浮点数(小数)nextDouble()
double num02=();
//让系统能够实现从外部录入一个字符串数据。next()
String str=();
while循环语句
格式:
//1.初始化语句;
while(2.判断条件){
//3。循环体内容
//4.步进语句;
}
执行流程:
执行顺序:1---->2--->3--->4---->2---->3---->4--->2---->3--->4--->.....2不满足为止
1负责循环变量初始化
2负责判断是否满足循环条件,不满足则跳出循环
3负责执行具体语句,实现某个功能。
4迭代循环变量
do-while循环
格式:
//1.初始化语句
do{
//3.循环体内容
//4.迭代
}while(2.判断条件);
执行流程:
执行顺序:1--->3---->4---->2----->3----->4---->2--->3---->4.....2不满足为止
1还是负责定义循环变量,并且进行初始化
2负责判断是否满足循环条件,不满足则跳出循环
3负责执行具体语句,实现某个功能
4迭代循环变量
备注:无条件执行一次循环体内容,即使判断条件是不满足也依然循环一次,这样的循环是有风险的,不建议使用。
循环语句的区别
for和while的区别
控制语句中所涉及到的循环变量,当for循环结束后,定义的循环变量将不能再被访问到,而while循环结束后,依然可以被访问到。如果不继续使用循环变量,建议使用for循环,因为for循环结束后,循环变量就会从内存中消失,能够提高内存的使用效率。
再已知循环次数的情况下,建议使用for循环,当循环次数不确定时使用while循环。
跳出语句
break、continue两个语句
break
使用情形:终止switch语句或者循环语句
备注:离开了使用场景对于break来说没有意义。
public static void main(String[] args){
//使用break语句
//跳出循环语句
//10以内的偶数和
int sum=0;
for(int i=0;i<=100;i++){
//跳出情景i>10
if(i>10){
break;
}
if(i%2==0){
sum+=i;
}
}
//跳出switch case语句
//季节 春夏秋冬
String season="春季"
switch(season){
case "春季":
("万物复苏的时候");
break;
case "夏季":
("烈日炎炎的时候");
break;
case "秋季":
("丰收的季节");
break;
case "冬季":
("寒冷下雪的时候");
break;
default:
("跳出三界外,不在五行中");
break;
}
}
continue
使用情形:结束本次循环,继续下一次循环
public static void main(String[] args){
//continue
//求一下100以内的偶数和 2+4+6+8+10+...+100
for int(int i=1;i<=100;i++){//i=1 2 3 4 5 6 7 8 9.....
//使用场景 奇数跳过去不参与累加和
if(i/2!=0){//i%2
continue;
}
sum+=i;
}
}
扩展知识点
1 死循环
概念:循环中的条件永远都是true,死循环是永不结束的循环。例如:whlie(true){}死循环一般要和跳出语句结合
2.循环嵌套
概念:是指一个循环的循环体是另一个循环。比如说for循环中内置了一个for循环,就是循环嵌套。
循环的次数=外部循环的次数*内部循环的次数
格式:
for(1.初始化语句;2判断语句;4迭代语句){
//3循环体内容
for(5.初始化语句;6判断语句;8迭代语句){
//7循坏体内容
}
}
执行流程
执行流程:1-->2-->3-->5-->6-->7-->8-->--6-->8...6不满足为止(跳出循环)
4-->--->2-->3-->5-->6-->7-->8-->6...6不满足为止(跳出循环)
--->...2不满足为止结束整个循环加载外层for循环后面的语句。
外循环一次,内循环多次
public static void main(String[] args){
//使用场景
//打印3*8长方形 长为2,宽为8
/*
********
********
********
*/
//使用循环嵌套技术来实现j
for(int i=0;i<3;i++){jj
for(int j=0;j<8;j++){
//输出*
("*");
}
();//只换行不输出内容
}
}