java运算符与基本数据类型转换

举报
yd_259031995 发表于 2022/10/15 23:37:52 2022/10/15
【摘要】 经过Java初次学习,我们对其有了大概的了解,不过这还不够 下面我们将学习运算符与数据类型转换 ok,那么我们直接开始吧!

前言

经过Java初次学习,我们对其有了大概的了解,不过这还不够
下面我们将学习运算符与数据类型转换
ok,那么我们直接开始吧!

运算符

算数运算符

+//数字,字符串

-

*

/

% //取余:11%9=2

++与– –

前加加,先运算后取值

后加加,先取值后运算

关系运算符

relational operator

结果都是布尔值

==

!= //不等

<>=结合操作

位运算符

举个例子吧

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

我们仔细看下最后一个~的运算

这个需要兄弟们学习补码原码反码的知识

我只简单说下原理吧

e.g

我们算~4

先写出他的原码:0000 0100

再取反 1111 1011

减一 1111 1010

负数的反码等于原码除了符号位以外的全部位取反加,补码等于反码加一(所以反码=补码-1)

取反 1000 0101

所以返回-5

总结一下:

正数是先直接取反运算,再转原码取值。
负数是先转原码,在进行取反运算取值。

这个先有个大致概念吧,等练习的时候会有深入讲解的。

逻辑运算符

这个和高中讲的逻辑电路一样的道理

如果家人们高中没好好学习,可以看下下面的解释:

&& (且) 当且仅当两个操作数都为真,条件才为真。

|| (或) 如果任何两个操作数任何一个为真,条件为真。

! (非) 用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false

是不是非常简单,不过还有一个我们必须了解的短路逻辑运算符

当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

条件运算符(?:)

该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量

public class Test {
   public static void main(String[] args){
      int a , b;
      a = 2;
      b = (a == 1) ? 20 : 30;
//if a = 1则b 为 20,否则为 30
      System.out.println(b);
>>>30
      b = (a == 2) ? 20 : 30;
//if a = 2则b 为 20,否则为 30
      System.out.println(b);
>>>20
   }
}

基本数值类型转换

自动转换

byte b = 10;

int a =20;

byte c;

c= a + b;

error:Incompatible types. Found: ‘int’, required: ‘byte’

他告诉我们: 不兼容的类型: 从int转换到byte可能会有损失

如果两个值不一致,会自动将小类型转化为大类型

强制转换

当然,我们也可以进行强制转换

e.g

byte b = 10;

int a =20;

byte c;

c= (byte)[a + b];

这样就不会报错了。

是不是很简单

but 真的这么简单吗?

我们输入以下代码

byte b = 10;

int a =200;

byte c;

c= (byte)[a + b];

然后运行出来发现结果竟然是-46!!!

为什么捏?简单来说,byte只能储存8位机器数值,但是210显然远远超过了其可存的最大值,因此,就值取了后八位

那么,为了避免强制转换所带来的风险

我们一般使用int,long类型来进行操作

long b = 10;

long a =200;

long c;

c= (long) (a + b);
System.out.println(c);
>>>210

这样输出的就是正确的值了。
ok,以上就是本次分享的知识了,祝您生活愉快。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。