零基础学Java第五章

一、Java运算符

运算符:对常量和变量进行操作的符号称为运算符。

表达式:用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。

例如:定义两个int类型的变量a,b,做加法就是(a + b)

常用运算符:

 算术运算符
 赋值运算符
 关系运算符
 逻辑运算符
 三元运算符

1. 算术运算符

1.1 算术运算符概述

对常量和变量进行操作的符号就是算术运算符。一般分为 +,-,*,/,%,++,--

package com.test.day02;
/*
* 运算符:对常量和变量进行操作的符号
* 表达式:用运算符连接起来的符合java语法的式子。不同类型的运算符连接起来的式子是不同的表达式。
* 		举例:定义两个int类型的变量a,b,
* 			a + b
* 
* 运算符分类:
* 		算术运算符,赋值运算符,关系运算符,逻辑运算符,三元运算符。
* 
* 算术运算符:
* 		+,-,*,/的基本使用
*/

public class OperatorDemo {
 public static void main(String[] args) {
 	// 定义两个变量
 	int a = 3;
 	int b = 4;

 	System.out.println(a + b);
 	System.out.println(a - b);
 	System.out.println(a * b);
 	System.out.println(a / b);

 	// 整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算
 	System.out.println(3 / 4.0);
 	System.out.println(3.0 / 4);

 }
}

1.2.算数运算符取余和除法的区别

%:取余运算符。得到的是两个相除数据的余数。

/:除法运算符。得到是两个相除数据的商。

使用场景: %:判断两个数据是否整除。

public class OperatorDemo2 {
 public static void main(String[] args) {
 	int a = 5;
 	int b = 3;

 	System.out.println(a / b);
 	System.out.println(a % b);
 }
}

1.3.算数运算符取余和除法的区别

字符参与运算
其实是拿该字符对应的数值来操作,这里可以参考ASCII码
‘a’ 97
‘A’ 65
‘0’ 48
字符串参与运算
这里其实做的不是加法运算,而是字符串拼接。
字符串和其他类型的数据做拼接,结果是字符串类型的。

package com.test.day02;
/*
* 整数的加法。
* 字符参与加法操作。拿字符在计算机中底层存储对应的数据值来参与运算的。
* 		'0'		48
* 		'a'		97
* 		'A'		65
* 字符串参与加法操作。
* 		这里的+其实不是加法,而是字符串连接符。
*/

public class OperatorDemo3 {
 public static void main(String[] args) {
 	// 整数加法
 	int a = 10;
 	int b = 20;
 	System.out.println(a + b);
 	System.out.println("------------------");

 	// 字符参与加法操作
 	char c = '0';
 	char c2 = 'a';
 	System.out.println(a + c);
 	System.out.println(a + c2);
 	System.out.println("------------------");

 	// 字符串参与加法操作
 	System.out.println("hello" + a);
 	System.out.println("hello" + a + b); // "hello"+10,然后再和b进行拼接
 	System.out.println(a + b + "hello");

 }
}

结果:

2. 赋值运算符

2.1 赋值运算符概述

基本的赋值运算符:=

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

+=: a+=20;相当于a = (a的数据类型)(a + 20);

package com.test.day02;
/*
* 赋值运算符:
* 		A:基本	=
* 		B:扩展	+=,-=,*=,...
* 
* +=:
* 		a+=20;
* 		相当于
* 		a = (a的数据类型)(a + 20);
*/

public class OperatorDemo3 {
 public static void main(String[] args) {
 	// 把10赋值给int类型的变量a
 	int a = 10;

 	// += 把左边和右边的数据进行运算,最后赋值给左边。左边的只能是变量
 	a += 10;// 相当于a = a + 10
 	System.out.println("a:" + a);
 	System.out.println("----------------------");

 	short s = 10;
 	// s += 20; // 相当于 s = s + 20;
 	s = (short) (s + 20);
 	System.out.println("s:" + s);

 }
}

3. 关系运算符

3.1 关系运算符概述

关系运算符包含以下内容:

==,!=,>,>=,<,<=

关系运算符的结果都是boolean型,也就是要么是true,要么是false。

注意事项:

关系运算符“==”不能误写成“=”

package com.test.day02;
/*
* 关系运算符:
* 		==,!=,>,>=,<,<=
* 		关系运算符的结果是boolean类型。
* 
* 注意:
* 		千万不要把==写成=
*/

public class OperatorDemo3 {
 public static void main(String[] args) {
 	int a = 10;
 	int b = 20;
 	int c = 10;

 	System.out.println(a == b);
 	System.out.println(a == c);
 	System.out.println("-----------------");
 	System.out.println(a != b);
 	System.out.println(a != c);
 	System.out.println("-----------------");
 	System.out.println(a > b);
 	System.out.println(a > c);
 	System.out.println("-----------------");
 	System.out.println(a >= b);
 	System.out.println(a >= c);
 	System.out.println("-----------------");

 	int x = 3;
 	int y = 4;
 	// System.out.println(x == y);
 	// System.out.println(x = y);// 把y赋值给x,把x的值输出
 	boolean bb = (x == y);
 	// 报错
 	// boolean cc = (x = y);
 	int cc = (x = y);
 }

}

4. 逻辑运算符

4.1 逻辑运算符概述

1)逻辑运算符有哪些
&,|,^,!,&&,||

2)逻辑运算符的基本用法

