1、表达式
1.1 表达式定义
概念:由一系列的常量、变量、运算符、括号组成的一个式子,按照一定的运算规则计算出结果值。
1.2 表达式示例
public class BDSDemo {
public static void main(String[] args) {
int a
= 12;
String b = a + (16+a)*8+"哈哈" ;
String c = "哈哈"+a + (16+a)*8;
System.out.println(b);
System.out.println(c);
System.out.println(a + (16+a)*8+"哈哈"+'a'+2.0);
double d = a+3.0;
System.out.println(d);
System.out.println(a+2.0);
}
}
数据类型转换
* 自动转换:小的数据类型转为大的数据类型
byte char short int long float double
1. boolean 类型不能与其他7钟类型互转
2. byte与char char与short 不能直接互转因为char只有正数范围
* 注意事项:
1. 特例 byte b = 16;/ /大到小
2. byte char short int 任意两个数进行操作都会先提升为int类型后在进行运算
3. 1ong float double 出现的表达式寻找精度最高的类型会先提升为最高的精度类型以后再进行运算
* 强制转换:大的致据了转为小的数据类型(转为自己所需要的类型)
语法:数据类型变量名= (数据类型) (表达式或变量或常量)当为表达式的时候需要加上括号
* 注意事项:
1. 转换的内容需要再- -个已知的范围,否则可能出现精度损失
2. 强制转换只关注类型
运算符
1. 数学运算符
+ - * / %
/的时候注意除数与被除数的类型,如果为整数 是不会保留小数位
2. 赋值运算符
= -= += *= /= %=
-= += *= /= %=会涉及到隐式转换
3. 自增自减 (只能作用于变量)
i++ 与 ++i的区别
1. 它们都会对i进行自动加1
2. i++与++i是一 个表达式,优先级高于数学运算符
3. 当i在++前面时,i++表达式的值等于i自增之前的值;当i在++后面时,++i表达式的值等于i自增之后的值
4. 比较运算符
== > < >= <= !=
5. 位运算符(二进制运算)效率最高
&:两边同时为1才为1
|:有一个为1就为1
^:当两个不同的时候才为1
6. 逻辑运算符 (结果为布尔类型)
连接两个布尔类型的值或者表达式
& | ! ^ && ||
* &和&&的区别
&&具有短路功能,当第一部分为false的时候 第二部分不会被执行到
* |和| | 的区别
|具有短路功能 当第一部分为true的时候第二部分不会被执行到
7. 三目运算符
语法: X? Y:Z;
X:为布尔类型的值或表达式
Y Z为同种类型的值或者变量
选择语句
if结构
1. 最基本的选择结构
if(判断条件){
功能语句;
}
2. if else 结构
if(判断条件){
功能语句;
}else{
功能语句;
}
3. if else if 结构
if(判断条件){
功能语句;
}else if(判断条件){
功能语句;
}else if(判断条件){
功能语句;
}.........
4. if else if else结构
if(判断条件){
功能语句;
}else if(判断条件){
功能语句;
}else if(判断条件){
功能语句;
}else{
功能语句;
}
switch结构
switch(key){
case v1:
功能语句;
break;
case v2 :
功能语句;
break;
default :
功能语句;
break;
}
* key:变量或者值
* 支持的类型: byte short char int String 枚举
* v是于key同种类型的数据
* 执行流程:
将key的值与case中的V进行比较,如果相等。则执行其中的功能语句。找到第一-个break跳出选择结构,直到找到结构的末尾为止
* 注意事项:
1. case的顺序可以是任意的
2. 结尾可以省略break
3. 如果没有break会导致紧挨的case失效