Java小白入门教程(4)——运算符

提纲:

1、运算符
2、算术运算符
3、赋值运算符
4、关系运算符
5、逻辑运算符
6、三元运算符
7、表达式
8、作业


一、运算符

什么是运算符?

以下表达式:
a + b
2 - 3
这里的a,b,2,3叫做操作数
操作数中间的+,-等,就叫做运算符


二、算术运算符

以下都是算术运算符

使用算术运算符是需要注意

  • 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串
public class Demo4{
    public static void main(String[] args){
        System.out.println("中" + "国");//打印出中国
    }
}
  • 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相
System.out.println(3/2);// 1
System.out.println(3.0/2);//1.5
  • “%”取模(取余数),小数取余没有意义。结果符号与被取余符号相同
System.out.println(5%3);// 5 / 3 = 1 ... 2 所以结果时 2
System.out.println(3%5);// 一个小的数对一个大的数取模,就等于它本身 3
  • 算术运算符 ++ , --的使用
int a = 3;
int b = 3;
a++;
b--;
System.out.println(a);//4
System.out.println(b);//2
  • 上面的代码输出结果 a 的值为4,b 的值为2,这说明 a 与 b 的值在原有的基础上发生了改变,改变的值为1.
  • ++运算符:会在原有值得基础上自增1
  • --运算符:会在原有值得基础上自减1
int a = 3;
int b = 3;
++a;
--b;
System.out.println(a);//4
System.out.println(b);//2
  • 上面的代码输出结果 a 的值为4,b 的值为2, 说明 ++,-- 在单独使用并且不参与操作符时,不管在前还是在后结果是一样的。
  • 接下来我们参与操作符
int a = 3;
int b;
b = a++ + 10;
System.out.println(a);//4
System.out.println(b);//13
  • 上面代码的输出结果a值为4,b 值为13;
  • 强调:当 ++,-- 运算符后置时,先使用变量 a 原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1
  • 再介绍下 ++,-- 运算符前置时,参与运算操作的变化,我们来看一段代码 :
int a = 3;
int b;
b = ++a + 10;
System.out.println(a);//4
System.out.println(b);//14
  • 强调: ++,-- 运算符前置时,先将变量 a 的值自增1或者自减1,然后使用更新后的新值参与运算操作


三、赋值运算符

以下都是Java中的赋值运算符。

说明:

  • =:将=右侧的数据,赋值给=左侧的变量
  • +=:求和后再赋值:a += b;相当于a = a + b
  • 注意:诸如 += 这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型。
public class Demo5{
 public static void main(String[] args) {
 byte x = 10;
 x += 20;// 相当于 x = (byte)(x+20);
 System.out.println(x);// 30
    }
}
    • 注意:赋值运算符左边必须是变量
    • 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的


四、比较运算符

比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false 。

说明:

  • 比较两个数值的关系的。计算结果是boolean类型
  • ==,比较两个数值,是否相等,如果相等,就是true,否则就是false。
  • !=,比较两个数值,是否不等,如果不等,就是true,否则就是false。

示例代码:

/*
关系运算符
*/
public class Test3Operation 
{
	public static void main(String[] args) 
	{
		/*
		关系运算符:表示两个数的关系的,计算结果是boolean类型的。True,False
		>,<,>=,<=,==,!=

		==,比较两个数值相等。如果相等,结果就是true,否则就是false
		!=,
		*/
		int a = 4;
		int b = 4;
		boolean res = a > b;

		boolean res2 = a <= b;

		System.out.println(res);//true

		System.out.println(res2);//false

		boolean res3 = a == b;// 4 == 4,true
		System.out.println(res3);

		boolean res4 = a != b;// 4!= 4,false
		System.out.println(res4);//false
	}
}


五、逻辑运算符

逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false

说明:

  • &&:"与操作",表示并且的意思。

运算规则:在参加计算的操作数中,如果都为true,结果就为true。有一个为false,结果就为false。

总结:一假则假,全真才真。

  • ||:"或操作",表示或者的意思。

运算规则:在参加计算的操作数中,如果都为false,结果才为false,有一个为true,结果就为true。

总结:一真则真,全假才假。

  • !:"取非、取反",一元的运算符。

运算规则:原来是true,取反后就是false,如果原来是false,取反后就是true

!true-->false

!false-->true

示例代码:

