4 运算符

运算符介绍

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

  1. 算术运算符 ( + , - , * , / , % , ++ , --)
  2. 赋值运算符 ( = += -= 。。)
  3. 比较运算符(关系运算符)[> , >= , <, <=, !=, ==]
  4. 逻辑运算符 (&& , || , !, &, |, ^)
  5. 位运算符 (>> , <<)
  6. 三元运算符 (int a = 表达式 ? 表达式1 : 表达式2)

4.1.3细节说明

1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:int x= 10/3 ,结果是 3
2)当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到 取模的一个本质运算。

3)当 自增 当做一个独立语言使用时,不管是 ++i; 还是 i++; 都是一样的,等价
4)当 自增 当做一个 表达式使用时 j = ++i 等价 i = i + 1; j =i;
5)当 自增 当做一个 表达式使用时 j = i++ 等价 j = i; i = i + 1

重点难点

自增自减运算符:++ , –

  1. 作为独立的语句使用:
    前++和后++都完全等价于 i=i+1;
  2. 作为表达式使用
    前++:++i先自增后赋值
    后++:i++先赋值后自增
public class TestSign{
        public static void main(String[] args){
                int i1 = 10;int i2 = 20;
                int i = i1++;
                System.out.print(“i=+i);// 10
                System.out.println(“i1=+i1);// 11    
                i = ++i1;
                System.out.print(“i=+i); //12
                System.out.println(“i1=+i1);//12
                i = i2--;
                System.out.print(“i=+i);//20
                System.out.println(“i2=+i2);//19
                i = --i2;
                System.out.print(“i=+i);//18
                System.out.println(“i2=+i2);//18
         }
}

关系运算符(比较运算符)

1)关系运算符的结果都是boolean型,也就是要么是true,要么是false
2)关系表达式 经常用在 if结构的条件中或循环结构的条件中
在这里插入图片描述

  1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false。
  2. 关系运算符组成的表达式,我们称为关系表达式。 a > b
  3. 比较运算符“==”不能误写成“=”
public class RelationOperator {
	public static void main(String[] args) { //输入快捷键 ctrl + ], 能定位对应的}
	
		int num1 = 10;
		int num2 = 3;
		//说明:由关系运算符组成的表达式,称为关系表达式,运行的结果是true,或者flase
		System.out.println("num1 > num2 =" + (num1 > num2));//true
		System.out.println("num1 < num2 =" + (num1 < num2));//false
		
		//说明:
		//接收关系表达式 结果需要使用boolean来接收
		boolean result = num1 > num2;
		
		System.out.println("result =" + result);//true

		System.out.println("num1 != num2=" + (num1 != num2));// true


	}
}

逻辑运算符

用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个boolean值。
1)短路与 && , 短路或 ||,取反 !
2)逻辑与 &,逻辑或 |,^ 逻辑异或
在这里插入图片描述
使用说明
1)a 和 b 是一个表达式, 返回一个boolean值的表达式
2)a && b, 叫短路与, 它的运算规则是: a 和 b 都为true ,结果才为true, 否则返回false
3)a & b, 叫逻辑与, 它的运算规则是: a 和 b 都为true ,结果才为true, 否则返回false
4)a || b, 叫短路或,它的运算规则是: a 和 b 只要有一个true ,结果为true, 否则返回false
5)a || b, 叫逻辑或,它的运算规则是: a 和 b 只要有一个true ,结果为true, 否则返回false
6)!a, 叫取反, 它的运算规则是: a 为true ,结果为false, a 为false ,结果为true
7)a^b, 叫异或, 它的运算规则是: a 和 b 的值不同时,返回true, 否则返回false

&& 和 & 基本规则

名称 语法 特点
短路与&& 条件1&&条件2 两个条件都成立,结果为true
&逻辑与 条件1&条件2 两个条件都成立,结果为true
int score = 90;
		//score > 60 && score < 80 表示 score 是 > 60 并且 <80
		if (score > 60 && score < 80) {
			System.out.println("ok1"); // 成立
		}
		if (score > 60 & score < 80) {
			System.out.println("ok2");
		}


		//演示短路操作
		int a = 10;
		int b = 20;
		if (a < 5 && ++b > 15) {
			System.out.println("ok3"); // 成立
		}

		System.out.println("a=" + a + " b=" + b);// a= 10 b = 20

		//演示逻辑与
		int c = 10;
		int d = 20;
		if (c < 5 & ++d > 15) {
			System.out.println("ok3"); // 
		}

		System.out.println("c=" + c + " d=" + d);// c = 10 d = 21

&& 和 & 使用区别

&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低

名称 语法 特点
短路或 条件1||条件2 两个条件中只要有一个成立,结果为true
|逻辑或 条件1|条件2 只要有一个条件成立,结果为true
		double score = 70.8;
		if(score > 60 || score > 80) {//如果成立就执行 {} 内容
			System.out.println("ok");
		}

		if(score > 60 | score < 80) {//如果成立就执行 {} 内容
			System.out.println("ok2");
		}

