java 正负数转换_【四】java常量与运算符

前言

本节将学习常量在java中如何表示,以及如何对一个数据进行快速的计算。

常量

一个特殊的变量,当这个变量被赋值后变不能在更改。

下面这个在编译的时候将会报错。

public class HelloWorld {
    public static void main(String[] args) {
        // 声明局部常量
        final double x = 3.3;
        x = 3.14;
    }
}
19a8900a65353140a1416c74337ddede.png
在这里插入图片描述

定义方式

在java中,使用关键字final来表示常量。

final double PAI = 3.14;
final int H = 10;

一般java中常量的名字使用全大写,如果包含多个单词的话用“_”连接。

分类

如果变量一样,常量分为三种

  • 类常量(静态常量):独立于方法外,static修饰。

  • 成员常量:独立于方法外,没有static修饰。

  • 局部常量:定义于方法内。

public class HelloWorld {
    // 静态常量
    public static final double PI = 3.14;
    // 声明成员常量
    final int y = 10;
    public static void main(String[] args) {
        // 声明局部常量
        final double x = 3.3;
    }
}

运算符

分类

  • 算术运算符

  • 赋值运算符

  • 比较运算符

  • 逻辑运算符

  • 位运算符

  • 三元运算符

算数运算符
运算符运算示例结果
+正号、加法运算+3、
1+3
3
4
-负号、减法运算b = 3;-b
6-4
-4
2
*乘法运算3*4;12
/除法运算5/5;1
%取模(取余)运算5%5;0
++自增运算a = 2;b = ++a;
a = 2;b = a++;
a=3;b=3;
a=3;b=2;
--自减运算a=2;b = --a;
a=2;b=a--;
a=1;b=1;
a=1;b=2;
  • 在java中“+”和“-”有两种表示方式,一种是表示两个数的运算,一种是表示其符号(正负数)。

    int a = 1;
    int b = -a;
    b的结果是-1.
  • 在运算过程中要注意数据结构的转换。整型默认是int,浮点型默认是double。

    int a = 5;
    int b = a / 2;
    ## b的结果是2。因为a / 2都是整型,计算出来的结果是整型,将小数点后面的丢弃。

    int a = 1;
    double b = a / 3.0;
    ## b的结果是0.3333333333333333。a被向上提升为1.0.

    int a = 1;
    double b = a / 3;
    ## b的结果为0.0,这里a / 3两个都是整型,所以算出来的结果是整型0,随后将0提升为double类型,所以结果为0.0。
  • /和%的区别

    5/2;## 结果是2.5(这里不考虑数据转换,仅仅从数学的角度)
    5%2;## 结果是1
    余数为啥等于1呢。
    5除以2的时候,取2,2*2 = 4, 5-4 = 1。
    这个1就是余数,也就是不能正好被整除掉,而剩下的数就是余数了。
    10%3 = 1;   
  • %取模运算中的符号:由被除数的符号决定

    int b = -5 % 2; ## b=-1
    int b = 5 % -2; ## b=1
  • ++a与a++的区别(--a与a--):不建议使用。

    ++和--:表示的是递增和递减,每次加1或者减1.a++相当a = a +1;

    ++a(--a):先做运算后赋值,

    a = 2;b = ++a;
    ## 先将a+1,然后在把结果赋给b,所以a = 3,b=3;

    a++(a--):先赋值后运算。

    a = 2;b = a++;
    ## 先将a的值赋给b,然后在a+1,所以a = 3,b=2;
赋值运算符

=、+=、-=、*=、/=,%=

运算符示例结果
=int i = 3;3
+=int i =1;i += 2;3
-=int i = 2;i -= 1;1
*=int i=2;i *= 2;4
/=int i = 4;i /= 2;2
%=int i=5;i %= 2;1

在java中“=”是用于赋值的,不是用于判断两个数是否相等。

int i = 3;## 是将3赋值给i,使i的值等于3.
+=:a+=2;相当于a = a+2。
-=:a-=2;相当于a=a-2;其他同理。
  • a = a +2 与a +=2的区别

    • a = a+2:先进行a+2运算,随后在将算出来的结果赋值给a。

    • a +=2;直接将a的值加2.这个只执行了一次运算。

比较运算符
运算符运算示例结果
==等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否是某类的对象“hellow” instanceof Stringtrue
  • ==与=的区别

    ==:用于判断两个值是否相等。

    = :给一个数据赋一个值。

  • 比较运算符返回的结果是boolean类型的,只有true和false。

