在这里插入代码片
# #Java语言基础
##运算符学习
A:逻辑运算符
&(并且) 只有两边都为真才为真。
|(或) 有一个为真就是真。
!(非)。
^(异或)
&&(短路与)
||(短路或)
注意事项:
1,逻辑运算符一般用于链接boolean类型的表达式或者值。在Java中我们表示一个一个数大于3小于6,不能写成3<x<6。二应该写为x>3&x<6或者为x>3&&x<6。
2,表达式:用运算符吧常量和变量连接
算术表达式:a+b;
关系表达式:a==b;
逻辑运算符的用法:
&&和&的区别? 同理 || 和 | 的区别?
A:最终结果都一样
B:&&具有短路效果,左边是false,右边不执行
| |具有短路效果, 左边是true,右边不执行
开发中常用的逻辑运算符:&& ||接起来。
^异或:相同为false,不同为true。比如;男男,男女;
!非:!false为真,!true未假。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lgss2VX1-1617874148026)(C:\Users\080901\Pictures\微信图片_20210406201513.jpg)]
###位运算符的用法
A:位运算符有哪些
&,|,^,~(安位取反),<<(左移),>>(右移),>>>(无符号右移)
注意事项:位运算符是对二进制补码进行运算,这样的运算效率更高。
例子:&:有0则0;
|:有1则1;
^:相同则0,不同则1;
~:按位取反 0变1 ,1变0,(符号位也包含在内取反)
正数的按位取反:+9
原码:00001001
反码:00001001
反码:00001001
按位取反码1 1110110
反码 1 11110101
原码 1 0001010最后得到的结果为-10
-9的按位取反:
原码:1 0001001
反码:1 1110110
补码:1 1110111
负数的补码按位取反:0 0001000 的到正数 正数的原反补一样
最后结果是:8
###异或运算符的特点
^:一个数据被另一个数据异或两次,该数本身不变
自己位异或自己是0
8^8的结果是0
###位运算符的特点
<< :左移 空位补0,被移除的高位抛弃。
》:右移 被移位的数是正数,右移后的空位补0.负数空位补1
》》》:无符号右移 被移位后的空缺位都补0.
:结论:
<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
结论: 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5
右移绝对值变小
左移绝对值变大
案例值交换:
int a=10;
int b=20;
//方式1:找一个中间变量 开发中常用 必须掌握
int t;
t=a;
a=b;
b=t;
//方式2
/位异或运算符的特点
^的特点:一个数据被另一个数据位异或两次,该数本身 不变。/
a=a^b;
b=a^b; //abb b=a
a=a^b; //aba
以下为不常用的方法:
//方式3
a=a+b;
b=a-b;
a=a-b;
//方式4 一句话搞定
b=(a+b)-(a=b);
###三元运算符
A:三元运算符的格式
关系表达式?表达式1:表达式2;
int a=(10>20)?30:50;结果为a=50
B:三元运算符的执行流程
计算表达式的值,如果为0,则结果为表达式1;
反之为表达式2;
###键盘输入格式的了解
A:为什么使用键盘录入数据
1,为了使程序的数据更符合开发的数据
2,让程序更加灵活
B:将按录入的格式:
a:导包
格式:import java.util.Scanner;
位置在class上面。
b:创建键盘录入对象
格式:
Scanner sc=new Scanner(System.in);
c:通过对象获取对象
格式:int x=sc.nextInt();
##顺序结构的掌握
A:什么是流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是由直接影响的。
很多时候我们需要通过控制语句的执行顺序实现我们要完成的功能。
B:l流程语句的类别
顺序结构
选择结构
循环结构
C:顺序结构
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,依次执行,程序中大多数的代码就是这样执行的。
D:执行流程:
从上往下,依次执行。
###if1语句格式及其使用
概述:也被称为分支结构。
代码要执行具体的逻辑运算进行判断。
逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
A:选择结构的分类
if语句
switch语句
B:if语句的格式
格式1:if(比较表达式或者boolean类型的值){
语句体;}
D:执行流程:
先执行比较表达式的值,看其返回值是tru还是false.
如果数true,就执行语句体。
注意事项:if控制的语句如果是一条语句,大括号可以省略,如果是多条语句,就不能省略。建议永远不要省略。
###if语句格式2
A:if语句格式2
if(比较表达式){
语句体1;}
else{
语句体2;}
注意事项:else后面没有比较表达式,只有if右面有。
B:执行流程:
首先计算比较表达式的值,看其是true还是false.
如果是true,就执行语句体 1;
反之,执行语句体2;
三元运算符实现的,都可以采用if语句实现。反之不成立。
什么时候if语句实现不能用三元改进呢?
当if语句控制的操作是一个输出语句的时候就不能。
为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
###if语句格式3
A:if语句的格式3:
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
…
else {
语句体n+1;
}
B:执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,
如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
...
如果都是false,就执行语句体n+1。
##switch语句
A:switch语句的格式
switch(表达式){
case 值1:
语句体;
break;
case 值2:
语句体;
break;
case 值3:
语句体;
break;
default :
语句体;
break;}
B:switch语句的格式解释
1:switch表示的是switch语句
表达式的取值:byte short int char
JDK7以后可以是String
2:case后面的值要与表达式比较,需要的是常量值
3:语句体部分可以是一条或者多条语句
4:break表示中断,结束的意思,可以结束switch语句
5:default表示所有的情况都不符合,就执行该内容。C:执行流程
先计算表达式的值
然后和case后面的匹配,如果匹配成功就执行对应的语句,遇到break就会结束,否则执行default控制的语句。
C:switch语句的注意事项
1,case后面只能是常量,不能是变量
2,default可以省略,但是不建议,因为它的作用是在不正确的情况下给出提示;
3,break也是可以省略的,但是不建议省略,会出现一个现象case穿透。
4,default不一定留在最后,但是建议留在最后。
5,switch语句结束的条件
a遇到break就结束了
b执行到末尾就结束了
###3switch与if语句的区别
if语句的使用场景:
针对结果是Boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
##循环结构概述和for语句
A:什么是循环语句
循环语句就是在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的循环代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环就会一直执行下去,形成死循环
B:循环结构的分类
for循环
while循环
C:循环语句for语句的格式:
for(初始化表达式语句;判断条件语句;控制条件语句){
循环体语句;}
D:执行流程:
a:执行初始化表达式语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到B继续。
E:注意事项:
初始化表达式语句只执行一次
3####水仙花数问题
如何求各个位的数?
1)首先需要知道的是,每个数%10既是得到个位上的数
(2)如三位数:123:%10得个位上的3;/10得到除去个位上的3之后剩下的12,所以要得到十位上的2,需要将123/10%10;最后算百位上的1,可/100%10,也可直接/100
(3)四位数如1234:%10得个位上的4;1234/10%10得十位上的3;1234/100%10得百位上的2;最后算千位上的1,可/1000%10,也可直接/1000;
(4)其实,五位数,六位数都不用再多举例了,可以知道这个算法很固定:任何数%10得个位数;/10%10得十位数;/100%10得百位数;/1000%10得千位数;/10000%10得万位数;/100000%10得十万位上的数…
##while语句
A:while语句的格式:
初始化条件语句;
while(判断条件语句){
循环体语句;
控制条件语句;}
B:执行流程:
1,初始化条件语句;
2,执行判断条件语句,看其返回值是true还是false
true就继续执行;
false就结束循环;
3,执行循环体语句;
4,执行控制条件语句
5,回到吧继续执行、
###三种循环体的区别
A:do while循环至少执行一次循环体。
而for和while循环必须先判断条件是否成立,再决定是否执行循环体语句。
B:如果你想在循环结束后,继续使用空中条件的那个变量,用while循环,否则用for 循环。不知道用for循环。
因为变量尽早的从内存中消失,可以提高内存的使用效率。
C:建议优先考虑for循环,最后是do while循环
###死循环问题
A:一定要注意条件语句控制的那个变量的问题,不要弄丢了,容易产生死循环。
B:两种最简单的死循环格式
while(true){…}
for(;😉{…}
循环嵌套的问题:外循环控制行数,内循环控制列数。
‘\x’ x表示任意,这种做法叫做转义字符。
‘\t’ tab键的位置
‘\n’ 换行
###控制跳转语句(break)
A:什么是控制语句
前面我们已经说过了,Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是特带来很多不便。
比如说我们想让某个循环执行到某一步就结束,现在就做不了这件事情。
为了弥补这个缺陷,Java就提供了break,continue和return来控制语句 的跳转和中断。
B:控制跳转语句的分类
break 中断
continue 继续
return 返回
C:break的使用场景
1,选择结构的switch语句中
2,循环语句中
注意事项:离开使用场景的存在是没有意义的
D:作用
a:退出单层循环
b:退出多层循环(几乎是不使用的,要想实现这个功能,就必须知道一个东西,带标签的语句,格式;标签句)
###控制跳转语句continue
A:continue的是用场景
1,循环语句中
2,离开使用场景的使用是没有意义的
B:作用
a:跳出一次循环,执行下一次操作
###控制跳转语句return
A:return的作用
return 就是推出一个方法。
跳转到上层调用的方法。
B:作用
return 结束当前方法
break 结束单层循环
continue 结束当前循环,执行下一次循环
##方法的格式和概述
A:为什么要有方法
假设有一个游戏程序,程序在执行过程中,要不断的发射炮弹。
发射炮弹的动作需要编写100行的代码,在每次发射炮弹的时候都需要反复编写100行代码,这样的话程序就会很臃肿,可读性也会很差。
为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在{}中,并为这段代码起个名字。
这样在每次发射炮弹的地方通过这个名字来调用发射炮弹代码就可以了。
程序在发射炮弹的时候调用该方法就可以了。
B:什么是方法
方法就是完成特定功能的代码块
很多语言中都有函数的定义,在Java中我们称之为方法。
C:方法的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…){
方法体;
return 返回值;}
D:方法的格式详细说明
(1)修饰符 比较多,后面会详细介绍。目前使用 public static
(2)返回值类型 用于限定返回值的数据类型
(3)方法名 就是一个名称,他的存在就是为了方便我们调用方法
(4)参数类型 限定调用方法时传入参数的数据类型
(5)参数名 是一个 变量,接收调用方法时传入的参数
这个参数其实有一个专业的名词,被称为形式参数,他的作用是用来接收实际参数的。
(6)方法体 完成功能的代码
(7)return 结束方法以及返回方法指定类型的值
(8)返回值 就是方法的结果,由return带回,带给调用者
###方法调用注意事项
A:方法不调用不执行
B:方法与方法是平级关系,不能嵌套定义
C:方法调用的时候用逗号隔开
D:方法调用的时候不用传递数据类型
E:如果方法由明确的返回值,一定由return带回一个值
值;}
D:方法的格式详细说明
(1)修饰符 比较多,后面会详细介绍。目前使用 public static
(2)返回值类型 用于限定返回值的数据类型
(3)方法名 就是一个名称,他的存在就是为了方便我们调用方法
(4)参数类型 限定调用方法时传入参数的数据类型
(5)参数名 是一个 变量,接收调用方法时传入的参数
这个参数其实有一个专业的名词,被称为形式参数,他的作用是用来接收实际参数的。
(6)方法体 完成功能的代码
(7)return 结束方法以及返回方法指定类型的值
(8)返回值 就是方法的结果,由return带回,带给调用者
###方法调用注意事项
A:方法不调用不执行
B:方法与方法是平级关系,不能嵌套定义
C:方法调用的时候用逗号隔开
D:方法调用的时候不用传递数据类型
E:如果方法由明确的返回值,一定由return带回一个值