文章目录

  • 前言
  • 常量
  • 定义方式
  • 分类
  • 运算符
  • 分类
  • 算数运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三元运算符
  • 总结
  • 练习



前言

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

常量

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

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

public class HelloWorld {
    public static void main(String[] args) {
        // 声明局部常量
        final double x = 3.3;
        x = 3.14;
    }
}

java怎么设置全局静态常量 java中静态常量的编写方式_数据

定义方式

在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==3

false

!=

不等于

4!=3

true

<

小于

4<3

false

>

大于

4>3

true

<=

小于等于

4<=3

false

>=

大于等于

4>=3

true

instanceof

检查是否是某类的对象

“hellow” instanceof String

true

  • ==与=的区别
    ==:用于判断两个值是否相等。
    = :给一个数据赋一个值。
  • 比较运算符返回的结果是boolean类型的,只有true和false。
逻辑运算符

运算符

运算

示例

结果

&


false&true

false

|


false|true

true

^

异或

true^false

false

!


!true

false

&&

短路与

false&&true

false

||

短路或

false||true

true

  • 用法
  • 表示数学中的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 = 0b0100

13 & 6 = 4

|


0b1101 | 0b0110 = 0b1111

13 | 6 = 15

^

异或

0b1101 ^ 0b0110 = 0b1011

13 ^ 6 = 11

~

反码

~6 = -7

false

<<

左移

3 << 2

12

>>

右移

3 >> 1

1

>>>

无符号右移

3 >>> 1

1

  • 二进制中的运算。
&: 两个同时为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:如果大家在观看的时候发现有拼写错误,代码错误以及内容混淆的地方,希望大家积极反馈,我及时进行更改,谢谢大家