基础复习第三天 运算符和流程控制

一.计算机基础如何存储

1.计算机数据的存储使用二进制补码形式存储,并且最高位是符号位,1是负数,0是正数。

规定:正数的补码与反码、原码一样,称为三码合一;

​ 负数的补码与反码、原码不一样:

​ 负数的原码:把十进制转为二进制,然后最高位设置为1

​ 负数的反码:在原码的基础上,最高位不变,其余位取反(0变1,1变0)

​ 负数的补码:反码+1

例如:byte类型(1个字节,8位)

25 ==> 原码 0001 1001 ==> 反码 0001 1001 -->补码 0001 1001

-25 ==>原码 1001 1001 ==> 反码1110 0110 ==>补码 1110 0111

底层是用加法代替减法:-128==》-127-1==》-127+(-1)

​ -127- -1 ==> -127 + 1

2.一个字节可以存储的数据范围是多少?

(1)无符号:不考虑正负数

(2)有符号

1个字节:8位

0000 0001 ~ 0111 1111 ==> 1~127

1000 0001 ~ 1111 1111 ==> -127 ~ -1

0000 0000 ==>0

1000 0000 ==> -128(特殊规定)

3.如何存储小数

  • 为什么float(4个字节)比long(8个字节)的存储范围大?

  • 为什么double(8个字节)比float(4个字节)精度范围大?

  • 为什么float和double不精确

因为float、double底层也是二进制,先把小数转为二进制,然后把二进制表示为科学记数法,然后只保存:

①符号位②指数位③尾数位

详见《float型和double型数据的存储方式.docx》

4.如何存储字符

  • Java中使用的字符集:Unicode编码集

  • 编码表

在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。编码表 :就是将人类的文字和一个十进制数进行对应起来组成一张表格。

将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII(American Standard Code for Information Interchange 美国标准信息交换码)。

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

5.字符常量的几种表示方式

  • '一个字符'

eg:'A','a'.

  • 转义字符

eg:

\n:换行

\t:Tab

\r:回车

  • \u字符的Unicode编码值的十六进制型

char c2 = '';//错误,单引号中有且只能有一个字符

String s2 = "";//可以,双引号中可以没有其他字符,表示是空字符串

  • 直接给char类型变量赋值十进制的0~65535之间的Unicode编码值

char c2 = 97;

System.out.println(c2);//a

二.运算符(6种)

运算符是一种特殊的符号,用于表示数据的运算,赋值和比较等。

运算符按功能分类可以分为6种:

    • 算术运算符:12种

总结:

1.自加自减运算

理解:++ 运算,变量自己的值加1。反之,-- 运算,变量自己的值减少1,用法与++ 一致。

1、单独使用

  • 变量在单独运算的时候,变量前++和变量后++,变量的是一样的;

  • 变量前++ :例如 ++a 。

  • 变量后++ :例如 a++ 。

2、复合使用

  • 和其他变量放在一起使用或者和输出语句放在一起使用,前++和后++就产生了不同的效果。

  • (前)++:先自增1,后运算. (后)++:先运算,后自增1.

  • (前)--:先自减1,后运算. (后)--:先运算,后自减1.

2.“+”号的两种用法

  • 第一种:对于+两边都是数值的话,+就是加法的意思

  • 第二种:对于+两边至少有一边是字符串得话,+就是拼接的意思

    • 赋值运算符:6种

    • 比较运算符(关系运算符):7种

结论:

  1. 比较运算符的结果都是boolean型的值(true或false)。

  1. 其中>,<,>=,<=不支持boolean,String类型,==和!=支持boolean和String。

  1. ==比较的是基本数据类型时比较的是变量值,如果是引用数据类型时比较的是内存地址值。

    • 逻辑运算符(6种)

逻辑运算符,是用来连接两个布尔类型结果的运算符(!除外),运算结果一定是boolean值true或者false

&&和&区别,||和|区别
  • &&和&区别:

  • &&和&的运算结果一样,&&有短路效果,左边为false,右边不执行;&左边无论是什么,右边都会执行。

  • ||和|区别:

  • ||和|的运算结果一样,||有短路效果,左边为true,右边不执行;|左边无论是什么,右边都会执行。

    • 位运算符(7种)【了解】

    • 三元运算符(1种)(条件运算符)

三元运算符的格式:

条件表达式 ? 结果1 :结果2;

注意事项:

  1. 条件表达式的结果必须是一个boolean类型的值,及表达式的结果不是true就是false。

  1. 根据表达式的结果是true或者false,决定执行结果1,还是结果2.

如果表达式的结果是true,执行结果1;

如果表达式的结果是false,执行结果2.

  1. 结果1和结果2的数据类型要可以统一为一个。

  1. 三元运算符可以嵌套使用。

  1. 凡是可以用三元运算符的地方,一定都可以改写为if-else;但是反过来不成立。

三.流程控制

不论哪一种编程语言,都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构用于实现根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。

1.顺序结构:

任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。

2.分支结构(两种):

第一种:if(条件表达式){语句体} else {语句体};

  1. 二选一

if(条件表达式){语句体

} else {

语句体};

if(条件表达式){语句体};

  1. 多选一

if(条件表达式){语句体

} else if(条件表达式){

语句体} else if(条件表达式)...else{语句体};

总结:

  • if(){}else{}可以相互嵌套使用。

  • 条件表达式的值必须要为boolean类型,即true或false。

  • 如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略,但是,不建议省略。

  • else语句不能单独使用,但是if语句可以单独使用。

  • 如果有多个if-else嵌套,else遵循就近原则;即else找最近的if执行语句。

