Java字符之间的运算
字符之间的运算的转换
自动转换:
int a=12;
double b=10.5;
System.out.println(a+b);
强制转换:
doublea=12.8;
doubleb=10.3;
int sum= (int) (a+b); //强制类型转换
System.out.println(sum);
因为在Java字符中
整型、浮点型和字符型的数据在混合运算中可以相互转换,这种转换是自动的,类型转换时遵循以下原则:
容量小的类型自动转换为容量大的类型,当使用byte、short、char进行计算时,会自动转换成int类型
(byte、short、char) -> int -> long -> float -> double
(字符型会自动转换成int型,所需要的可以对照ASCII码)
容量大的类型转换为容量小的类型时,需要加上强制转换符,但是会造成数据的精度降低
有多种类型数据的混合运算时,系统会自动将所有参与运算的类型都转换成容量最大的类型,然后再进行运算
通俗的说就是:
相当于一个小东西装进大瓶子里,不要什么转换(自动转换)
把一个大东西装进小瓶子里,就要强制转换,改变其大小(强制转换)
练习:写一个简单的计算器,输入两个double类型的数,得到一个整型数。
importjava.util.Scanner;
public class New{
public static voidmain(String[] args) {
System.out.println("请输入一个数");
double i=newScanner(System.in).nextDouble();
System.out.println("请再输入一个数");
double y=newScanner(System.in).nextDouble();
intres=(int)(i+y);
System.out.println("输出的结果是:"+res);
}
}
算术运算符
++在前,表示先自加再赋值,++在后,表示先赋值再自加
int i=0;
int j=0;
j=++i; //++在前,表示先+1,再赋值
j=i++; //++再后,表示先赋值,再+1
System.out.println(j);
取模运算符
Ps:取模运算中结果的正负取决于第一个数,即被取模数
System.out.println(10 % 3); //1
System.out.println(10 % -3); //1
System.out.println(-10 % 3); //-1
System.out.println(-10 % -3);//-1
字符串连接符
Ps:“+”不仅可以将非字符串数据相加,还可以有字符串拼接的作用
Ps:“+”两侧的操作数中只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串然后再进行连接
System.out.println("5+5="+10); //5+5=10
System.out.println("5+5="+5+5); //5+5=55
赋值运算符
赋值运算符的符号有哪些?
=:赋值,int a=2;表示将2这个值赋予变量a
+=:a+=2;等同于a=a+2;
-+:a-=2;等同于a=a-2;
*=:a*=2;等同于a=a*2;
/=:a/=2;等同于a=a/2;
%=:a%=2;等同于a=a%2;
比较运算符
Ps:比较运算符的结构都是布尔型,要么是true,要么就是false
Ps:比较运算符“==”不可误写成“=”
逻辑运算符
Ps:^异或表示,如果两个条件相同即为false,两个条件相异即为true。
Ps:&&和||表示,只要第一个条件符合要求,第二个条件将不会去执行;而&和|表示,无论第一个条件是否符合要求,第二个条件都会去执行。
三元运算
三元运算符是怎么运算的?
条件表达式? 表达式1:表达式2
如果满足条件true就执行表达式1
如果不满足条件false就执行表达式2
实例
练习:输入一个数,判断这个数是奇数还是偶数
System.out.println("请输入一个整数");
int a=newScanner(System.in).nextInt();
String res=a%2==0? "偶数":"奇数";
System.out.println(res);
拔高题:输入一个年份,判断这一年是闰年还是平年
System.out.println("请输入一个年份");
int a=newScanner(System.in).nextInt();
String res=a%4==0&a%100!=0|a%400==0? "闰年":"平年";
System.out.println(res);