JAVA基础--操作符

目录

 

一、操作符的作用

二、常用操作符

1、赋值

2、算术操作符

3、自动递增(++)和自动递减(--)

4、直接常量

5、关系操作符

6、逻辑操作符

7、三元操作符

8、按位操作符

9、位移操作符

10、字符串操作符

11、类型转换操作符


一、操作符的作用

      在JAVA最底层,数据时通过使用操作符来操作的。操作符接受一个活多个参数,返回生成的新值。参数的形式与普通方法不一致,但是结果相同。

二、常用操作符

1、赋值

       赋值使用操作符“=”。意思是“区右边的值(右值),把它复制给左边的值(左值)”。右边的值可以是常数、变量、表达式等,但左值必须是类型明确、有确定名称的变量。也就是说,必须有一个物理空间可以存储右边的值。

int a = 1;

       a是基本类型,它的赋值比较简单,因为基本类型直接存储数据值。假如新增加int b = a;将a的值复制给b后,如果修改a的值为2,但是b的值仍是1。

String a = "abc";

String b = a;

       将字符串a复制给b,因为a是String类型,b获取到的值a的值的引用地址,如果修改a的值,则b的值也会变化。

2、算术操作符

       JAVA的基本算术操作符与大多数语言一样,包括加号(+)、减号(-)、乘号(*)、除号(/)以及取模操作符(%)。

       算术操作符可以写入完整的参数,也可以简写,例如将变量i加1:

    int i = i + 1;
    int i += 1;

        注意:

        ①整数除法运算结果会直接舍弃小数部分,而不是四舍五入。

        ②一元减号用于转换数据的符号,一元加号只是为了与一元减号对应,基本没有什么作用,唯一的作用就是将较小类型的变量提升为int类型。

3、自动递增(++)和自动递减(--)

        JAVA提供了很多快捷运算操作符,使编码更方便,递增和递减是其中两种很常用的操作符。递增操作符是"++",意义是“变量值加1”,递减操作符是"--",意义是“变量值减少1”。递增和递减操作符不仅根据输入参数产生新的运算结果,同时会改变输入参数的值

       递增和递减操作符有两种使用方式,“前缀式”和“后缀式”。“前缀递增”表示“++”操作符在输入参数的前边,“后缀递增”表示“++”操作符在输入参数的后边。类似的,“前缀递减”表示“--”操作符在输入参数的前边,“后缀递减”表示“--”操作符在输入参数的后边。

       对于“前缀递增”和“前缀递减”,会先执行运算,再返回结果;“后缀递增”和“后缀递减”会先返回结果,再执行计算。

    int i = 1;
    System.out.println("i:" + i);
    System.out.println("运算结果:" + ++i + ",i值:" + i);
    System.out.println("运算结果:" + i++ + ",i值:" + i);
    System.out.println("i:" + i);
    System.out.println("运算结果:" + --i + ",i值:" + i);
    System.out.println("运算结果:" + i-- + ",i值:" + i);
    ------------------输出结果---------------
    i:1
    运算结果:2,i值:2
    运算结果:2,i值:3
    i:3
    运算结果:2,i值:2
    运算结果:2,i值:1

4、直接常量

       一般情况下,使用直接常量,编译器能够识别参数类型,但是有些时候模棱两可,就需要增加说明,帮助编译器准确识别区分常量的类型。

       直接常量可以使用后缀或前缀,用来标识它的类型。

       基本类型常用后缀来标识:long类型可以用“l”或“L”表示,float类型可以用“f”或“F”表示,double类型可以使用“d”或“D”表示。

        long l = 1000; //正整数默认是int类型,long范围大于int,可以自动转换
        long l2 = 1000l;
        long l3 = 1000L;

        float f = 1; //小数默认是double类型
        float f2 = 1.23f;
        float f3 = 1.23F;

        double d = 1.23;
        double d2 = 1.23d;
        double d3 = 1.23D;

        进制类型标识方式如下:

        ①二进制(Binary):字符范围0-1,如 0110。前缀用0b(0B)表示,如0b110;后缀用B表示,如 1101001B;

        ②八进制(Octal):字符范围0-7,满 8 进 1。前缀用0表示,如 076;后缀用O表示,如 147O ;

        ③十进制(Decimal):字符范围1-9,满9进1。后缀用D表示,如109D;

        ④十六进制(Hexadecimal):字符范围0-9, A-F,满 16 进 1,前缀用0x(0X)表示,如 0x5AF9;后缀用H表示,如 2FH。

进制英文字符范围前缀后缀
二进制Binary0-10b/0BB
八进制Octal0-70O
十进制Decimal0-9\D
十六进制Hexadecimal0-9, A-F0x/0XH

5、关系操作符

       关系操作符返回一个boolean类型的结果,计算的是操作数的值之间的关系。如果关系成立,关系表达式返回一个true;如果不成立,则返回false。

       关系操作符包括:小于(<)、大于(>)、等于(==)、小于或等于(<=)、大于或等于(>=)、不等于(!=)。等于和不等于适用于所有基础数据类型,其他操作符适用于除boolean类型之外的所有基本类型。因为boolean类型只有true和false两个值,大于小于没有意义。

       关系比较的时候,常用一个方法“equals”,在Object类中,equals方法比较的是对象的引用地址。因此大部分的类(比如String类)都会重写equals方法,让其比较对象的内容,而不是引用地址。

