隐式转换
定义:将数据类型中,取值范围小得数据,给取值范围大的类型赋值,可直接赋值
例:
int a=10;
double b=a;//变量赋值是把右边赋给左边得变量
System.out.print(b);
a为四个字节 int类型
b为八个字节 double 类型
a和b在运算时,会将啊先提升为double类型 当类型统一后在进行运算
两个double 进行运算时 结果还是double 所以使用double
// b=10.0 自动转化为double类型 小数型
简单记 小的给大得 直接给 比如一升得水 装三升得桶
int 4个字节 double 8个字节
byte 1个字节 short char 2个字节 int 4个字节 long 8个字节 float虽然四个字节 但是能表示得数比long大 long八个字节 double 8个字节
特殊关注: byte short char 三种数据在运算时 不管是否有更高的数据类型 会自动提升为int 在进行运算
byte a=10;
byte b=20;
byte c=a+b; //会报错: 因为a+b会自动提升为int byte 小于int 不能接收 所以要改为int或者int以上得数据类型
强制转换
定义:把一个表示数据范围大得数值或者变量赋值给另一个表示数据范围小的变量
格式:目标数据类型变量名 = (目标数据类型)值或者变量;
例:
int a=10; //int占四个字节
byte b=a;//错误 byte占一个字节 不兼容类型 从int转换到byte可能会损失精度
byte b=(byte)a; 正确使用方法
System.out.printIn(b);
损失精度 案例
double num1=12.2 //double占8个字节
int num2=(int)num1;//int占四个字节
System.out.printIn(num2);
num2=12 损失0.2 小数点后边全部丢弃
案例1:
byet a=3;
byte b=4;
byte c=a+b;//错误 前边说过 byte short char三种数据类型在参与运算时自动提升int
//解决方式1
byte c=(byte)a+(byte)b;
byte c=(byte)(a+b);
案例2:
byte d=3+4;
System.out.printIn(d);
不会出错 这里3和4时两个常量,java存在常量优化机制,会在编译得时候就让3和4进行相加,然后会自动判断7是否存在byte得取值范围内
不在范围内 : 编译出错
在范围内 :通过编译
运算符和表达式
运算符:对常量或者变量进行操作得符号
表达式:用运算符把常量或者变量连接起来符合java语法得式子就可以称为表达式
不同得运算怒连接得表达式体现得时不同类型得表达式
举例说明:
int a=10;
int b=20;
int c=a+b;
+;是运算符,并且是算术运算符
a+b;是表达式,由于+是算术运算符,所以这个表达式叫做算术表达式
符号 + - * / %
+ - * / 参照小学知识
% 取余 获取得是两个数据做除法得余数
实例:
System.out.printIn(10+20) //30
System.out.printIn(10-20) //-10
System.out.printIn(10*20)//200
//除法特点 整数想出,结果只能得到整数,如果想得到带有小数得结果,必须加入小数(浮点类型)得运算
System.out.printIn(10/2)//5
System.out.printIn(10*3)//3
System.out.printIn(10*3.0)//3.333333333
System.out.printIn(10.0*3)//3.333333333
%(取模):取余数
System.out.printIn(5%2)//5/2商为2 余数为1
注意事项:
/和%得区别:两个数据做除法,/取得是商,%取得结果得余数
整数操作只能得到整数,想要得到小数,必须有浮点数参与运算
练习
要求:联系第一天得内容
键盘录入一个三位数 求得他的百位十位个位数 并打印在控制台
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个三位数");
int a =sc.nextInt();
int b=a/100; //百位得计算 三位数除100得商
int c=a/10%10;//十位得计算 三位数除以10 取10得模
int d=a%10;//各位得计算 三位数取模得余数
System.out.println("百位数是"+b);
System.out.println("十位数是"+c);
System.out.println("个位数是"+d);
//注意导包代码得书写
public class ##{
public static void main(String[] agrs){
}
}
要求默写
自增自减运算符
++ 自增 变量值+1
-- 自减 变量的值减1
可以放到代码前面 也可以放到变量后边
int e=10; //在同一个程序里 变量名不可以重复
e++;
System.out.println(e); //e=11
int f=10;
f--;
System.out.println(f); //e=9
参与操作使用
++在前:先对该变量做自增(++)或(--),然后再拿变量参与操作
++在后:先将变量原本得值,取出来参与操作,随后进行自增(++)自减(--)
int f=10; //f=11
int g=++f; //g=11
System.out.println(f);
System.out.println(g);
int f=10; //f=11
int g=f++; //g=10
System.out.println(f);
System.out.println(g);
错误代码实例
System.out.println(10++);
原因 10++ 10是一个常量 展开是 10=10+1 10=11 等式不成立 a=a+1成立
赋值运算符
= 赋值 a=10 将10赋值给变量a
+= 加后赋值 a+=b 将a+b得值给a
int a=;
a +=20;
System.out.printIn(a);//30
-= 减后赋值 a-=b 将a-b得值赋给a
*= 乘后赋值 a*=b a*b得值给a
/= 除后赋值 a/=b 将a/b得值给a
%= 取余后赋值 a%=b 将a%b得值给a
关系运算符(比较运算符)
== a==b 判断a和b是否相等 成立为true 不成立为false
System.out.printIn(10>20); //false
!= a!=b 判断a和b是否不相等 成立为true 不成立为false
> a>b 判断a是否大于b 成立为true 不成立为false
>= a>=b 判断a是否大于等于b 成立为true 不成立为false
< a<b 判断a是否小于b 成立为true 不成立为false
<= a<=b 判断a是否小于等于b 成立为true 不成立为false
注意事项:= 和==两个有不相同得作用 =为赋值 ==为关系运算符
逻辑运算符
用于整合多个比较表达式得条件
& 逻辑与 遇false则false 符号左右两边都是true 结果才是true
| 逻辑或 遇true则true 符号两边都是false 结果才是false
^ 逻辑异域 符号左右两边相同为false 不同为true
! 逻辑非 取反
短路逻辑运算符
&& 短路与 作用与&相同,但有短路效果 符号左边为false 右边不执行 符号左边为true 右边执行
|| 短路或 作用相同,但有短路效果 符号左边为false 右边执行 如果左边为真右边不执行
三元运算符
格式 : 关系表达式?表达式1:表达式2
执行流程:
首先计算关系表达式得值
如果为true,取表达式1得值
如果为false,取表达式2得值
实例:
求最大值
int a =10;
int b=20;
int max=a>b?a:b;
System.out.println(max);
流程控制语句
通过一些语句,来控制程序得执行流程
流程控制语句得分类
顺序结构
顺序结构是java程序,默认得执行流程,按照代码得先后顺序一次执行
分支结构(if,switch)
循环结构(for,while,do...while)
if语句三种格式
1.
if(关系表达式){
语句体;
}
执行流程:
首先计算关系表达式得值
如果关系表达式得值为true就执行语句体
如果关系表达式得值为false就不执行语句体
继续执行后边内容
int a=10;
if (a>9){
System.out.println("我是彭于晏plus");
}
如果只有一条语句{}可以省略不写 不建议
int a=10;
if (a>9)
System.out.println("我是彭于晏pro");
if语句格式2
格式:
if(关系表达式){
语句体;
}else{
语句体2;
}
执行流程:
首先计算关系表达式得值
如果关系表达式得值为true就执行语句体1
如果关系表达式得值为false就执行语句体2
继续执行后边得语句
int a=10;
if (a>9){
System.out.println("我是彭于晏plus");
}else{
System.out.println("我是彭于晏pro");
}
if语句格式3
格式:
if(判断条件1){
语句体1;
}else if(判断条件2){
语句体2;
}
....
else{
语句体n+1;
}
执行流程:
首先计算判断条件1得值
如果为true就执行语句体1;如果false就计算判断条件2得值
如果是true就执行语句体2;如果为false就计算判断条件3得值
.....
如果没有任何判断条件为true,就执行语句n+1
int a=10;
if (a>90){
System.out.println("我是彭于晏plus");
}else if(a>80){
System.out.println("我是校草");
}else if(a>60){
System.out.println("我是一个帅哥");
}else{
System.out.println("我兄弟都是汪汪队");
}
day two daydayup
最新推荐文章于 2024-10-27 14:36:11 发布
本文详细介绍了Java中的隐式数据类型转换和强制转换规则,包括取值范围小的数据类型转换为大的类型,并给出了转换示例。同时讲解了运算符的使用,如算术、关系和逻辑运算符,以及自增自减、赋值运算符的用法。此外,还涉及了if语句的三种格式及其执行流程,以及三元运算符和流程控制语句的基础知识。
摘要由CSDN通过智能技术生成