Java 中的运算符和流程控制相关内容的理解

  接着之前的运算符方面,今天主要回顾运算符的一些计算、优先级方面的内容,以及一些流程控制中if-else 方面的知识。

赋值运算符

(=、+=、-=、*=、/=、%=、&=、|=、^=、<<= 、>>=、 >>>=)

byte/short/char 可以参与运算

除了 = 以外,其余的符号都要求这个变量得先有值

注意:在 Java 中不支持连等定义但是支持连等赋值

int i = 5;
i += i *= i -= 3;  -> 15
i =  5 + (5 * (5 -3)) = 15

int j = 7;
j -= j *= j++;
j=7-(7 *7) = -42

  

关系/比较运算符

(==相等  !=不等  >  <  >=  <=)

注意:不支持连着得比较方式

逻辑运算符

(&与  |或  !非  ^异或  &&短路与 ||短路或)

true & ture = true(就像是下棋,两个人都要来才能下这盘棋)

|(让某一位同学打一杯水,这杯水打过来有一个同学去了就行了)

(计算机中的二进制非真即假,要么是对的,要么是错的)

^(从物理学中总结出来的,指南针/磁石,只有一北一南才能碰到一起,相同为假,不同为真)

&&(如果前边的表达式的结果为false,则后边的表达式就不再运算,整个表达式的结果就确定为 false)

||(如果前边的表达式的结果为 true,则后边的表达式就不再运算,整个表达式的结果就确定为 true)

注意:||如果在 && 的前边可以把 && 短路掉

位运算符

注意:位运算符针对整数的补码进行运算,所以运算结果也是补码

& | ^ <<  >>  >>> ~

& :将数据转化为补码形式,然后将 0 看作false,将 1 看作 true,按位进行与运算,最后将结果转化位十进制来显示

偶数 & 任意数字 = 偶数

正数 & 任意数字 = 正数

奇数 & 1 = 1    偶数 & 1 = 0

|:7    00000111     将数据转化为补码形式,按位进行或运算,最后将结果转化位十进制显示

11  00001011     奇数 | 任意数字 = 奇数

15  00001111     负数 | 任意数字 = 负数

^:7    00000111   将数据转化为补码形式,按位进行异或运算,最后将结果转化为十进制显示

11  00001011   6^12 = 10,   10^6 = 12

12  00001100    i^i=0,j^0 = j , a^b^b=a

    交换值的方式

方式一:异或法

int i = 5, j = 9;
i = i^j;
j = i^j;   -> j = i^j^j;    ->j=i;
i = i^j;   ->i = i^j^i;    ->i = j;

方式二:加减法

int i = 5, j = 9;
i = i+j;
j = i-j;  -> j=i+j-j;  -> j = i;
i = i-j;  ->i = i+j-i; ->i = j;

方式三:追尾法

int i = 5, j = 9;
int temp = i;
i = j;
j = temp;

总结:三种方式的比较

异或法的效率是最高的。只能针对整数进行交换,局限性太大。(像小数,字符,字符串就不能交换)

加减法的效率是低于异或但是高于追尾。理论上可以交换数值类型,但实际上很少用于交换小数。

追尾法的效率是最低的。可以交换任意一个类型的值。

<<

3 << 3    00000011       <<:将数据转化为补码,然后按照指定的位数向左移动,高位次移出的数据舍弃,低位次空出的位置补 0,最后转化为十进制显示

24  000 00011000        7 << 4 = 7 * 16=112(相当于乘以 2^4)

在一定范围内,左移几位就是乘以 2 的几次方

>>

10 >> 2    00001010      >>:将数据转化为补码,然后按照指定的位数向右移动,移出的数据舍弃,如果是正数,高位次空出补 0;如果是负数则补 1,最后将数据转化为十进制显示

0000001010   14 >> 3 =1

在一定范围内,右移几位就是除以 2 的几次方

正数右移越移越小,最小是 0    负数右移越移越大,最大到 -1

>>>:无符号右移。将数据转化为补码之后,按照指定的位数向右移动,移出的数据舍弃,高位次空出,无论正负一律补 0。

~3    00000011       ~:将数据转化为补码之后,将 0<->1,最后将数据转化为十进制显示

11111100        ~10 = -11    ~i = -i - 1

-4   10000100

三元运算符

格式:逻辑值 ? 表达式1 : 表达式2

执行顺序:先执行逻辑值,如果逻辑值为 true,执行表达式1;反之则执行表达式2

