目录
3.键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
字符串的"+"操作:
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,会产生一个新的字符串。
例如:字符串“123”+123会被拼接成“123123”
连续进行“+”操作时,从左到右逐个执行
例如:1+99+“中华民族万岁”
练习:
1.看代码读结果
public class yunsuanfu
{
public static void main(String[] args)
{
System.out.println(3.7+"abc");
System.out.println("abc"+true);
System.out.println('中'+"abc"+true);
System.out.println(1+2+"abc"+2+1);
}
}
第一排运行结果应为"3,7abc"
第二排运行结果应为"abctrue"
第三排运行结果应为"中abctrue"
第三排运行结果应为"3abc21"从左到右分析1+2时做数字运算,正常加减,当加到"abc"时,因为"abc"为字符串,而+遇到字符串自动变为拼接功能。
2.看代码读结果
public class yunsuanfu
{
public static void main(String[] args)
{
int age=18;
System.out.println("我的年龄是"+age+"岁");
System.out.println("我的年龄是"+"age"+"岁");
}
}
第一个输出结果应为:"我的年龄是18岁"
第二个输出结果应为:"我的年龄是age岁"
3.键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
import java.util.Scanner;
public class chaifen
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个三位数");
int i=sc.nextInt();
System.out.println("你输入的数为:"+i);
System.out.println("它的百位是:"+i/100%10);
System.out.println("它的十位是:"+i/10%10);
System.out.println("它的个位是:"+i%10);
}
}
字符的"+"操作
温馨提示:byte short char三种数据类型的数据在运算的时候,都会直接提升为int,然后再进行运算
当字符+字符,字符+数字时,会把字符通过ASCII码表查询到相应的数字再进行计算
练习:
1.看代码说结果
public class zifujia
{
public static void main(String[] args)
{
System.out.println(1+'a');
System.out.println('a'+"abc");
}
}
第一个输出结果应为98,1+ASCII码的a=1+97=98
第二个输出结果应为"aabc",只要有字符串+就是拼接的作用
自增自减运算符
符号 | 作用 | 说明 |
++ | 加 | 变量的值加1 |
-- | 减 | 变量的值减1 |
public class zizeng
{
public static void main(String[] args)
{
int a=10,b=10;
++a;
b++;
System.out.println(a);
System.out.println(b);
}
}
a,b输出结果都为11,由此可知,++和--无论放在变量的前边还是后边,单独写一行结果是一样的,但是如果自增或自减运算符参与计算,结果则截然不同
例如:
public class zizeng
{
public static void main(String[] args)
{
int a=10;
int b=a++;
int c=10;
int d=++c;
System.out.println(b);
System.out.println(d);
}
}
b的输出结果为10.而d的输出结果为11,由此可以看出,++或--的位置对计算的结果有影响,可以参考,先++/--,先++/--再用;后==/--,先用后==/--
练习:
public class zizeng
{
public static void main(String[] args)
{
int x=10;
int y=x++;
int z=++x;
System.out.println("x:"+x);
System.out.println("y:"+y);
System.out.println("z:"+z);
}
}
x的输出结果为12;x一开始赋值为10,经过y=x++和z=x++的自增输出12
y的输出结果为10;y被x++赋值,但是因为++在后面所以x仍为10
z的输出结果为12;z被++x赋值,但由于x经历过y=x++自增为11,且z=++x,++在前,先加后算
赋值运算符
符号 | 作用 | 说明 |
= | 赋值 | int a=10,将10的值赋给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a*b的值给a |
/= | 除后赋值 | a/=b,将a/b的商给a |
%= | 取余后赋值 | a%=b,将a/b的余数给a |
public class fuzhiyunsuan
{
public static void main(String[] args)
{
int a=10;
int b=20;
a+=b;//等同于a=a+b
System.out.println(a);
System.out.println(b);
short s=1;
s+=1;
System.out.println(s);
}
}
细节:+=,-=,/=底层都隐藏了一个强制类型转换。这里的s就是如此,当short类型的s和1相加时会自动转换成int类型,short类型的s=1+1,实际上等同于s=(short)(s+1);
关系运算符
符号 | 说明 |
== | a==b,判断a和b的值是否相等 |
!= | a!=b,判断a和b的值是否不相等 |
> | a>b,判断a是否大于b |
>= | a>=b,判断a是否大于等于b |
< | a<b,判断a是否小于b |
<= | a<=b,判断a是否小于等于b |
注意:关系运算符的结果都是Boolean类型,要没事true要么是false。千万不要把"=="误写成"="
public class 比较运算符
{
public static void main(String[] args)
{
int a=10;
int b=10;
int c=20;
System.out.println(a==b);
System.out.println(a==c);
}
}
练习:
你和你的约会对象在餐厅里面约会。键盘键入两个整数,表示你和你的约会对象的时髦度。如果你的时髦程度大于你对象的时髦程度,相亲成功,输出true。否则输出false。
import java.util.Scanner;
public class 练习
{
public static void main(String[] args)
{
System.out.println("请输入你的时髦度");
Scanner sc=new Scanner(System.in);
int a= sc.nextInt();
System.out.println("请输入对象的时髦度");
int b= sc.nextInt();
if(a>b)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
}
}
逻辑运算符
短路逻辑运算符
符号 | 作用 | 说明 |
&& | 短路与 | 结果和&相同,但是有短路效果 |
|| | 短路或 | 结果与|相同,但是有短路效果 |
&&表示两边都为真,结果才是真
||表示两边都为假,结果才是假
public class 短路逻辑运算符
{
public static void main(String[] args)
{
System.out.println(true&&true);//和
System.out.println(false&&true);
System.out.println(true&&false);
System.out.println(false&&false);
System.out.println(true||true);//或
System.out.println(false||true);
System.out.println(true||false);
System.out.println(false||false);
int a=10;
int b=10;
boolean result=++a<5&&++b<5;
System.out.println(result);
System.out.println(a);
System.out.println(b);
}
}
在这里中带你看下面,我们使用到了短路逻辑运算符两个&&,此时布尔类型的result先进行++a的操作,然后执行判断语句,判断a是否<5,很显然不小于,所以此时短路逻辑运算符起作用,语句结果已是false,语句不再继续执行,所以打印出的result为flase,a为11,b为10。
注意:&|,无论左边true或false,右边都要执行;&&||,如果左边能确定整个表达式的结果,右边不执行;
练习:
数字6是一个真正伟大的数字,键盘录入两个两个整数,如果其中一个为6,最终结果输出为true。如果他们的和为6的倍数。最终结果输出true。其他情况都是false。
import java.util.Scanner;
public class 短路逻辑运算符
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数");
int num1=sc.nextInt();
System.out.println("请再此输入一个整数");
int num2= sc.nextInt();
boolean Result=(num1==6||num2==6||(num1+num2)%6==0);
System.out.println(Result);
}
}
三元运算符
格式:关系表达式?表达式1:表达式2;
注意:三元运算符的结果必须被使用
public class 三元运算符
{
public static void main(String[] args)
{
int num1 = 10;
int num2 = 20;
int max = num1 > num2 ? num1 : num2;//结果必须要被使用
System.out.println(max);
System.out.println(num1 > num2 ? num1 : num2);
}
}
练习:
动物园里有两只老虎,体重分别通过键盘录入获得,请使用程序实现判断两只老虎的体重是否相等。
import java.util.Scanner;
public class 三元运算符
{
public static void main(String[] args)
Scanner Sc=new Scanner(System.in);
System.out.println("请输入第一只老虎的体重");
int Weight1=Sc.nextInt();
System.out.println("请输入第二只老虎的体重");
int Weight2=Sc.nextInt();
String Pro=Weight1==Weight2?"相同":"不同";
System.out.println(Pro);
}
一座寺庙住着三个和尚,已知他们的身高分别为150cm,210cm,165cm,求使用程序实现获取这三个和尚的最高身高。
public class 三元运算符
{
public static void main(String[] args)
{
int HeShang1 = 150;
int HeShang2 = 210;
int HeShang3 = 165;
int max1 = HeShang1 > HeShang2 ? HeShang1 : HeShang2;
int max2 = max1 > HeShang3 ? max1 : HeShang3;
System.out.println(max2);
}
}
运算符优先级
优先级 | 运算符 |
1 | .、()、{} |
2 | !、~、++、-- |
3 | *、/、% |
4 | +、-、 |
5 | <<、>>、>>> |
6 | <、<=、>、>=、instanceof |
7 | ==、!= |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | =、+=、-=、*=、/=、%=、&= |
急急急
你先别急,记住一个就行,小括号优先所有