1.自动类型转换
所需满足的两个条件:
1.两种数据的类型彼此兼容
2.目标类型的取值范围要大于源类型的取值范围
发生自动类型转换的情况主要有:整型之间,整型转化为float,其他类型转化为double类型。
2.强制类型转换(需要声明)
当数据类型并不满足自动类型转换的条件,但我们仍有进行转换的需求
这时候就需要我们进行强制类型转换,即将 byte b=num改为 byte b=(byte)num。
但是强制类型转换不是没有风险的,对于某些数据在发生转换时可能会造成数据丢失。
扩展:表达式类型自动提升 变量在表达式进行运算时,可能会发生自动类型转换,因而程序报错。
在变量作用域内给变量赋值,在变量的作用域使用变量进行运算
搞清楚这两点足矣
熟练使用括号来限制变量作用的范围。
算术运算符:+ - * / % ++ --
注意:除法运算时,除数与被除数都是整数时,得到的结果也会是整数,但如果其中任意一个是为小数时,结果为一个小数
在进行取模运算时,结果的正负由取模符号左边的数的符号决定
赋值运算符:= += -= *= /= %= 赋值顺序为从右往左
在Java中 通过一条赋值一句就可以对多个变量进行赋值。 e.g:int x,y,z; x=y=z=5;
但是int x=y=z=5; 这个是错误的
扩展:在使用复合赋值符号运算时,强制类型转换是会自动发生的。
比较运算符:== != < > <= >=
逻辑运算符:& | ^(逻辑异或 操作数不同为true 相同为false) ! && ||
#运算符的优先级#
1..[] ()
2.++ -- ~ !
3.* / %
4.+ -
5.<< >> >>>
6.< > <= >=
7.== !=
8.&
9.^
10.|
11.&&
12.||
13.?:
14.= *= /= %= += -= <<= >>= >>>= &= ^= |=
1.if语句
格式:if(判断条件)
{
执行语句
}
2.if……else语句
格式:if(判断条件)
{
执行语句1
}
else
{
执行语句2
}
3.if……else嵌套语句
if(判断条件1)
{
执行语句1
}
else if(判断条件2)
{
执行语句2
}
…
else if(判断条件n)
{
执行语句n
}
else
{
执行语句n+1
}
豪东西:包含条件判断的三元运算符 (?:)
用法:条件?a:b 以为条件成立则执行a 否则执行b
该运算符可以嵌套 结合方向为自右向左(一对对分开来算即可)
2.switch条件语句
基本格式:
switch(表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
…
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
#循环结构语句#
while循环语句
结构:while(循环条件){
执行语句
}
do while循环语句
结构:do{
执行语句
}while(循环条件);
for循环语句
结构:for(初始化表达式;循环条件;操作表达式){
执行语句
}
不同循环语句的优缺点:while和do…while适用于循环次数不定的场景,for适用于循环次数定的场景;
while和for先判断循环条件,在执行循环体;而do while则先执行循环体,再判断循环条件。
循环嵌套:
执行嵌套时会先进行内层循环,当内层循环结束时在跳出到外层循环,并进行循环调整到下一轮新的循环,一直执行到外层循环也到循环结束的条件。
跳转语句:
1.break语句
用于switch语句和循环结构语句中,当出现在switch中时,作用是用于终止某个case并跳出switch结构;当出现在循环结构时,作用是直接跳出当前循环,执行循环以后的代码,但是如果需要跳出循环嵌套,则需要在内外层循环都使用break。
2.continue语句
用在循环语句中,作用是终止本次循环,并执行下一次循环。
方法是一串可以重复调用的代码,可以根据我们的需求去执行特定的功能,通过方法名称调用的方法,我们可以极大改善程序的可读性。
定义一个方法的格式主要为:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,……){
执行语句
return 返回值;
}
其中修饰符决定方法的某些特性,返回值类型决定返回值的数据类型,参数类型限定调用方法时传入的参数的数据类型,return关键字用于返回指定类型的值给调用者。
#Java中的方法重载#
定义:同一作用域内,方法名相同但是参数个数或者参数类型不同的方法,就叫做方法重载。
e.g:在一个需要三个求和方法的程序中,我们可以定义三个同名的add方法
即int sum1=add(1,2) int sum2=add(1,2,3) double sum3=add(1.2,2.3);
程序对方法的选择由传入的参数类型决定。