注意:三元表达式本身是一个表达式,意味着这个表达式执行完成后需要一个结果  --- 这个结果必须能定义对应类型的变量来接住

a > b ? "abc" : true;  -> 没有办法定义一个统一类型的结果来存储,这种写法就是错误的

//三元表达式的嵌套
int max = i > j ? (i > k ? i : k) : (j > k ? j : k);
//练习:输出分数所对应的等级  >=90 -A  >=80 -B  >=70 -C  >=60 -D  <60 -E
        char level = score >= 90 ? ‘A‘:(score >= 80 ? ‘B‘ : (score >= 70 ? ‘C‘ : (score >=60 ? ‘D‘ : ‘E‘)));
        System.out.println(level);
扩展:从控制台获取数据
import java.util.Scanner;
Scanner s = new Scanner(System.in);
int i = s.netInt();      //获取整数
double d = s.nextDouble();      //获取小数
String str = s.next();

>= 大于等于      >>= 右移等于

10 >= 2    -> true

10 >>= 2   ->i = i >> 2;  -> 2

运算符的优先级

~!    算术(++  --  *  /  %  +  - )  <<  >>  >>>    关系    逻辑&  | ^    三元    赋值

一元                                            二元运算

(一元的几个运算符的优先级是一样的)

流程控制

顺序结构:指代码从上到下从左到右来依次编译运行的

分支结构:

  判断结构

if(逻辑值){

代码块

}

执行顺序:先执行逻辑值,如果逻辑值为 true,那么执行 代码块。

注意:如果 if 中的代码块只有 1 句话,那么可以省略 {} 不写

if(逻辑值){

Code1;

}else{

Code2;

}

练习:

1.输入三个数字,获取三个数字中的最小值

import java.util.Scanner;
public class IfElseExer {

	public static void main(String[] args){

		Scanner s = new Scanner(System.in);
		int i = s.nextInt();
		int j = s.nextInt();
		int k = s.nextInt();

		/*
		if(i < j){
			if(i < k){
				System.out.println(i);
			} else {
				System.out.println(k);
			}
		} else {
			if(j < k){
				System.out.println(j);
			} else {
				System.out.println(k);
			}
		}
		*/

		int min = i;

		if(min > j)
			min = j;

		if(min > k)
			min = k;

		System.out.println(min);
	}

}

  

2.输入一个数字表示重量,如果重量<=20,则每千克收费 0.35 元;如果超过 20 千克不超过 100 千克的范围,则超过的部分按照每千克 0.5 元收费;如果超过 100 千克,则超过的范围按照每千克 0.8 元收费。

import java.util.Scanner;
public class IfElseExer2 {

	public static void main(String[] args){

		Scanner s = new Scanner(System.in);
		double weight = s.nextDouble();

		double price = 0;
		if(weight < 0){
			System.out.println("不合法的重量!!!");
		} else {
			if(weight <= 20){
				price = weight * 0.35;
			} else {
				if(weight <= 100){
					price = 20 * 0.35 + (weight - 20) * 0.5;
				} else {
					price = 20 * 0.35 + 80 * 0.5 + (weight - 100) * 0.8;
				}
			}

		}

		System.out.println(price);

	}

}

  或者

import java.util.Scanner;
public class IfElseIfDemo {

	public static void main(String[] args){

		Scanner s = new Scanner(System.in);
		double weight = s.nextDouble();

		double price = 0;

		if(weight < 0){
			System.out.println("非法的重量!!!");
		} else if(weight <= 20){
			price = weight * 0.35;
		} else if(weight <= 100){
			price = 7 + (weight - 20) * 0.5;
		} else {
			price = 47 + (weight - 100) * 0.8;
		}

		System.out.println(price);
	}
}

  

if(逻辑值1){

Code1;

}else if(逻辑值2){

Code2;

}

练习:

输入一个数字表示月份,然后输出这个月份所对应的季节。 3 - 5 -春    6 - 8 - 夏    9 - 11 - 秋    12、1、2 - 冬

import java.util.Scanner;
public class IfElseIfExer {

	public static void main(String[] args){

		Scanner s = new Scanner(System.in);
		int month = s.nextInt();

		if(month < 1 || month > 12){
			System.out.println("Illegal month !!!");
		} else if(month > 2 && month < 6){
			System.out.println("Spring");
		} else if(month > 5 && month < 9){
			System.out.println("Summmer");
		} else if(month > 8 && month < 12){
			System.out.println("Autumn");
		} else {
			System.out.println("Winter");
		}

	}

}

  选择结构

循环结构:

