欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java基础语法2(DAY3)

程序员文章站 2022-05-03 10:01:00
1. 运算符就是对常量和变量进行操作的符号1. 算术运算符设整数变量A的值为10,变量B的值为20操作符描述例子+加法 :相加运算符两侧的值A + B 等于 30-减法 : 左操作数减去右操作数A – B 等于 -10*乘法 :相乘操作符两侧的值A * B等于200/除法 : 左操作数除以右操作数B / A等于2%取余 : 左操作数除以右操作数的余数B%A等于0++自增: 操作数的值增加1(对变量)B++ 或 ++B 等于...

1. 运算符

就是对常量和变量进行操作的符号

1. 算术运算符

设整数变量A的值为10,变量B的值为20

操作符 描述 例子
+ 加法 :相加运算符两侧的值 A + B 等于 30
- 减法 : 左操作数减去右操作数 A – B 等于 -10
* 乘法 :相乘操作符两侧的值 A * B等于200
/ 除法 : 左操作数除以右操作数 B / A等于2
取余 : 左操作数除以右操作数的余数 B%A等于0
++ 自增: 操作数的值增加1(对变量) B++ 或 ++B 等于 21
自减: 操作数的值减少1(对变量) B-- 或 --B 等于 19

PS:

  1. 除法( / ):整数相除只能得到整数

    若想获得小数,只需要将操作的数据中任意的一个数据变为浮点数

    例如:System.out.println(x * 1.0 / y);

  2. / :获取的是商,%:获取的是余数

  3. ++,–运算符:

    1. 单独使用

    2. 前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算。

    3. 后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算

    4. +的用法:

      1)加法
      2) 正号
      3)字符串连接符

附优先级表:

优先级 描述 运算符
1 括号 ()、[]
2 正负号 +、-
3 自增自减,非 ++、–、!
4 乘除,取余 *、/、%
5 加减 +、-
6 移位运算 <<、>>、>>>
7 大小关系 >、>=、<、<=
8 相等关系 ==、!=
9 按位与 &
10 按位异或 ^
11 按位或 |
12 逻辑与 &&
13 逻辑或 ||
14 条件运算 ?:
15 赋值运算 =、+=、-=、*=、/=、%=
16 位赋值运算 &=、|=、<<=、>>=、>>>=

2. 赋值运算符

操作符 描述 例子
= 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C - A
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A等价于C = C * A
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A,C 与 A 同类型时等价于 C = C / A
%= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%= A等价于C = C%A

思考题:

short s = 1;s = s + 1;
short s = 1;s += 1;

第一行有问题,s + 1 在运算时,会将s默认转化为int类型,将int类型赋给short类型会产生错误。

第二行没有问题,扩展的赋值运算符( += 、-= 、*=、/=、%=)隐含一个强制类型转换。

即:s+=1; 等价于 s = (s的数据类型)(s + 1) ;

3. 关系运算符

比较运算符的计算结果为boolean类型

设整数变量A的值为10,变量B的值为20

运算符 描述 例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (A == B)为假。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 (A> B)为假。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 (A <B)为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 (A> = B)为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (A <= B)为真。

注:不能把“==”写成“=”

boolean flag = (a == b);	//没问题
boolean flag = (a = b);		//这个是有问题的,不兼容的类型

int c = (a = b);		//把b赋给a,然后将a留下

4. 逻辑运算符

逻辑运算符用于连接布尔型表达式

运算符 运算 范例 结果
AND(与) false & true false
| OR(或) false | true true
^ XOR(异或) true ^ false true 相同为false,不同为true
! NOT(非) !true false
&& AND(与) false && true false
|| OR(或) false || true true

&&与& 和 || 与| 的区别:

  1. 最终结果一样

  2. &&具有短路效果,左边为false,右边将不执行

  3. || 也具有短路效果,左边为true,右边将不执行

5. 位运算符

假设整数变量 A 的值为 60 和变量 B 的值为 13:

操作符 描述 例子
如果相对应位都是1,则结果为1,否则为0(有0则0 (A&B),得到12,即0000 1100
| 如果相对应位都是 0,则结果为 0,否则为 1(有1则1 (A | B)得到61,即 0011 1101
^ 如果相对应位值相同,则结果为0,否则为1(相同则0,不同则1 (A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位。(0变成1,1变成0)。 (〜A)得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。(左边最高位丢弃,右边补0 A << 2得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。(最高位是0,左边补0,最高位是1,左边补1 A >> 2得到15即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。(无论最高位是0还是1,左边补齐0 A>>>2得到15即0000 1111

:做位运算,首先要把数据转换为二进制。

  1. 位异或(^):某个数据对另一个数据异或两次,该数不变

  2. 按位左移运算符(<<):

    将左边数据乘以2的移动次幂。例如:3<<2 等价于 3 * 2 ^ 2 = 12

  3. 按位右移运算符(>>) 、按位右移补0操作符(>>>):

    当左边数为正数时,将左边数据除以2的移动次幂。例如:24>>2 等价于 24 / (2 ^ 2) = 6。


面试题:两个整数变量的交换

方式一:使用第三方变量

int c = a;
a = b;
b = c;

方式二:用位异或实现
左边:a、b、c
右边:a ^ b

a = a ^ b;
b = a ^ b;//a ^ b ^ b = a
a = a ^ b;//a ^ b ^ a = b

方式三:用变量相加的方法

a = a + b;
b = a - b;
a = a - b;

方法四:一句话搞定

b = (a + b) - (a = b);

6. 三目运算符

格式:(比较表达式)?表达式1:表达式2

比较表达式结果是一个boolean类型

如果条件为 true,运算结果为表达式1

如果条件为false,运算结果为表达式2

练习:

  1. 获取三个数中的最大值

    //分两步
    int temp = ((a > b) ? a : b);
    int max = (temp > c ? temp : c);
    //一步
    int max1 = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
    
  2. 比较两个数是否相同

    boolean flag = (m == n) ? true : false;
    

    但是不建议上面写法

    boolean flag = (m == n);
    

    此写法即可,因为m == n返回的就是boolean类型

2. 键盘录入

三步:

  1. 导包:

    1. 格式:
      import java.util.Scanner;

    2. 位置:
      在class上面

  2. 创建键盘录入对象

    格式:

    Scanner sc = new Scanner (System.in);

  3. 通过对象获取数据

    格式:
    int x = sc.nextInt();

3. 流程控制语句

1. 顺序结构:

2. 选择结构:(if语句、switch语句)

if语句:

  1. 第一种格式:

       if(关系表达式){
    	语句体;
    }
    
  2. 第二种格式:

if(关系表达式){
	语句体1;
}else{
	语句体2;
}
  1. 第三种格式:
if(关系表达式){
	语句体1;
}else if(关系表达式2){
	语句体2;
}
... ...
else{
	语句体n+1;
}

if语句的注意事项:

  1. 关系表达式必须为boolean类型
  2. 如果是一条语句,大括号可以省略,如果是多条语句,就不能省略,建议永远不省略
  3. 一般来说,有左大括号就没有分号,有分号就没有左大括号
  4. else后面没有比较表达式,只有if后面有

a. 三元运算符实现的,都可以采用if语句实现。反之不成立。

b. 当if语句控制的操作是一个输出语句的时候就不能替换,因为运算符操作完毕后就应该有个结果,而不是一个输出。

c. 数据的测试必须考虑:正确数据,错误数据,边界数据

本文地址:https://blog.csdn.net/m0_46683623/article/details/107272431