1表达式
1.1Scanner类介绍
Scanner类是一个用于扫描输入文本的实用程序,可以方便的获取用户的输入,实现程序和人之间的交互.
使用步骤:
第一步:
导包:其实就是表示先找到Scanner这个类在哪,可以使用以下语句进行导入:
Import java.util.Scanner;
第二步:
创建对象:其实就表示申明一下,我准备开始用Scanner这个类了。
Scanner sc = new Scanner(System.in);
第三步:
接收数据:通过Scanner对象,我们可以使用常用的方法来获取用户从键盘上输入的不同类型的数据,如整数,浮点数,字符串等.
方法名称 | 说明 |
---|---|
String next() | 获得一个字符串 |
String nextLine() | 获得一个字符串 |
String nextInt() | 获得一个整数 |
String nextDouble() | 获得一个双精度浮点数 |
String hasNext() | 判断是否有输入数据,如果有则输出true,否则返回false |
next()和nextLine()的区别
next()方法
-
一定要读取到有效字符后才可以结束输出
-
对输入有效字符之间遇到空白字符,next()方法会自动将其去除
-
只有在输入有效字符后,才将其后面输入的空白作为分隔符或结束符
-
next()方法无法获取带有空格的字符
nextLine()方法:
-
以回车键作为结束符,即会返回输入回车键之前的所有字符
-
可以获取包含空白字符的输入,不会忽视空白字符
1.2赋值运算符
最为常用的: =
运算过程:就是把等号右边的结果赋值给左边的变量
public class OperatorDemo6 { public static void main(String[] args) { //1.最为简单的赋值运算符用法 int a = 10;//就是把10赋值给变量a System.out.println(a); //2.如果等号右边需要进行计算。 int b = 20; int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量 System.out.println(c); //3.特殊的用法 a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量 System.out.println(a);//20 } }
扩展赋值运算符
分类:
+=、-=、*=、/=、%=
运算规则:
就是把左边跟右边进行运算,把最终的结果赋值给左边,对右边没有任何影响
public class OperatorDemo7 { public static void main(String[] args) { //扩展赋值运算符 int a = 10; int b = 20; a += b;//把左边和右边相加,再把最终的结果赋值给左边,对右边没有任何影响 // 相当于 a = a + b; System.out.println(a);//30 System.out.println(b);//20 } }
扩展的赋值运算符中隐层还包含了一个强制转换。
以+=为例。
a += b ;实际上相当于 a = (byte)(a + b);
public class OperatorDemo8 { public static void main(String[] args) { byte a = 10; byte b = 20; //a += b; a = (byte)(a + b); System.out.println(a);//30 } }
1.3算数运算符
分类:
+ - * / %
运算特点:
+ - * :跟小学数学中一模一样没有任何区别.
/: 1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。 2.小数直接参与运算,得到的结果有可能是不精确的。 案例: System.out.println( 10 / 3);//3 System.out.println(10.0 / 3);//3.3333333333333335
%:取模、取余。 他做的也是除法运算,只不过获取的是余数而已。 案例: System.out.println(10 % 2);//0 System.out.println(10 % 3);//1 应用场景: //可以利用取模来判断一个数是奇数还是偶数 System.out.println(15 % 2);//1 奇数
注意点:
-
/ 和 % 的区别:他们两个都是做除法运算,/取结果的商。% 取结果的余数。
-
整数操作只能得到整数,如果想要得到小数,必须有浮点数参与运算。
算术运算符的高级用法:
是以+为例进行的讲解,其余减法,乘法,除法的运算规则也是一样的。
特例:字符串只有+操作,没有其他操作
1.4自增自减运算符
分类:
++ 自增运算符 -- 自减运算符
++:就是把变量里面的值+1
--:就是把变量里面的值-1
使用方式:
-
放在变量的前面,我们叫做先++。 比如:++a
-
放在变量的后面,我们叫做后++。 比如:a++
注意点:
不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。
案例
//++ int a = 10; a++;//就是让变量a里面的值 + 1 System.out.println(a);//11 ++a;//就是让变量a里面的值 + 1 System.out.println(a);//12
1.5关系运算符
又叫比较运算符,用于比较两个变量和常量的大小,并返回布尔值true或false来表示比较结果
分类:
符号 | 解释 |
---|---|
== | 就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false |
!= | 就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false |
> | 就是判断左边是否大于右边,如果成立就是true,如果不成立就是false |
>= | 就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false |
< | 就是判断左边是否小于右边,如果成立就是true,如果不成立就是false |
<= | 就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false |
注意点:
-
关系运算符最终的结果一定是布尔类型的。要么是true,要么是false
-
在写==的时候,千万不要写成=
1.6逻辑运算符
& 和 | 的使用:
&:逻辑与(而且)
两边都为真,结果才是真,只要有一个为假,那么结果就是假。
|:逻辑或(或者)
两边都为假,结果才是假,只要有一个为真,那么结果就是真。
代码案例
// & //两边都是真,结果才是真。 System.out.println(true & true);//true System.out.println(false & false);//false System.out.println(true & false);//false System.out.println(false & true);//false System.out.println("==================================="); // | 或 //两边都是假,结果才是假,如果有一个为真,那么结果就是真。 System.out.println(true | true);//true System.out.println(false | false);//false System.out.println(true | false);//true System.out.println(false | true);//true
^(异或)的使用:
计算规则:如果两边相同,结果为false,如果两边不同,结果为true
代码示例:
//^ //左右不相同,结果才是true,左右相同结果就是false System.out.println(true ^ true);//false System.out.println(false ^ false);//false System.out.println(true ^ false);//true System.out.println(false ^ true);//true
!(取反)的使用:
是取反,也叫做非。
计算规则:false取反就是true,true取反就是false
温馨提示:取反最多只用一个。
代码示例:
System.out.println(!false);//true System.out.println(!true);//false System.out.println(!!false);//注意点:取反最多只用一个。
&&:
运算结果跟&是一模一样的,只不过具有短路效果。
||:
运算结果跟|是一模一样的。只不过具有短路效果。
逻辑核心:
当左边不能确定整个表达式的结果,右边才会执行。
当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。
1.7条件运算符
又叫做:三元表达式或者问号冒号表达式。
格式:
关系表达式 ? 表达式1 :表达式2 ;
计算规则:
-
计算关系表达式的值。
-
如果关系表达式的值为真,那么执行表达式1。
-
如果关系表达式的值为假,那么执行表达式2。
注意点:
条件运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。
案例:
public class OperatorDemo12 { public static void main(String[] args) { //需求:求两个数的较大值 int a = 10; int b = 20; //格式:关系表达式 ? 表达式1 : 表达式2 ; //注意点: //三元运算符的最终结果一定要被使用。 //要么赋值给一个变量,要么直接输出。 int max = a > b ? a : b ; System.out.println(max); System.out.println(a > b ? a : b); } }
位运算符
在计算机内部,数据以二进制(0和1)的形式存储和处理.计算机通过将数据转换为二进制形式,将其存储在内存中,并对其进行操作和计算,不同的数据类型在内存中占据不同长度的二进制位,以便正确的表示和处理数据.
-
原码
原码是一种最简单的机器数表示法,其中最高位表示符号位,其余位表示该数的二进制的绝对值
-
反码
正数的反码与原码相同,而负数的反码是与其原码除符号位外,按位取反的结果
-
补码
正数的补码等于其原码,而负数的补码等于其反码加1
负数原码,反码.补码之间的转换
位运算符及其运算规则
运算符 | 含义 | 运算规则 |
---|---|---|
& | 按位与 | 两个操作数都是1,结果才是1 |
| | 按位或 | 两个操作数一个是1,结果就是1 |
^ | 按位异或 | 两个操作数相同,结果为0;两个操作数不同,结果为1 |
~ | 按位非 | 操作数为1,结果为0;操作数为0,结果为1 |
<< | 左移 | 右侧空位补0 |
>> | 右移 | 左侧空位补最高位,即符号位 |
>>> | 无符号右移 | 右侧空位补0 |
举例
int a=6; int b=5; System.out.println(6 & 5); // 4 System.out.println(6 | 5); // 7 System.out.println(6 ^ 5); // 3 System.out.println(~6); // -7 System.out.println( -5 & 6); // 2 System.out.println( 3 << 2); // 12 System.out.println( -12 >> 2); // -3
补充:
利用按位异或交换两个数的位置:
public class zuoye2{ public static void main(String[] args){ int a = 5; int b = 9; a= a^b; b= a^b; a= a^b; System.out.println(a); System.out.println(b); } } }
右移公式:m<<n=m*(2^n)
左移公式:吗>>n=m/(2^n)