逻辑运算符
运算符运算示例结果
&false&truefalse
|false|truetrue
^异或true^falsefalse
!!truefalse
&&短路与false&&truefalse
||短路或false||truetrue
  • 用法
    表示数学中的1 < x < 4。

    在java中可以这样表示
    x>1 & x<4;
  • &(|)与&&(||)的区别

    在判断的x > 1 & x < 4的时候,如果x > 1为false,那么其实结果已经为false,根本不用在判断x < 4,短路与(&&)和短路或(||)就是用于解决该问题。

    x > 1 && x 4 :当x > 1为fasle时,结果为false,不用执行x 4.
    x > 1 && x 4 :当x > 1为true时,结果为true,不用执行x 4.
位运算符
运算符运算示例结果
&0b1101 & 0b0110 = 0b010013 & 6 = 4
|0b1101 | 0b0110 = 0b111113 | 6 = 15
^异或0b1101 ^ 0b0110 = 0b101113 ^ 6 = 11
~反码~6 = -7false
<<左移3 << 212
>>右移3 >> 11
>>>无符号右移3 >>> 11
  • 二进制中的运算。

    &: 两个同时为1,结果为1,否则为0。
    |: 其中一个为1,则为1,否则为0。
    ^: 相同时为0,不同则为1

    0b1101 & 0b0110 = 0b0100 (13 & 6 = 4)
    0b1101 | 0b0110 = 0b1111 (13 | 6 = 15)
    0b1101 ^ 0b0110 = 0b1011 (13 ^ 6 = 11)
  • 位运算符与逻辑运算符的区别(&、|、^)
    逻辑运算符返回boolean类型的值,符号左右两边为boolean类型数据或表达式。
    位运算符返回的整形数据,符号两边为整形类型数据。

  • 反码:1的反码0,0的反码1.

    java中的负数表现形式为相应正数取反加1,如-6的表现形似为,6取反加1。
    0000... 0110(6)反码=1111... 1001,加1以后得1111 1010(-6)。
    则一个已经知道一个负数的二进制,相应的十进制则为负数减1去反.如1111 1010(-6)
    减一:1111... 1001 取反: 0000... 0110(6)

    ~6 = -7
    6的反码为1111... 1001,随后将该二进制转化为十进制为 -7
  • 移位运算(<>、>>>)

先将数据转换为二进制,分别移动对应的位数
<0,被移除的高位丢弃,空缺位补0
>>:被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>:被移位二进制最高位无论是0或者是1,空缺位都用0补。
3<<2:0000... 0011 左移两位、空位补0,变成 0000... 1100
3>>1:0000... 0011 右移一位、由于最高位是0,则空位补0,变成 0000... 0001
-3>>1:1111... 101 右移一位、由于最高位是1,则空位补,变成 1111... 1110
3>>>1:0000... 0011 右移两位、空位补0,变成 0000... 0001
-3>>>1:1111... 101 右移一位、空位补0,变成 0111... 1110
三元运算符

格式:(条件表达式)?表达式1:表达式2;

  • 条件表达式为true,返回表达式1

  • 条件表达式为false,返回表达式2

(3>4)?3:4
结果为4

总结

  • java中的常量,用final修饰的变量

  • 运算符

  • 算术运算符:用来进行两个数据的运算。

  • 赋值运算符:给一个数据赋值。

  • 比较运算符:比较两个数据,返回boolean类型数据。

  • 逻辑运算符:用来连接多个表达式,或将单一的表达式转变为复杂的表达式,返回boolean类型数据。

  • 位运算符:对二进制数据进制移位运算。

  • 三元运算符:根基条件返回不同的表达式。

散会!!!

练习

  • 快速计算2*8(8/4).

2*8 : 2 <3
8/4 : 8 >> 2
  • 在不使用中间变量的情况下,将两个变量的数据交换

使用中间变量
inti i = 2,j = 3;
int k = i;
i = j;
j = k;

不使用中间变量
int i = 2 ,j=8;
i = i^j;
j = i^j;
i = i^j;

ps:如果大家在观看的时候发现有拼写错误,代码错误以及内容混淆的地方,希望大家积极反馈,我及时进行更改,谢谢大家,邮箱:BaldTeenager@163.com

更多精彩文章扫码关注“这个程序猿不太秃”,专注程序开发

1bee6d4bf2ddb03c463d48cd5397db31.png
在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值