java逻辑运算符怎么用,java中逻辑运算符的运算法则

  java逻辑运算符怎么用,java中逻辑运算符的运算法则

  00-1010运算符算术运算符基本四则运算符(-*/%)递增运算符(=-=*=/=%=)自递增/自递减运算符(-)关系运算符逻辑运算符逻辑与()逻辑或()逻辑不(!按位运算符按位与()按位或()按位求反(~)按位异或()移位运算左移()右移()无符号右移()摘要条件运算符程序逻辑控制逻辑控制语句分支语句循环结构Java输入和输出模式输出到控制台从键盘输入整合练习摘要

  00-1010运算符,顾名思义,是用来执行数学运算的。在Java中,运算符可以分为:算术运算符,关系运算符,逻辑运算符,位运算符,移位运算符,条件运算符,等。

  

目录

 

  

运算符

这里基本和C语言一样,但是也要记住一点:1。都是二元运算符,所以使用时必须有左右两个操作数;2.int/int结果仍然是int类型,它将被向下舍入。

 

  00-1010这类运算符的运算完成后,操纵的结果会赋给左操作数(类似C语言)。

  注意:只有变量可以使用这个操作符,常量不能。

  00-1010这里和C语言一样,前缀是1,然后是变量1后的值;后置是先用变量的原值,然后在表达式末尾给变量1。后置-/后置-类似。

  注意:只有变量可以使用自动递增/自动递减运算符,常量不能使用,因为常量是不允许修改的。

  

算术运算符

关系运算符主要有以下几种:==!===,他们计算后得到的结果是真/假(即布尔型)

 

  有一件事值得注意:当需要进行多次判断的时候

  公共类test demo { public static void main(String[]args){ int a=4;if(3 a5){ system . out . println(a);} } }是不能和上面的代码一样是连着写的,会给出一个错误,但是应该像下面的代码:

  公共类test demo { public static void main(String[]args){ int a=4;if(3a a5){ system . out . println(a);}}但是上面这段在Java中出错的代码在C语言中是不会报错的。在C语言中,它会先判断3是否小于A,当发现是时,Ze会将其改为1,然后再判断1是否小于5。如果找到了,就直接执行这个if语句。但是这种在计算机中的执行方式肯定是不符合我们元书的意愿的,所以从这方面可以看出Java比C语言更安全(因为这个时候Java会直接报错)。

  

基本四则运算符(+ - * / %)

逻辑运算符是所有运算符中最重要的,其中有三个逻辑运算符:!其结果都是布尔型的(真/假)。

 

  

增量运算符(+= -= *= /= %=)

语法为:布尔表达式布尔表达式(注意:左右表达式都应为布尔类型)

 

  与C语言相同:

  1.只有当两个表达式都为真时,结果才为真;两个表达式只要有一个是假的,结果就是假的。

  2.跟随短路求值:如果左边的表达式为假,那么结果一定为假,右边的表达式将不求值。

  与C语言不同:纯使用时,如果表达式结果为布尔型,也可以表示逻辑AND,但不会遵循短路求值。

  公共类test demo { public static void main(String[]args

  ) { int a=10; System.out.println(a>20 & a/0 == 0); //err }}

 

  

逻辑或()

语法是:布尔表达式布尔表达式(注意:左右表达式应该都是布尔类型)

 

  与C语言相同:

  1. 两表达式只要有一个是真,那结果就是真;只有两个表达式都为假,结果才为假。

  2. 遵循短路求值:如果左侧表达式为真,那么结果就一定是真,不会计算右侧的表达式。

  与C语言不同:单纯使用时,如果表达式结果为布尔类型,也可以表示逻辑或,但是不会遵循短路求值。

  

public class TestDemo { public static void main(String[] args) { int a=10; System.out.println(a<20 a/0 == 0); //err }}

 

  

逻辑非(!)

语法是:!表达式

 

  与C语言相同:真变假,假变真。

  

 

  

位运算符

我们知道字节是最小的存储单位,Java也不例外,在Java中数据存储的最小单位是字节,而数据操作的最小单位是比特位。其每个字节是由8个二进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。

 

  位操作表示按二进制位运算。计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的每一位依次进行计算。

  

位运算符主要有以下四个:& ~ ^(其中除了~是一元运算符以外,其余的都是二元运算符)。这部分知识基本与C语言一模一样(当做巩固,具体见之前文章或者题目)。

 

  

 

  

按位与(&)

两个二进制位都是1,则结果是1,否则结果为0(注意:只能是整数(int/short/long/byte)的时候)。

 

  

 

  

按位或()

两个二进制为都是0,则结果是0,否则结果为1(注意:只能是整数(int/short/long/byte)的时候)。

 

  

 

  

按位取反(~)

把所有二进制位0转为1,1转为0。

 

  

 

  

按位异或(^)

两个数字的二进制相同,则结果为0;相异的结果则为1。

 

  

 

  

移位运算

移位运算符主要有三个:<< >> >>>,且都是二元运算符,都是按照二进制比特位来运算的。

 

  

 

  

左移(<<)

与C语言一样:

 

  1. 最左侧位舍去,最右侧补0(注意:左移时,丢弃的是符号位,因此正数左移可能会变成负数)。

  2. 左移一位相当于原数字*2;左移N位相当于原数字*2的N次方。

  

 

  

右移(>>)

与C语言一样:

 

  1. 最右侧位舍弃,最左侧不符号位(正数补0,负数补1)。

  2. 右移一位相当于原数字/2;左移N位相当于原数字/2的N次方。

  

 

  

无符号右移(>>>)

无符号右移在C语言中是没有的,其作用是:最右侧位舍弃,最左侧补0。

 

  

 

  

小结

1. 进行移位运算相对于直接做乘除效率会高一些,所以当某个代码正好需要乘除2的N次方的时候就可以使用移位运算。

 

  2. 对负数进行移位运算,会得出向上取负数的整的值,导致其运算的结果与直接做除法的结果不相同。

  

public class TestDemo { public static void main(String[] args) { System.out.println(-3>>1); //-2 System.out.println(-3/2); //-1 }}

 

  

条件运算符

语法是:布尔表达式1?表达式2:表达式3(当布尔表达式1的值为ture,整个表达式的值为表达式2的值;当布尔表达式1的值为flase,整个表达式的值为表达式3的值)。

 

  

这是唯一的一个条件运算符,也是唯一一个三目运算符。

 

  

注意的点:

 

  1. 表达式2和表达式3的结果是要同类型的,除非是能够发生类型隐式类型转换的。

  2. 表达式是不能单独存在的,其产生的结果必须要被使用。

  

 

  

程序逻辑控制

 

  

Java中程序的逻辑控制语句

 

  

分支语句

在Java中,分支语句有两种:if语句和switch语句。大部分与C语言中的语法一样(详细可以看之前C语言文章),但是还有几点需要注意:

 

  

1. 在if语句中的判断表达式必须是布尔表达式

 

  2. 悬垂else问题也是和C语言一样,匹配的是其最近的if

  3. 在switch语句中,多个case后的常量值是不可以重复的

  4. switch语句的括号内只能是下面的几种类型:

  

(1)基本类型:byte、char、short、int(注意不能是long类型)

  

(2)引用类型:String常量串、枚举类型

  

 

  

循环结构

在Java中,循环语句有三种:while循环、for循环、do……while循环。大部分与C语言中的语法一样(详细可以看之前C语言文章),但是还有几点需要注意:

 

  

1. 使用while循环的时候的循环条件必须是布尔类型

 

  2. 使用for循环的时候循环条件(也就是第二个表达式)也必须是布尔表达式

  3. do while循环的循环条件也必须是布尔表达式且是在第一次执行语句块之后才进行判断

  4. break的功能是让循环提前结束

  5. continue的功能是跳过本次循环,立刻进入下一次循环执行

  

 

  

Java中的输入输出方式

 

  

输出到控制台

有以下这三种方法:

 

  

public class TestDemo { public static void main(String[] args) { System.out.println(10); //输出带换行 System.out.print(10); //输出不换行 System.out.printf("%d",10); //格式化输出 }}

 

  

从键盘输入

1. 使用Scanner读取字符串/整数/浮点数

 

  案例1:

  

import java.util.Scanner;public class TestDemo { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.print("请输入姓名:"); String name=sc.nextLine(); System.out.print("请输入年龄:"); int age=sc.nextInt(); System.out.print("请输入工资:"); float money=sc.nextFloat(); System.out.println("信息如下:"); System.out.println("姓名:"+name+"n"+"年龄:"+age+"n"+"工资:"+money); sc.close(); }}

2.使用Scanner循环读取N个数字

 

  案例2:

  

import java.util.Scanner;public class TestDemo { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNextInt()){ int num=sc.nextInt(); System.out.println(num); } }}

注意:

 

  1. 当循环输入多个数据的时候,可以使用Ctrl+D来结束运行

  2. 当使用完Scanner进行输入的时候,需要将其close掉

  

 

  

巩固练习

下面引出一个猜数字游戏练习来巩固程序逻辑控制。

 

  

系统自动生成一个随机数(1-100),输入一个数字,如果输入的数比该数小,则输出猜小了;如果输入的数比该数达,则住处猜大了;否则输出猜对了。

 

  

实现代码:

 

  

import java.util.Random;import java.util.Scanner;public class TestDemo { public static void main(String[] args) { Scanner sc=new Scanner(System.in); Random random=new Random();//在此处填值可以使这个随机数一致都是同一个数 //int randNum=random.nextInt(100)+1;//1-100(方法一) int randNum=(int)(Math.random()*100+1);//1-100(方法二) while(true){ System.out.print("请输入:"); int num=sc.nextInt(); if(num<randNum){ System.out.println("猜小了"); }else if(num>randNum){ System.out.println("猜大了"); }else{ System.out.print("猜对了"); break; } } }}

 

  

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT的更多内容!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: