040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

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
}
}

040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

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));

}
}

040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

心得:三元运算符可以用if条件分支语句替代

 042_运算符优先级_逻辑与或优先问题

040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

心得:

1、尽量使用小括号来区分优先级。

2、逻辑运算符优先级:非>与>或

非的运算优先级在逻辑运算符内最高,最低的是或

例:a||b&&c  的正确顺序是 a||(b&&c)

043_自动类型转化

040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

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_强制类型转换

040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

在需要强制转化的数据类型前加小括号(),在括号内填入需要转为的目标数据类型。

040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

心得:

强行转化的过程中要注意精度丢失的问题。

045_基本类型常见错误_溢出_L问题

040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 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);

}
}

上一篇:Hibernate_day01--解决配置文件没有提示问题_演示常见错误


下一篇:浏览器Quirksmode(怪异模式)与标准模式