/*
逻辑运算符
*/
public class Test4Operation 
{
	public static void main(String[] args) 
	{
		/*
		逻辑运算符:&&,||,!
			注意点:
				A:逻辑运算符的操作数要求是boolean类型:true,false
				B:计算结果也是boolean类型:true,false

		&&:与操作,并且
			运算规则:在整个计算过程中,如果有一个值为false,那么整个结果就为false。
					除非所有的值都是true,那么结果才为true。
			结论:一假则假,全真才真。

		||:或操作,或者
			运算规则:在整个计算过程中,如果有一个值为true,那么整体结果就为true。
					除非所有的值都是false,那么结果才为false。
				
			结论:一真则则,全假才假。

		!:取非,也叫取反,一元运算符,就是操作数就一个
			!true-->false
			!false-->true
			
		*/
		boolean b1 = true;
		boolean b2 = false;
		boolean b3 = false;
		boolean res1 = b1 && b2 && b3;
		System.out.println(res1);

		boolean res2 = 3 < 5 && 3 == 4;
		System.out.println(res2);//false

		boolean res3 = b1 || b2 || b3;
		System.out.println(res3);

		boolean res4 = !b1;//将b1的值,取反,再赋值给res4这个变量
		System.out.println(res4);//false

		int a = 3;
		int b = (a++) + (++a);
		/*
				  3	  +  5
				  a=4    a=5
		*/
		System.out.println(b);//8
		System.out.println(a);//5

		a = 3;
		int c = --a + a++;
		/*
				2	+  2
				a=2		a=3
			    
		*/
		System.out.println(c);//4
		System.out.println(a);//3
	}
}

 


六、三元运算符(三目运算)

  • 格式
    数据类型 变量名 = (条件表达式)?表达式1:表达式2;

三元运算符运算规则

先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2

方式一:
 System.out.println( 3>2 ? “正确” : “错误” ); 
// 三元运算符运算后的结果为true,运算结果为表达式1的值“正确”,然后将结果“正确”,在控制台输出打印
​
方式二:
 int a = 3;
 int b = 4;
 String result = (a==b) ? “相等” : “不相等”;  
 System.out.println(result);
//三元运算符运算后的结果为false,运算结果为表达式2的值“不相等”,然后将结果赋值给了变量result
​
方式三:
 int n = (3>2 && 4>6) ? 100 : 200;
 System.out.println(n);
 //三元运算符运算后的结果为false,运算结果为表达式2的值200,然后将结果200赋值给了变量n


示例代码:

/*
三元运算符
*/
public class Test5Operation 
{
	public static void main(String[] args) 
	{
		/*
		三元运算符:目的,根据条件,选择一种结果。
		运算符:
			  ?   :
			X ? Y : Z
			X:布尔类型的表达式:true/false
			Y:结果1
			Z:结果2

			X的值为true,那么整个三元运算符结果就是Y。
			X的值为false,那么整个三元运算符的结果就是Z。
		*/
		int score = 59;
		String res = score == 100 ? "满分" : "不是满分";
		System.out.println(res);

		//给定一个成绩,判断是否及格?及格,不及格

		String res2 = score >= 60 ? "及格" : "不及格";
		System.out.println(res2);

		String res3 = !(score < 60) ? "及格" :"不及格";
		System.out.println(res3);
	}
}

 

七、表达式

表达式:操作数和运算符组成一个式子。

表达式的值和类型:将表达式进行计算得到的结果就是表达式的值。

7.1、自动类型提升

【扩展】控制台输入

读取控制台上输入的数据。

//step1:导入Scanenr这个扫描器
imprt java.util.Scanner;
//step2:创建Scanner扫描器
Scanner sc = new Scanner(System.in);
//step3:使用sc调用对应的方法,来读取键盘的输入
int num1 = sc.nextInt();//读取一个int类型的数据
double num2 = sc.nextDouble();//读取一个double类型的数据
String str = sc.next();//读取一个String类型的数据
char c = sc.next().charAt(0);//读取一个char类型的字符串

 


八、作业

1、请通过代码完成:

基本类型的运算
    一家商场在举行打折促销,所有的商品都进行8折优惠。一位程序员把这个逻辑写成:
    short price = ...; // 先计算出原价
    short realPrice = price *  8 / 10;//再计算出打折之后的价格
​
    int price = 1;
    int realPrice = price * 8 / 10;//0
​
    double price = 1.0;
    double realPrice = price * 8 / 10; // 0.8
​
    问:  
      A:这段代码是否正确?
      B:如果正确,假设price位100,那么计算之后的realPrice值为多少?
      C:如果不正确,应该怎么改正?
​

3、int a,b;请判断b是不是a的因子

 

2、定义一个3位数的整数n,请用表达式表示n的个位数,十位数,百位数。

已标记关键词 清除标记