1.基本数据类型转换
自动类型转换
1.java程序在进行赋值或运算的时候,会将精度小的类型自动转换为精度大的数据类型再进行计算
2.精度大的类型赋值给精度小的类型会报错,反之则会进行自动类型转换
int a=4;
float=a+1.1;
这样写是错的,因为1.1是double类型,a+1.1为double类型,不能转为float类型
3.(byte,short),char之间不会相互自动转换
4. byte short char 三者可以计算,(不管单独还是混合)在计算的时候自动转为int类型
//1.
byte a=1;
short b=1;
short c=a+b;
//2.
byte a=1;
byte b=2;
byte c=a+b;
这样写都是错的,因为a+b为int类型,高精度不能转换为低精度
5.boolean不参与转换
6.表达式类型为精度最大的类型
int a=1;
byte b=2;
double c=3.3;
//a+b+c的类型为double类型
强制类型转换
将精度大的数据类型转换为小的数据类型,使用时要加上强制转换符(),可能造成精度降低或溢出
注意:强转符号只对最近的操作数有效
int x=(int)10*3.5;
这样写是错的,因为强转符号先将10转为int,计算后记过仍为double,无法转为int
2.基本数据类型和String类型的转换
1.基本类型转为String类型,只需将基本类型的值+“”即可
String n1=100+" ";
String a1=1.1f+" ";
String b1=true+" ";
System.out.println(n1+b1+a1);
2.String类型转为基本数据类型
通过基本数据类型的包装类.parseXX方法即可
String a="100";
int i = Integer.parseInt(a);
3.字符串转为char
含义是指把字符串的第一个字符得到
3.运算符
算术运算符
经典题:
1.
int i=1;
i=i++;
system.out.println(i);
i=?
i为1,因为计算机在进行计算的时候,先将i赋值给一个临时变量temp,在进行自增i=i+1,之后将临时变量的值给i即i=temp,所以输出的i为1
即
temp=i;
i=i+1;
i=temp;
int i=1;
i=++i;
system.out.println(i);
i=?
答案i=2
i=i+1;
temp=i;
i=temp;
int a=20;
int i=--a;
System.out.println(i);//19
System.out.println(a);//19
赋值运算符
a+=b等价于a=a+b;
a-=b等价于a=a-b;
关系运算符(比较运算符)
逻辑运算符
短路与&&和逻辑与&的区别
&&:如果第一个条件为false,则第二个条件不会判断,最终结果为false
&:如果第一个条件为false,则第二个条件也会判断,效率低
在开发中,我们一般使用&&短路与
短路或||和逻辑或||的区别
||:如果第一个条件为true,第二个条件不会判断
|:如果第一个条件为true,第二个条件也会判断,效率低
开发中,基本使用短路或||
位运算符
位运算取整
int a=1;
1>>2=? //这个就相当于右移两位 1/2/2=0
1<<2=? //这个就相当于左移两位 4
三目运算符
基本语法:条件表达式?表达式1:表达式2