040_字符串连接符
package test_package;
/**
* 字符串运算符
* @author
*
*/
public class TestOperator05 {
public static void main(String[] args) {
String a = "3";
int b = 4;
int c = 5;
char d = 'a';
System.out.println(a+b+c);//因为3是字符串,后面都是字符串连接
System.out.println(b+c+a);//9+a,a是字符串
System.out.println(d+4); //97+4=101,d在ASCLL码中是97
}
}
041_条件运算符目
/**
* 条件运算符(三元运算符)
* @author
*
*/
public class TestOperator06 {
public static void main(String[] args) {
int score = 80;
int x = -100;
String type = score<60?"不及格":"及格";
System.out.println(type);
if(score<60){
System.out.println("不及格");
}else{
System.out.println("及格");
}
System.out.println(x > 0 ? 1 : (x == 0 ? 0 : -1));
}
}
心得:三元运算符可以用if条件分支语句替代
042_运算符优先级_逻辑与或优先问题
心得:
1、尽量使用小括号来区分优先级。
2、逻辑运算符优先级:非>与>或
非的运算优先级在逻辑运算符内最高,最低的是或
例:a||b&&c 的正确顺序是 a||(b&&c)
043_自动类型转化
package test_package;
/**
* 测试自动类型转化
* @author
*
*/
public class TestTypeConvert {
public static void main(String[] args) {
int a = 324;
long b = a;
double d = b;
// a = b; //不合法Type mismatch: cannot convert from long to int
// long e = 3.23F;
float f = 234324L;
short y=12345;//6位short类型就溢出了
//特例
byte b2 = 123;
}
}
心得:
1、容量小的数据类型可以向容量大的数据类型的变量自动转化。
044_强制类型转换
在需要强制转化的数据类型前加小括号(),在括号内填入需要转为的目标数据类型。
心得:
强行转化的过程中要注意精度丢失的问题。
045_基本类型常见错误_溢出_L问题
/**
* 测试类型转换常见问题
* @author
*
*/
public class TestTypeConvertError {
public static void main(String[] args) {
int money = 1000000000; //10亿
int years = 20;
//返回的total是负数,超过了int的范围
int total = money*years;
System.out.println("total="+total);
//返回的total仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生//了数据丢失
long total1 = money*years;
System.out.println("total1="+total1);
//返回的total2正确:先将一个因子变成long,整个表达式发生提升。全部用long来计算。
long total2 = money*((long)years);
System.out.println("total2="+total2);
long total3 = 34L*3223*years*223423;//将第一个数数转位long,这样后续的计算就都是long了
System.out.println(total3);
//命名问题
int l = 2; //分不清是L还是1,
long a = 23451l;//建议使用大写L
System.out.println(l+1);
}
}