字符转换
short s=‘0’;//没有问题,会类型检查,是字符类型数据要进行赋值,把这个字符转换成其对应的ASCII值
char c=s;//编译出错,char 没有负数
byte i=128;//-0 当前类型的最小值
一、运算符
算数运算符
比较运算符
赋值运算符
逻辑运算符
位运算符
三目(元)运算符
1、算数运算符+ - * / % ++ –
±------->相加、字符串连接符
a、字符常量遇到整数类型会转换成其对应的ASCII值
System.out.println(1+‘a’);//98
b、整数遇到字符串会拼接,字符串可以拼接任何数据
System.out.prinln(2+“aaaa”);//2aaaa
c、算数异常----->arithmeticexception------->System.out.prinln(1/0);
小数允许除零
finity无穷 ------->System.out.prinln(1.0/0);
-finity 负无穷--------->System.out.prinln(-1.0/0);
++ –
如果++或者–修饰数据或者变量的后面,先进行传值再自加1或者自减1,如果修饰在前面就先自加或者自减再进行传值
2、赋值运算符 =
= 一般将右边的值赋给左边
扩展:
+= -= = /= %= &= ( 按位与等) |=(按位或等) ^=(按位异或等) >>=(右移等)
<<= (左移等) >>>=(无符号右移等)
a、byte a=1,b=2;
a=a+b;//编译出错----->a=(byte)(a+b);
a+=b;//没问题------->默认强转
Java不支持连等定义,但支持连等赋值
byte b1=b2=b3=7;//不支持
int a =3; int b=a+=a-=a=a++;//没问题-3------->从左往右依次编译,变量都有了具体的值,右边改变的值不能影响左边已经编译了的值
表达式:用于连接变量或者数据且符合Java语法的式子(a+b)
3、比较(关系)运算符(结果一定是布尔值)
== > < >= <= !=
4、逻辑运算符
&(逻辑与) |(逻辑或) ^(逻辑异或) !(逻辑非) &&(双与) ||( 双与)
总结:&遇到false则false
|遇到true则true
^相同false 不同则true
!对结果取反,如果有奇数个非结果就是取反,偶数个就是本身
&& 与&运算规律一致,如果&&的左边是false 则他的右边就不执行--------->短路
||和|运算规律一致,如果||的左边是true 则他的右边就不执行------->短路
注意:
System.out.println(true|| (a++==b)&&()c- ->b);
如果||和&&同时出现在一个表达式中,||在&&前面,如果||发生了短路他会把&&一起短路掉
5、位运算符
所有的操作的数据要转成二进制补码形式
&(按位与) |(按位或 ) ^(按位异或) ~(按位取反) >>(右移) <<()左移 >>>(无符号右移)
操作&
4&2 ----------->0
操作 |
操作^
扩展:一个整数按位异或上另一个整数两次还是本身
int a=2,b=4;
a ^b ^ b------->a
交换两个变量的整数值
效率:按位异或(只能是整数)求和(一般是整数)中间量(任意数据、简单,开发中常用)
1、中间量
int a,b;
int temp=a;
a=b;
b=temp;
2、按位异或
a=a ^b;
b=a ^b;
a=a^b;
3、求和
a=a+b;
b=a-b;
a=a-b;
操作~(所有位按位取反)
~4 ------> -5
操作>>(右移)如果是正数,往右移动几位就在左边最高位补几个0
如果负数,往右移动几位就在左边的最高位补几个1
<<(左移)无论正负数,往左移几位就在最右边补几个0
>>>(无符号右移)无论正负数,往右移几位就在左边的最高位补几个0
三元运算符
格式:
表达式?表达式值1:表达式值2;
执行流程:先计算表达式的值,如果是true 就执行表达式1,返回值1;如果是false就执行表达式2返回值2
注意:两个表达式的值类型可以不一样,(一个为int一个为char)保证两个表达式值的类型在返回值类型的范围内
求三个整数的和(两种方法)
int a=2,b=4,c=6;
//两两比较
int max=a>b?a:b;
System.out.println(max>c?a:=max:c);
//高级算法
System.out.println(a>b?(a>c?a:c):(b>c?b:c));
优先级:
键盘录入
步骤:
1、导包:需要使用的类和本类不在一个包下
import java.util.Scanner;
2、找到这个Scanner
Scanner sc=new Scanner(System.in);
3、获取数据 .的 的意思
获取整数
int num =sc.nextInt();
获取一行
String s =sc.nextLine();
扩展:原码补码相关(负数)