第二种:swich-case-default

swich-case的格式为:

swich (表达式){

case 常量1 :

执行语句1;

//break;

case 常量2 :

执行语句2;

//break;

case 常量3 :

执行语句3;

//break;

case 常量1 :

执行语句1;

//break;

......

default:

执行语句n;

//break;

}

执行过程:

(1) 入口

    • 当switch(表达式)中的值与case后面的某个常量值匹配时,就从这个case进入,并执行后面的执行语句。
  1. 如果该执行语句后面没有跟break关键字,则继续向下执行下一个case后面跟着的执行语句。

注意:switch(表达式)中的值不用再跟下一个case后面常量值进行匹配。只需要执行后面的执行语句就行。当遇到第一个break关键字时,switch-case结构执行结束。或者期间没有遇到break关键字;但是遇到了default关键字,并执行完default分支后面的执行语句后,swich-case执行结束。

  1. 如果该执行语句后面有跟break关键字,则立即寻找switch的结束}并结束。

    • 当switch(表达式)中的值与case后面的所有常量值都不匹配时,寻找default分支进入;不管default在哪里

(2)一旦从“入口”进入switch,就会顺序往下执行,直到遇到“出口”,即可能发生贯穿。

(3)出口

  1. 自然出口:遇到switch的结束}。

  1. 中断出口:遇到了break关键字等。

总结:

  • (case 常量值 : )case后面的常量值不能重复,否则编译不通过。

  • (case 常量值 : )常量值不能是一个区间范围

  • switch(表达式)的值的类型一共只能是这其中6种,只能是:4种基本数据类型(byte,short,int,char),2种引用数据类型(JDK1.5之后枚举、JDK1.7之后String)

  • break关键字是可选的。

  • default关键字是可选择的,并且为之灵活。

  • switch-case中有多个case后面的执行语句相同,我们可以将case进行合并。

break关键字一共2个用途

1. 用在switch..case语句中的每个case里,用于结束switch语句。

2. 用在循环结构的循环体中,用于结束当前循环的执行。---即:break写在哪个循环里,就结束哪个循环。如果break出现在循环体里,break用于结束当前循环。

3.循环结构(3种)

循环结构:在某些条件满足的情况下,反复执行特定代码的功能。

循环语句分类:

for循环

while循环

do-while循环

for循环结构的使用:

一、循环结构的4个要素:

①初始化条件

②循环条件 ----->是一个boolean类型

③循环体

④迭代条件

二、for循环结构的格式:

for(①;②;④){

}

如果②是true,

则for循环的执行过程:①--->②--->③--->④--->②--->③--->④

.......--->②--->③--->④--->②.当②为false时跳出循环。

如果②是false。结束for循环。

while循环结构的使用:

一、循环结构的4个要素:

①初始化条件

②循环条件 ----->是一个boolean类型

③循环体

④迭代条件

二、while循环结构的格式:

①;

while(②){

③;

④;

}

如果②是true时,

while循环的执行过程是:①--->②--->③--->④--->②--->③--->④

.......--->②--->③--->④--->②.当②为false时跳出循环。

如果②是false时,只执行①。后面的②③④不执行,即while循环不执行。

注意事项:

  1. 写while循环时千万小心不要丢了迭代条件,一旦丢了,就可能造成死循环。

  1. 我们写程序,要避免出现死循环。

  1. for循环和while循环可以相互转换!

区别:for循环和while循环的初始化条件部分的作用范围不同。

do-while循环结构的使用:

一、循环结构的4个要素:

①初始化条件

②循环条件 ----->是一个boolean类型

③循环体

④迭代条件

二、do-while循环结构的格式:

①;

do{

③;

④;

}while(②);

如果②是true时,

do-while循环的执行过程:①--->③--->④--->②--->③--->④--->②

......--->③--->④--->②。当②为false时结束循环。

如果②是false时,

do-while循环的执行过程:①--->③--->④--->②。然后该循环结束。

说明:

  1. do-while循环至少会执行一次循环体和迭代条件!

  1. 开发中,使用for和while更多一些。较少使用do-while循环。

总结:

  1. 不在循环条件部分限制次数的结构:for(;;)或者while(true).

  1. 结束循环有几种方式?目前来说只有两种。

方式一:循环条件部分返回false。

方式二:循环体中,执行break关键字。

4.嵌套循环

所谓嵌套循环:是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数。当然可以是三种循环任意互相嵌套。

嵌套循环格式:

for(初始化语句①; 循环条件语句②; 迭代语句⑦) {

for(初始化语句③; 循环条件语句④; 迭代语句⑥) {

循环体语句⑤;

}

}

当②和④为true时,双层for循环的执行流程为:①--->②--->③--->④--->⑤--->⑥--->④--->⑤

--->⑥......--->④--->⑤--->⑥--->④,当④为false时跳出内层for循环,执行外层循环。执行⑦--->②--->③--->④--->⑤--->⑥--->④,当④为false时又跳出内层for循环,执行外层循环。一直这样反复执行,当②为false时跳出外层循环,结束嵌套循环。

总结:

  1. 外层循环控制行数,内层循环控制列数

  1. 假设外层循环需要执行m次,内层循环需要执行n次。此时内层循环的循环体一共执行了m*n次。

  1. 内层循环结构遍历了一遍,只相当于外层循环循环体执行了一次。

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

5.break和continue关键字的使用

代码如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值