java将运算符号替换成_java基础——day02-1 数据类型转换与算数运算符

数据类型转换

自动转换

自动转换:将取值范围小的类型 自动提升为取值范围大的类型

例如:一个int类型变量和一个byte类型变量进行加法运算,结果会返回什么类型呢?

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_1 {public static voidmain(String[] args) {int a = 1;byte b = 2;int sum0 = a+b;//当写byte sum1的时候 程序会报错 提示无法兼容 因为int超过了byte类型的长度//byte sum1 = a+b;

System.out.println(getType(a));//class java.lang.Integer

System.out.println(getType(b));//class java.lang.Byte

System.out.println(getType(sum0));//class java.lang.Integer

}public staticString getType(Object value){returnvalue.getClass().toString();

}

}

数据类型转换小练习

答案:为int,因为byte 类型内存占有1个字节,在和 int 类型运算时会提升为 int 类型 ,自动补充3个字节,因此计算后的结果还是 int 类型。

同理:当一个 int 类型变量和一个 double 变量运算时, int 类型将会自动提升为 double 类型进行运算。

转换规则

范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int 。

byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

强制转换

使用场景:

例1:将1.5赋值到int类型会发生什么

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_2 {public static voidmain(String[] args) {//将1.5赋值到int类型

int i = 1.5;//编译器会提示无法兼容,因为double占用8个字节,而int只有4个字节,索引int

}

}

给int赋值double类型

解决方法:将double类型,强制转换为int类型

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_2 {public static voidmain(String[] args) {//将1.5赋值到int类型//int i = 1.5;//编译器会提示无法兼容,因为double占用8个字节,而int只有4个字节,索引int

int i = (int)1.5;

System.out.println(i);//输出值为1

}

}

强制转换

例2:当一个 short 类型与 1 相加,其结果的类型一定会提升

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_3 {public static voidmain(String[] args) {short s = 1;//s = s+1;//编译器提示无法兼容 因为short只占2个字节 而int 型的1占四个字节

s = (short)(s + 1);

System.out.println(s);//输出 2

System.out.println(getType(s));//输出 class java.lang.Short

}public staticString getType(Object value){returnvalue.getClass().toString();

}

}

强制转换2

解决方法:将int 类型的1 强制转换为short类型。

注意:

1.浮点型转换成整型,直接取消小数点,可能造成精度损失

2.int型转换成short型,会砍掉2个字节,可能造成数据丢失

运算符

算数运算符

4eb030875e11971db76a6b29b079b34b.png

注意:Java中,整数使用以上运算符,无论怎么计算,也不会得到小数结果,例如:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_4 {public static voidmain(String[] args) {int a = 1;

System.out.println(a/10*10);//运行结果:0

}

}

运算符

自增运算(++):

当++在变量前,表示先加后赋值(变量i自己加1,将加1后的结果赋值给result,也就是说i先计算。i和result的结果都是2)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_5 {public static voidmain(String[] args) {int i = 1;int result = ++i;

System.out.println(i);//结果为2

System.out.println(result);//结果为2

}

}

result = ++i;

当++在变量后,表示先赋值再加(变量i先把自己的值1,赋值给变量result,此时变量result的值就是1,变量i自己再加1。i的结果是2,result的结果是1。)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_5 {public static voidmain(String[] args) {int i = 1;int result = i++;

System.out.println(i);//结果为2

System.out.println(result);//结果为1

}

}

result = i++;

自减运算(--):

其运算顺序与自增运算一致,-- 在前表示先减后赋值,--在后表示先赋值后运算。

关于拼接:

当“+”符号在字符串中,就表示拼接

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_5 {public static voidmain(String[] args) {

String str1= "this";

String str2= " is ";

String str3= "a test";

System.out.println(str1+str2+str3);//运行结果:this is a test

System.out.println("5+5= "+5+5);//运行结果:5+5 = 55

}

}

字符串的拼接

赋值运算符

696b9a7ce4fed6d9259cebe52b4e95b4.png

定义:赋值运算符,就是将符号右边的值,赋值给左边的变量。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_6 {public static voidmain(String[] args) {//赋值运算符

int a = 5+5;//加等于

int i = 5;

i+=3;//计算方式 i = i + 5 变量i先加5 再赋值变量i 所以结果为8

System.out.println(i);//减等于

int i2 = 4;

i2-= 3; //计算方式 i2 = i2 - 3 变量i2先减3 再赋值给变量i2 所以结果为1

System.out.println(i2);//乘等于

int i3 = 3;

i3*= 2; //计算方式 i3 = i3 * 2 变量i3先乘以2 再赋值给i3 所以结果为 6

System.out.println(i3);//除等于

int i4 = 4;

i4/= 2; //计算方式 i4 = i4 / 2 变量i4先除以2 再赋值给i4 所以结果为 2

System.out.println(i4);//取余

int i5 = 5;

i5%= 2; //计算方式 i5 = i5 / 2 余数为1 所以结果为1

System.out.println(i5);

}

}

赋值运算符

比较运算符

9f05ad43c5d24fe3f687e0bcee7085b4.png

比较运算符:是将两个数据之间进行比较的运算,运算结果都是布尔值,非true即false

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_7 {public static voidmain(String[] args) {int a= 1,b =2;

System.out.println(a==b);//比较两数据是否相等 因为a < b 不相等 所以返回false

System.out.println(a>b);//比较 左边数据 是否大于 右边数据 因为a < b 所以返回false

System.out.println(a

System.out.println(a>=b);//比较 左边数据 是否大于等于 右边数据 因为a < b 且不等于b 所以返回false

System.out.println(a<=b);//比较 左边数据 是否小于 右边数据 因为a < b 满足条件 所以返回true

System.out.println(a!=b);//比较 左边数据 是否不等于 右边数据 因为a < b也不等于b 所以返回true

}

}

比较运算符

逻辑运算符

c29df818628ce5c92554c478612bb79d.png

逻辑运算符:是用来连接两个布尔类型的运算符,运行结果都是布尔值true或者false

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday2_8 {public static voidmain(String[] args) {boolean a = false;boolean b = true;boolean c = false;boolean d = true;//&& 与运算符 同真为真 为true 与运算 必须左右数据都为真才会为真

System.out.println(b &&d);//&& 与运算符 一假一真 为false

System.out.println(a &&b);//&& 与运算符 同假为假 为false

System.out.println(a &&c);//|| 或运算符 同真为真 为true 或运算 左右数据有一个数据为真 即为真

System.out.println(a ||d);//|| 或运算符 一真一假 为true

System.out.println(a ||b );//|| 或运算符 同假为假 为false

System.out.println(a ||c);//! 非运算符 非真为假 为false

System.out.println(!b);//! 非运算符 非假为真 为true

System.out.println(!a);

}

}

逻辑运算符

三元运算符

三元运算符:类似与if语句

格式:数据类型 变量名 = 布尔表达式?结果1:结果2

计算方式:

1.布尔类型表达式是true,三元运算符返回结果1,赋值给变量

2.布尔类型表达式是false,三元运算符返回结果2,赋值给变量

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packageday02;public classday02_9 {public static voidmain(String[] args) {int a = 2;int b = 4;intresult;

result= (a>b)?(result=a):(result=b);//此处返回结果result = 4 因为a>b 不成立 所以result = 结果2

System.out.println(result);//对比if语句

if(a >b){

result=a;

}else{

result=b;

}//同三元运算符一样

System.out.println(result);

}

}

三元运算符与if语句对比

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值