6、逻辑操作符

       逻辑操作符“与”(&&)、“或”(||)、“非”(!),会根据参数的逻辑关系,返回一个boolean类型的结果。常用在多个关系操作结果的联合比较。参数的类型只能是boolean类型。

       使用逻辑操作符的时候,会遇到一种“短路”现象。即多个判断条件,前边的可以明确判断为false,后边的判断条件就不需要在执行:

        int a = 1;
        int b = 2;
        if (a++ > 0 || b-- > 0) {
            System.out.println("a:" + a + ", b:" + b);
        }
       ------------执行结果------------
        a:2, b:2

       通过执行结果可以发现,“||”操作符后边的“b--”并没有运行。

       但是还有一种“非短路”逻辑操作符,“与”(&)、“或”(|),操作符前后的所有代码都会执行。

        int a = 1;
        int b = 2;
        if (a++ > 0 | b-- > 0) {
            System.out.println("a:" + a + ", b:" + b);
        }
        ------------执行结果----------
        a:2, b:1

       通过执行结果可以发现,即使“||”操作符前边的‘a++ > 0’条件成立,操作符后边的“b--”仍然会运行,并没有发生短路。在实际使用中需要根据需要领会运用。

7、三元操作符

       三元操作符,也称为三目操作符、条件操作符。与别的操作符有些不一样,由三个操作数组成。

       boolean-exp ? value1 : value2

       根据boolean-exp表达式做判断,如果表达式返回值为true,就执行前边的value1,并将计算结果作为最终结果返回;如果表达式返回值为false,则执行后边的value2,同样计算结果作为最终结果返回。

       使用if-else可以实现同样的功能需求,但是相比较而言,三元操作符更加简洁。

8、按位操作符

       按位操作符用来操作整数基本类型中的单个“比特”(byte),即二进制位。按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。

       按位操作符来源于C语言面向底层的操作,在这种操作中经常需要直接操纵硬件,设置硬件寄存器内的二进制位。JAVA设计初衷是嵌入电视机机顶盒内,所以这种面向底层的擦做被保留下来。但是,一般很少会用到位操作符。

  • 如果两个输入位都是1,则按位“与”(&)操作符生成一个输出位1;否则生成一个输出位0。
  • 如果两个输入位中只有一个为1,则按位“或”(|)操作符生成一个输出位1,只有两个输入位都是0的情况下,才会生成一个输出位0。
  • 如果输入位的某一个是1,但不全是1,那么按位“异或”(^)操作符生成一个输出位1。
  • 按位“非”(~)操作符,也称为取反操作符,属于一元操作符,只对一个操作数进行操作(其他操作符是二元操作符)。按位“非”生成与输入位相反的结果。如果输入位为1,则输出位为0;如果输入位为0,则输出位为1。

       按位操作符可以与等号(=)联合使用,以便合并运算和赋值:&=、|=和^=都是合法的(由于~是一元操作符,所以不可以与等号联合使用)。

9、位移操作符

       位移操作符操作的对象也是二进制的“位”。位移操作符只可以处理整数类型。左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。“有符号”右移位操作符(>>)则按照操作符右侧指定的位数将操作符左侧的操作数向右移动。“有符号”右移位操作符使用“符号扩展”:若符号为正,则在高位插入0;若符号位负,则在高位插入1。JAVA中增加了一种“无符号”右移位操作符,它使用“零扩展”:无论正负,都在高位插入0。

       如果对byte、short或char类型进行位移处理,那么在进行位移之前,它们会被转换为int类型,并且得到的结果也是int类型。只有数值右端的低5位才有用,这样可以防止位移超过int型所具有的位数。若对long类型数据进行位移处理,得到的结果也是long类型。此时只会用到数值最右端的低6位,以防止位移超过long类型数值范围。

       位移可以与等号(=)组合使用(<<=或>>=或>>>=)。此时,操作符左侧的数值会按照右侧值指定的位数进行移动,再将得到的结果赋给左侧的变量。

       但在进行“无符号”右移位操作符结合赋值结果时,可能会遇到一个问题:如果byte或short值进行这样的位移运算,得到的可能不是正确的结果。它们会先被转换位int类型,在进行右移操作,然后被截断,赋值给原来的类型,在这种情况下可能会得到-1的结果。

10、字符串操作符

       字符串操作符有“+”和“+=”,有一项特殊的作用:连接不同的字符串。

       字符串操作符有一些很有趣的行为:如果表达式以一个字符串开头,那么后续所有操作数都按照字符串类型处理(编译器会把双引号内的字符序列自动转换成字符串)。

       注意:由于String是final的,虽然可以使用操作符进行拼接,但是在内存中都要创建新的对象,效率较慢。在循环中要大量执行String +操作的时候,使用Stringbuilder,多线程使用StringBuffer。

11、类型转换操作符

       类型转换(cast)的原意为“模型铸造”。在适当的时候,JAVA将一种类型自动的转换为另一种类型。例如byte→short→int→long,数据类型可以自动转换,因为编译器会帮我们进行自动转换。但是如果不能自动转换时,JAVA允许显式的进行类型转换,或者进行强制转换。

       要想进行类型转换,需要将希望得到的数据类型置于圆括号()内,放在要进行类型转换的值的左边。

       JAVA允许我们把任意基本类型转换为其他基本类型,boolean类型除外,后者不允许进行任何类型转换。类只可以在其所属的类族中进行类型转换。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值