原文地址:https://www.cnblogs.com/tangdiao/p/9416028.html

时间: 2024-09-29 23:38:24

Java 中的运算符和流程控制相关内容的理解的相关文章

java方法、运算符与流程控制

1. Java 的方法Method (函数 Function), 功能, 动作 1) 方法就是函数: y=f(x)=3x+6; 2) 方法的语法   (修饰词)(返回值类型)(方法名)(参数列表){       //方法体   }   public static void main(String[] args){}   如:  public static int f(int x){    int y = 3 * x + 6;    return y;  } 4) 如果有返回值定义就必须有retu

Java语言中学习数组、运算符、流程控制的一些理解

一.数组 1.数组的概念及作用 数组是相同数据类型的元素的集合:   数组本身是引用数据类型,即对象.但是数组可以存储基本数据类型,也可以存储引用数据类型. 例如: int [] a = new int [] {1,2,3,4,5,6,}; String [] s = new String [] {"小兔","小小兔","小小小兔",} : Employee [] e = Employee [10];(Employee是自定义类). 2.数组的声

Java数据类型(二)、Java运算符、流程控制

一.程序写作(创建对象的初始化过程) 1.目的/结果:输出一段话"..." 2.步骤: (1)创建一个基础类,main: (2)创建一块内存空间,用来存储这段话 ①先定义属性,name,sex,age等: ②再定义方法,需要重新创建新的class类,但不需要新的ma方法: (3)调用系统方法/库方法println,实现输出结果 ①在原有的类中创建新对象,将新的class类中的方法调用过来: ②运行,输出所有的内容. //---------------------------------

数组、运算符、流程控制

  1.数组 1.1数组的基本概念及作用 1.数组是相同数据类型元素的集合 数组本身是引用数据类型,即对象.但是数组可以存储基本数据类型,也可以存储引用数据类型. 2.数组的举例: int [] a = new int []{45,65,548,74,12}; String [] s = new String []{"小红","小李","小凯"}; 1.2数组的声明 1.数组的声明的两种方式: 数据类型 []  数组名字    例如:int  [

Python运算符与流程控制 #学习猿地

本章节主要说明Python的运算符.举个简单的例子 **4 + 5 = 9** . 例子中,**4** 和 **5** 被称为**操作数**,"**+**" 称为运算符. Python语言支持以下类型的运算符: - 算术运算符 - 比较(关系)运算符 - 赋值运算符 - 逻辑运算符 - 位运算符 - 成员运算符 - 身份运算符 - 运算符优先级 接下来让我们一个个来学习Python的运算符. ------ ## Python算术运算符 | 运算符 | 描述               

PHP100-第四讲 PHP5.4 运算符、流程控制

PHP中有丰富的运算符集,它们中大部分直接来自于C语言.按照不同功能区分,运算符可以分为:算术运算符.字符串运算符.赋值运算符.位运算符.条件运算符,以及逻辑运算符等.当各种运算符同在一个表达式中时,它们的运算是有一定的优先级的,下面将详细介绍.PPT下载请点击 PHP5.4 的流程控制语句if / switch-- PHP100-第四讲 PHP5.4 运算符.流程控制,布布扣,bubuko.com

python基础02—运算符与流程控制

运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 复合运算 +=.-=.=./=.//=.%=.*= 关系运算(比较运算) >.>=.<.<=.==.!= 由操作数和运算符组成的式子称为表达式 关系表达式是有值的(布尔值),符合数学逻辑值为True,不符合数学逻辑值为False 逻辑运算 与(and):两边的表达式同时为真,值才为真

Python之运算符和流程控制

Python之运算符和流程控制 运算符 算术运算符 + - * / % // ** # 返回一个数值 比较运算符 > >= < <= == != # 返回一个布尔值 3.赋值运算符 += -+ *= /= 逻辑运算符 and/or/not 身份运算符 is和==的区别:is用于判断两个变量引用对象是否为同一个(是否在同一块内存空间中), ==用于判断引用变量的值是否相等. x = 257 y = x z = 257 print(f'x is y:{x is y}') # x is

PHP5.4 运算符、流程控制

算术运算: 加法+.减法-.乘法*.除法/.求余%.递增++.递减-- <?php echo 5%2; ?> <?php echo 6%2; ?> <?php $a=5; echo $a++;//$a+$a+1  只做运算,不做赋值 echo "<br>"; echo $a; ?> <?php $a=5; echo ++$a;//$a+$a+1  结果和运算都执行 echo "<br>"; echo