学习笔记——Java基础(二)

目录

1.进制

2.运算符

        运算符的分类:

        2.1算术运算符:

        2.2赋值运算符:

        2.3比较(关系)运算符:

        2.4逻辑运算符:

        2.5位运算符:

        2.6条件运算符:

        运算符优先级:

3.流程控制之分支语句

        3.1 if-else 条件判断结构:

        3.2 switch-case选择结构:

        3.3 if-else语句与switch-case语句比较

4.流程控制之循环语句

        4.1 for循环

        4.2 while循环

        4.3 do-while循环

5.关键字break和continue

6.Scanner:键盘输入功能的实现


1.进制

        十进制(decimal):

                数码:0 ~ 9

                进位规则:满十进一

        二进制(binary):

                数码:0 ~ 1

                进位规则:满二进一,以‘0b’或‘0B’开头

        八进制(octal):

                数码:0 ~ 7

                进位规则:满八进一,以数字‘0’开头

        十六进制:

                数码:0 ~ 9,a ~ f

                进位规则:满十六进一,以‘0x’或‘0X’开头,此处的a ~ f不区分大小写

        进制转换:略

2.运算符

        定义:运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

        运算符的分类:

                1.按照功能分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符

                2.按照操作数个数分为:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)

        2.1算术运算符:

运算符运算范例结果
+正号+33
-负号b=4;-b-4
+5+510
-6-42
*3*412
/5/51
%取模(取余)7%52

++

++

自增(前):先运算后取值

自增(后):先取值后运算

a=2;b=++a

a=2;b=a++

a=3;b=3

a=3;b=2

- -

- -

自减(前):先运算后取值

自减(后):先取值后运算

a=2;b=--a

a=2;b=a--

a=1;b=1

a=1;b=2

+字符串连接"He"+"llo""Hello"

        2.2赋值运算符:

               符号:=

                当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。

                支持连续赋值。

                扩展赋值运算符:+=、-=、*=、/=、%=

赋值运算符符号解释
+=将符号左边的值右边的值进行相加操作,最后将结果赋值给左边的变量
-=将符号左边的值右边的值进行相减操作,最后将结果赋值给左边的变量
*=将符号左边的值右边的值进行相乘操作,最后将结果赋值给左边的变量
/=将符号左边的值右边的值进行相除操作,最后将结果赋值给左边的变量
%=将符号左边的值右边的值进行取余操作,最后将结果赋值给左边的变量

        2.3比较(关系)运算符:

              1.  比较运算符的结果都是boolean型,也就是要么是true,要么是false。

              2.  >、<、>=、<=:只适用于基本数据类型(除boolean类型之外)。

              3.  比较运算符“==”不能误写成“=”

运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否类的对象"Hello" instanceof Stringtrue

        2.4逻辑运算符:

                1.& 和 &&:表示“且”关系,当符号左右两边布尔值都是true时,结果才能为true。否则,为false。

                2.| 和 ||:表示“或”关系,当符号两边布尔值有一边为true时,结果为true。当两边都为false时,结果为false。

                3.!:表示“非”关系,当变量布尔值为true时,结果为false。当变量布尔值为false时,结果为true。

                4.^:表示“异或”关系,当符号左右两边布尔值不同时,结果为true。当两边布尔值相同时,结果为false。

aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse

                区别“&”和“&&”:&如果符号左边是false,则继续执行符号右边的操作。&&如果符号左边是false,则不再继续执行符号右边操作。(“|”和“||”同理)

        2.5位运算符:

                1.位运算符的运算过程都是基于二进制的补码运算。

运算符运算范例细节
<<左移3<<n→3乘2的n次方空位补0,被移除的高位丢弃,空缺位补0。
>>右移3>>n→3除2的n次方被移位的二进制最高位是0,右移后,空缺位补0;最高位为1,空缺位补1。
>>>无符号右移3>>>n→3除2的n次方被位移二进制最高位无论是0或者是1,空缺位都用0补
&与运算6 & 3 = 2二进制位进行与运算,只有1&1时结果是1,否则是0
|或运算6 | 3 = 7二进制位进行|运算,只有0|0时结果是0,否则是1
^异或运算6 ^ 2 = 5

相同二进制位进行^运算,结果是0:1^1=0,0^0=0

不相同二进制位^运算结果是1。1^0=1,0^1=1

~取反运算~6 = -7

正数取反,各二进制码按补码位取反

负数取反,各二进制码按补码位取反

        2.6条件运算符:

                格式:(条件表达式)? 表达式1 : 表达式2

                说明:条件表达式是boolean类型的结果,根据boolean的值选择表达式1或表达式2

                如果运算后的结果赋给新的变量,要求表达式1和表达式2为同种或兼容的类型

                凡是可以使用条件运算符的地方,都可以改写为if-else结构。反之,不成立。开发中,如果既可以使用条件运算符,又可以使用if-else,推荐使用条件运算符。因为执行效率稍高

        运算符优先级:

                1.运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序。

优先级

运算符说明

Java运算符

1

括号

()[]{}

2