//		//看看 && 和 & 的区别
		//说明区别
		//||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true
		
		int a = 10;
		if( a > 2 || a++ < 1) {
			System.out.println("ok3");
		}
		System.out.println("a=" + a); // 11





		System.out.println();
		int b = 10;
		if( b > 2 | b++ < 1) { //分析  b > 2 为true, 但是会继续执行 b++ < 1 b=11
			System.out.println("ok4");// 输出 ok4
		}
		System.out.println("b=" + b); // 11

|| 和 | 使用区别

||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低

! 取反 基本规则

名称 语法 特点
! 非(取反) !条件 如果条件本身成立,结果为false,否则为true

//如何对多行进行注释
		//添加注释 ctrl + /
		//删除注释 ctrl + \
//		int x = 1;
//		int y=1;
//		if(x++==2 & ++y==2){
//			x = 7;
//		}
//		System.out.println("x="+x+",y="+y);// x = 2 , y = 2

		//2题
		/*
		int x = 1;
		int y = 1;
		//下面执行的步骤说明
		//(1 ) x++==2  (1.1) x == 2 [false] (1.2) x = x + 1 => x = 2
		//(2) && 是短路与 , 后面不执行
		if(x++==2 && ++y==2){
			x = 7;
		}
		System.out.println("x="+x+",y="+y);// x= 2, y = 1
		*/

		//3题

		/*
		int x = 1;
		int y = 1;
		//执行步骤
		//(1) x++==1 (1.1) x == 1 [true] (1.2) x = x + 1 => x = 2
		//(2) ++y==1 (1.1) y = y + 1 =>y = 2 
		//(3) x++==1 | ++y==1  => 整体为true
		//(4) x =7
		if(x++==1 | ++y==1){
			x =7;
		}
		System.out.println("x="+x+",y="+y);// x=7, y =2

		*/

		//4题

//		int x = 1;
//		int y = 1;
//		if(x++==1 || ++y==1){
//			x =7;
//		}
//		System.out.println("x="+x+",y="+y); // x= 7, y = 1

赋值运算符

赋值运算符就是将某个运算后的值(即表达式),赋给指定的变量。
表达式:表达式指的就是任何有值的,都可以看做表达式.

赋值运算符的分类

基本赋值运算符

复合赋值运算符
+= ,-= ,*= , /= ,%= 等 , 重点讲解一个 += ,其它的使用是一个道理
a += b; [=> 等价 a = a + b]
a -= b; [=> 等价 a = a - b]
赋值运算符特点
1)运算顺序从右往左
2)赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
3)复合赋值运算符等价于下面的效果 比如:a+=3;等价于a=a+3;
4)复合赋值运算符会进行类型转换

三元运算符

条件表达式 ? 表达式1: 表达式2;
1)如果条件表达式为true,运算后的结果是表达式1;
2)如果条件表达式为false,运算后的结果是表达式2;

public class Operator3Exer {
	public static void main(String[] args) {
		//案例1:实现两个数的最大值
		int n1 = 10;
		int n2 = 20;
		int n3 = 6;
		int max1 = n1 >n2 ? n1 : n2;
		System.out.println("max1=" + max1);

		//案例2:实现三个数的最大值
		int max2 = max1 > n3  ? max1: n3;
		System.out.println("max2=" + max2);

		//第三种写法[不推荐]
		//int max3 = (n1 >n2 ? n1 : n2) > n3  ? (n1 >n2 ? n1 : n2) : n3;

	}
}

运算符优先级

1)运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
2)只有单目运算符、赋值运算符是从右向左运算的。
在这里插入图片描述
在这里插入图片描述

标识符的命名规则和规范

1)Java 对各种变量、方法和类等命名时使用的字符序列称为标识符
2)凡是自己可以起名字的地方都叫标识符

标识符的命名规则

1)由26个英文字母大小写,0-9 ,_或 $ 组成
2)数字不可以开头。
3)不可以使用关键字和保留字,但能包含关键字和保留字。
4)Java中严格区分大小写,长度无限制。
5)标识符不能包含空格。

hello  // ok
hello12 //ok
1hello // error
h-b // error
x h // error
h$4 // ok
class // error
int   // error
double //error
public //error
static //error
goto   //error
stu_name //ok

标识符命名规范

1)包名:多单词组成时所有字母都小写:xxxyyyzzz //比如 com.atguigu.crm
2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [Pascal命名法,大驼峰]
比如: TankShotGame

3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [驼峰法,小驼峰]
比如: tankShotGame

4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
比如 :定义一个所得税率 TAX_RATE

关键字

在这里插入图片描述
在这里插入图片描述

保留字

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字 
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const

发布了18 篇原创文章 · 获赞 1 · 访问量 198

猜你喜欢

转载自blog.csdn.net/andyonlines/article/details/103704232