JAVASE(二)
目录
一、运算符
1.算数运算符
2.比较运算符
3.赋值运算符
4.逻辑运算符
5.条件运算符(三元运算符)
6.位运算符
二、控制台输入
一、运算符
1.算数运算符
算数运算符包括+(加)、-(减)、*(乘)、/(除)、%(取余)、++(自增)、--(自减)。
(1)其中+不仅可以用来作数值运算,还可以用来连接字符串。如:
int a=10;
char c= 'a';
// 数值运算
System.out.println(a+c);
// 字符串连接
String b="aba";
System.out.println(b+c);
System.out.println(b+a);
运行结果如下:
(2)自增和自减的细节问题在之前有做总结,链接如下:
关于自增和自减的一些细节问题-CSDN博客
2.比较运算符
比较运算符包括:>(大于)、<(小于)、==(等于)、!=(不等于)、>=(大于等于)、<=(小于等于)。
(1)比较运算符的结果都为布尔型即true或false。
(2)注意区分==和=,==是比较运算符,=是赋值运算符。
(3)==和 != 不仅可以用于基本数据类的比较,还可以用于引用类型的比较。
// 基本类型的比较
byte a =1;
int b=1;
System.out.println(a==b);
// 引用类型的比较
String c="a1a";
String d="a1a";
System.out.println(c!=d);
运行结果:
3.赋值运算符
赋值运算符包括:=、+=、-=、*=、/=、%=。
(1)=即把符号右边的值赋给左边,需要注意的是右边的数据类型是否与左边所声明的类型相一致。
(2)除了=之外,其余的运算符在运算时会有隐式的数据类型强制转换。
首先按照运算规则来看,+=实际上就是将左边的变量值与右边值相加再赋给左边的变量。
如:
int c = 2;
//表达式1
c = c + 2;
System.out.println(c);
int a = 2;
//表达式2
a += 2;
System.out.println(a);
最终运算结果a和c的值都为4。由此看似c+=2和c=c+2毫无区别。但如果是以下情况:
int a=3;
float b=1;
//表达式1
a+=b;
System.out.println(a);
int c=3;
float d=1;
//表达式2
c=c+d;
System.out.println(c);
表达式2:c=c+d;会报错,原因是c+d的结果是float类型,而c是int类型,需要强制转换。但是a+=b却能执行。实际上此时的a+=b相当于a=(int)(a+b)。
根据之前的总结,混合运算时会先将所有数据转换为容量最大的类型。由于a是int型,b是float型,所以a+b时会先将a转换为float类型,最终的结果也是float类型。此时就不能直接赋给a,除非进行强制转换才可以。而直接使用赋值运算符则隐式地包含了这个过程。
4.逻辑运算符
逻辑运算符包括&(与)、|(或)、!(非)、^(异或)、&&(短路与)、||(短路或)。
(1)逻辑运算符的两边都是布尔型,运算结果也是布尔型。
(2)&和&&的区别在于:&的左边无论真假,其右边都会进行运算。而&&的左边如果是假,则右边不会进行运算。| 和 || 的区别同理。
如:
int a=2;
System.out.println(a>3&(++a)>3);
System.out.println(a==3&(++a)>3);
System.out.println(a>4&&(++a)>4);
System.out.println(a);
运行第一个输出,明显为false;此时a为3。然后运行第二个输出,结果应为true,此时a为4。
运行第三个输出时,因为a>4为假,所以不会运行后面的表达式,输出结果为false;此时a仍为4,最后输出a。
运行结果如下:
(3)&、|、^ 除了可以做逻辑运算符之外,还可以做位运算符。具体当做哪种运算符使用,要看符号两边是否都为布尔型。
5.条件运算符(三元运算符)
格式如下:
(条件表达式)?表达式1:表达式2
如果条件表达式为真,则执行表达式1,如果为假,则执行表达式2。
6.位运算符
位运算符包括:<<(左移)、>>(右移)、>>>(无符号右移)、~(取反)、&(与)、|(或)、^(异或)。
(1)位运算符即对二进制比特位的运算,比如当2参与位运算的时候,会先将2变为二进制的形式,再参与运算。
(2)>>和>>>区别在于:>>运算后,二进制的符号位保持不变。而>>>运算后,二进制的符号位固定为0。
如:
byte a=-6;
System.out.println(a>>1);
System.out.println(a>>>1);
运行结果如下:
(3)&、|、^、~ 都是先换成二进制,再对比特位进行相应操作。比如2&3,就是先将2和3都变成二进制形式,然后两个二进制对应的每一位进行相与。其次,两个变量交换值时还可以用^运算实现。
二、控制台输入
为了用户和程序之间可以实现交互式数据输入,java提供了一个Scanner类,该类可以让用户在控制台中输入,并将数据读取到程序中。(与C语言的Scanf函数功能类似)。
步骤如下:
1.创建一个Scanner对象
Scanner 变量名 =new Scanner(System.in);
2.给予提示(该步骤可跳过)
System.out.println("想要提示的内容");
3.调用对象的方法
根据想要输入的数据类型选择对应的方法。如:字符串类型: 变量名.next();
整数类型:变量名.nextInt();
当程序执行到该方法时便会阻塞,等待用户输入数据并按下回车键结束输入后,该对象便会读取输入的数据到程序中。