正负号

+-

3

单元运算符

++--~

4

乘法、除法、求余

*/%

5

加法、减法

+-

6

移位运算符

<<>>>>>

7

关系运算符

<<=>=>instanceof

8

等价运算符

==!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

条件与

&&

13

条件或

||

14

三元运算符

? :

15

赋值运算符

=+=-=*=/=%=

16

位赋值运算符

&=|=<<=>>=>>>=

3.流程控制之分支语句

        3.1 if-else 条件判断结构:

                结构1:单分支条件判断:if

                格式:

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

                说明:条件表达式必须是布尔表达式(关系表达式或逻辑表达式)或 布尔变量。

                执行流程:

                结构2:双分支条件判断:if...else

                格式:

if(条件表达式) { 
  	语句块1;
}else {
  	语句块2;
}

                执行流程:

                结构3:多分支条件判断:if...else if...else

                格式:

if (条件表达式1) {
  	语句块1;
} else if (条件表达式2) {
  	语句块2;
}
...
}else if (条件表达式n) {
 	语句块n;
} else {
  	语句块n+1;
}

        ​​​​​​​        执行流程:

                 * 语句块只有一条执行语句时,一对{}可以省略,但建议保留

        ​​​​​​​        if...else嵌套

                        在 if 的语句块中,或者是在else语句块中,又包含了另外一个条件判断(可以是单分支、双分支、多分支),就构成了嵌套结构。    

        3.2 switch-case选择结构:

                格式:

switch(表达式){
    case 常量值1:
        语句块1;
        //break;
    case 常量值2:
        语句块2;
        //break; 
    // ...
   [default:
        语句块n+1;
        break;
   ]
}

                执行流程:

                 注意:                   

                        1.switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);

                        2.case子句中的值必须是常量,不能是变量名或不确定的表达式值或范围;

                        3.同一个switch语句,所有case子句中的常量值互不相同;

                        4.break语句用来在执行完一个case分支后使程序跳出switch语句块;break,程序会顺序执行到switch结尾;

                        5.default子句是可选的。同时,位置也是灵活的。当没有匹配的case时,执行default语句。

        ​​​​​​​        利用case的穿透性:

                        在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,执行终止。

        3.3 if-else语句与switch-case语句比较

                结论:凡是使用switch-case的结构都可以转换为if-else结构。反之,不成立。

                建议:如果既可以使用switch-case,又可以使用if-else,建议使用switch-case。因为效率稍高。

                if-else语句优势:

                        if语句的条件是一个布尔类型值,if条件表达式为true则进入分支,可以用于范围的判断,也可以用于等值的判断,使用范围更广

                        switch语句的条件是一个常量值(byte,short,int,char,枚举,String),只能判断某个变量或表达式的结果是否等于某个常量值,使用场景较狭窄

                switch语句优势:

                        当条件是判断某个变量或表达式是否等于某个固定的常量值时,使用if和switch都可以,习惯上使用switch更多。因为效率稍高。当条件是区间范围的判断时,只能使用if语句。

                        使用switch可以利用穿透性,同时执行多个分支,而if...else没有穿透性。

4.流程控制之循环语句

        4.1 for循环

                格式:

for (①初始化部分; ②循环条件部分; ④迭代部分){
         	③循环体部分;
}

                执行流程:

                 说明:

                        1.for(;;)中的两个;不能多也不能少

                        2.初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔

                        3.循环条件部分为boolean类型表达式,当值为false时,退出循环

                        4.可以有多个变量更新,用逗号分隔

        4.2 while循环

                格式:

①初始化部分
while(②循环条件部分){
    ③循环体部分;
    ④迭代部分;
}

                执行流程:

                 说明:

                        1.while(循环条件)中循环条件必须是boolean类型。

                        2.注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。

                        3.for循环和while循环可以相互转换。二者没有性能上的差别。实际开发中,根据具体结构的情况,选择哪个格式更合适、美观。

                        4.for循环与while循环的区别:初始化条件部分的作用域不同。

        4.3 do-while循环

                格式:

①初始化部分;
do{
	③循环体部分
	④迭代部分
}while(②循环条件部分);

                执行流程:

                 说明:

                        1.结尾while(循环条件)中循环条件必须是boolean类型

                        2.do{}while();最后有一个分号

                        3.do-while结构的循环体语句是至少会执行一次,这个和for和while是不一样的

                        4.循环的三个结构for、while、do-while三者是可以相互转换的。

5.关键字break和continue

        break:一旦执行,就结束(或跳出)当循环结构。此关键字的后面,不能声明语句。

        continue:一旦执行,就结束(或跳出)当循环结构。此关键字的后面,不能声明语句

6.Scanner:键盘输入功能的实现

        如何从键盘获取不同类型(基本数据类型、String类型)的变量:使用Scanner类。

        键盘输入代码的四个步骤:

                1.导包:import java.util.Scanner;

                2.创建Scanner类型的对象:Scanner scan = new Scanner(System.in);

                3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量

                4.释放资源:scan.close();

        注意:需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常 导致程序终止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值