Java 中常见的运算符

本文详细介绍了Java中字符串的基本操作,包括转义字符、类型转换等,并深入探讨了自增/自减、移位及位运算符等运算符的应用场景与原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一些简单的字符串问题

1、转义字符

    public static void main(String[] args) {
        String str1 = "我是"逍遥"";//编译错误
        String str2 = "我是\"逍遥\"";
        System.out.println(str2);//我是"逍遥"
    }

当我们需要在打印我是"逍遥"时,使用str1来编写代码时会编译错误。系统会把这个字符串看成两个部分:“我是” 和 逍遥"", 不符合正确的编写方式。
需要用 \ 将" 转义,一个 \ 转义一个"。转义理解的话就是转变符号的意义。

2、字符串转整型

    public static void main(String[] args) {
        String str1 = "10";
        //方法一
        int tmp1 = Integer.parseInt(str1);
        //方法二
        int tmp2 = Integer.valueOf(str1);
    }

同理,当需要将double等类型转换为字符串类型时,一样可以调用这些方法。(char类型不可以,它本身就是字符类型);

3、整型转字符串

    public static void main(String[] args) {
        int a = 10;
        //方法一
        String str1 = String.valueOf(a);
        //方法二
        String str2 = a + "";
    }

方法二是因为字符串+其他内容,其他内容会被自动转换为字符串。

4、强制类型转换

    public static void main(String[] args) {
        int a = 5;
        int b = 2;
        System.out.println(a/b);//2
        System.out.println((float) a/b);//2.5
        System.out.println(a/(float)b);//2.5
        System.out.println((float)(a/b));//2.0
    }

这就是强制类型转换的一种情况。

运算符

1、自增/自减运算符

    public static void main(String[] args) {
        int a = 10;
        a++;
        System.out.println(a);//11
    }
    public static void main(String[] args) {
        int a = 10;
        int b = a++;// b = a  ;  a = a+1;
        System.out.println(b);//10  
    public static void main(String[] args) {
        int a = 10;
        int c = ++a;// a = a+1 ; c = a
        System.out.println(c);//11
    }

n++是先赋值,再+1;++n是先+1,再赋值。
n- - 也是同样的道理

2、移位运算符
右移:>>
左移:<<
无符号右移 :>>>

    public static void main(String[] args) {
        int a = 12;
        int b = a >> 1;
        System.out.println(b);//6

        int c = b >> 1;
        System.out.println(c);//3

        int x = 5;
        int y = x << 1;
        System.out.println(y);//10

        int z = y << 1;
        System.out.println(z);//20   
        
        int i = -100;
        System.out.println(i >> 1);//-50
        System.out.println(i >>> 1);//2147483598
    }

移位运算符是将数字转化为二进制数然后进行移位
根据代码可以得到规律:
右移>>相当于除法: b = 12/2, c = 12/2^2
左右<<相当于乘法: y = 5 * 2, z = 5*2^2
而无符号右移和右移是一样的,不过无符号右移添加的符号位不管正负都是0。

3、位运算符
按位与:&
按位或:|
按位取反:~
按位疑惑:^

    public static void main(String[] args) {
        int a = 10;
        int b = 11;
        System.out.println(a & b);//10
        System.out.println(a | b);//11
        System.out.println(~a);//-11
        System.out.println(a ^ b);//1
    }

位运算符是将数字转化为2进制然后进行运算
在这里插入图片描述
~:将二进制位每一位取反,1—>0,0—>1。符号位不变

4、逻辑运算符
逻辑或:&&
逻辑与:| |
逻辑非:!

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a < 0 && b > 0);//false
        System.out.println(a < 0 || b > 0);//true
        System.out.println(!(a > 0));//false
    }

布尔表达式1 && 布尔表达式2。两个表达式为真结果才为真
布尔表达式1 | | 布尔表达式2。 一个表达式为真结果就是真
!布尔表达式 。 和布尔表达式结果相反

当位运算符& | 的两边也是布尔表达式时,也可以当作逻辑运算符使用,但是它们不支持短路求值。
短路求值:System.out.println(a > 0 || b > 0);因为是| | ,所以当知道布尔表达式1是true时,不需要判断布尔表达式2。System.out.println(a < 0 && b > 0),当知道布尔表达式1时false时,不需要判断布尔表达式2。

5、三目运算符

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println(max);//20
    }

布尔表达式? a : b;
如果布尔表达式为true,则返回a,如果为false,则返回b。

六:坑
1、先看代码。

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("sum= "+a+b);//sum= 1020        
       System.out.println(a+b+"<———sum"); //30<———sum
    }
}

在java中打印时候如果是字符串用+拼接其他内容,那么其他内容也会被转化为字符串。所以我们在使用时不要踩坑,例如上面代码中的第一个打印。

2、再来一个代码(面试题)

    public static void main(String[] args) {
        int a = 10;
        a++;
        System.out.println(a);//11
    }
    public static void main(String[] args) {
        int a = 10;
        a = ++a;
        System.out.println(a);//11
    }
    public static void main(String[] args) {
        int a = 10;
        a = a++;
        System.out.println(a);//10
    }

如果要理解的话需要反汇编知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值