程序中做重要的判断,例如我们一批数字,4,8,6,1,3 我们需要在数字 3 且 1 的时候处理某种业务,就可以说是 3 && 1。具体可以看下面的代码示例

3)注意事项:
a:逻辑运算符一般用于连接boolean类型的表达式或者值。

b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。

 	算术表达式:a + b
	比较表达式:a == b(条件表达式)

4)结论:
&逻辑与:有false则false。

|逻辑或:有true则true。

^逻辑异或:相同为false,不同为true。

!逻辑非:非false则true,非true则false。

特点:偶数个不改变本身。
package com.test.day02;
/*
* 逻辑运算符:用于连接关系表达式。
* &,|,^,!
* &&,||
* 
* 与:&	有false则false
* 或:|	有true则true
* 异或:^ 相同则false,不同则true。(男女朋友)
* 非:!	true则false,false则true
*/

public class OperatorDemo3 {
 public static void main(String[] args) {
 	int a = 10;
 	int b = 20;
 	int c = 30;

 	System.out.println((a > b) & (a > c));// false & false
 	System.out.println((a < b) & (a > c)); // true & false
 	System.out.println((a > b) & (a < c)); // false & true
 	System.out.println((a < b) & (a < c)); // true & true
 	System.out.println("---------------");
 	System.out.println((a > b) | (a > c));// false | false
 	System.out.println((a < b) | (a > c)); // true | false
 	System.out.println((a > b) | (a < c)); // false | true
 	System.out.println((a < b) | (a < c)); // true | true
 	System.out.println("---------------");
 	System.out.println((a > b) ^ (a > c));// false ^ false
 	System.out.println((a < b) ^ (a > c)); // true ^ false
 	System.out.println((a > b) ^ (a < c)); // false ^ true
 	System.out.println((a < b) ^ (a < c)); // true ^ true
 	System.out.println("---------------");
 	System.out.println((a > b)); // false
 	System.out.println(!(a > b)); // !false
 	System.out.println(!!(a > b)); // !!false
 }
}

4.2 逻辑运算符概述逻辑运算符&&与&的区别,面试常问可以点此了解

1)&&和&的区别?

a:最终结果一样。

b:&&具有短路效果。左边是false,右边不执行。

&是无论左边是false还是true,右边都会执行

2)||和|的区别?

a:最终结果一样

b:||具有短路效果.左边是true,右边不执行

|是无论左边是false还是true,右边都会执行
package com.test.day02;
/*
* &&和&的结果一样
* ||和|的结果一样
* 
* &&和&的区别:
* 		&&如果左边是false,右边不执行。
* 		&无论左边是true还是false,右边都会执行。
*/

public class OperatorDemo3 {
 public static void main(String[] args) {
 	int a = 10;
 	int b = 20;
 	int c = 30;

 	System.out.println((a > b) && (a > c));// false && false
 	System.out.println((a < b) && (a > c)); // true && false
 	System.out.println((a > b) && (a < c)); // false && true
 	System.out.println((a < b) && (a < c)); // true && true
 	System.out.println("---------------");
 	System.out.println((a > b) || (a > c));// false || false
 	System.out.println((a < b) || (a > c)); // true || false
 	System.out.println((a > b) || (a < c)); // false || true
 	System.out.println((a < b) || (a < c)); // true || true
 	System.out.println("---------------");

 	int x = 3;
 	int y = 4;
 	// System.out.println((x++ > 4) & (y++ > 5)); // false & false
 	System.out.println((x++ > 4) && (y++ > 5)); // false && false
 	System.out.println("x:" + x);
 	System.out.println("y:" + y);

 }
}

5. 逻辑运算符

5.1 逻辑运算符概述

1)格式:
(关系表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;

2)示例:
获取两个数中大数。

int x=3,y=4,z;

z = (x>y)?x:y;//z变量存储的就是两个数的大数
package com.test.day02;

/*
* 三元运算符:
* 
* 格式:
* 		(关系表达式)?表达式1:表达式2;
* 执行流程:
* 		A:计算关系表达式的值,看是true还是false
* 		B:如果是true,表达式1就是运算结果
* 		      如果是false,表达式2就是运算结果
*/
public class OperatorDemo3 {
 public static void main(String[] args) {
 	int a = 10;
 	int b = 20;

 	int c = (a > b) ? a : b;
 	System.out.println("c:" + c);

 }
}

比较两个数是否相等

package com.test.day02;

/*	
* 三元运算符的练习
* 比较两个整数是否相同
*/
public class OperatorDemo3 {
 public static void main(String[] args) {
 	// 定义两个int类型的变量
 	int a = 10;
 	int b = 20;

 	boolean flag = (a == b) ? true : false;
 	// boolean flag = (a == b);
 	System.out.println(flag);

 }
}

获取三个数中的最大值

package com.test.day02;

/*
* 获取三个整数中的最大值
*/
public class OperatorDemo3 {
 public static void main(String[] args) {
 	// 定义三个int类型的变量
 	int a = 10;
 	int b = 30;
 	int c = 20;

 	// 先比较两个整数的大值
 	int temp = ((a > b) ? a : b);
 	int max = ((temp > c) ? temp : c);
 	System.out.println("max:" + max);

 }
}

关注公众号'巧叹',获取更多知识点和分布式系统项目源码及视频,300多个视频等你来拿

posted @ 2020-09-16 21:03  sugarit  阅读(200)  评论(0)    收藏  举报