您的位置:首页 >Java04 变量运算
发布于2026-04-27 阅读(0)
扫一扫,手机访问

先来聊聊运算的基本规则。这里有几个关键点需要把握:首先,当不同类型的数据进行运算时,结果会自动向范围更大的类型靠拢。其次,byte、short、char这三种类型在参与运算时,会先自动提升为int类型。这里有个有趣的细节,char类型本质上是字符,但可以进行算术运算,而boolean类型则完全不行。另外,整数相除的结果会直接取整,这一点在涉及除法时要特别注意。最后,所有整型变量在运算时,其值都不能超出其数据类型的表示范围,否则会发生溢出。
复合赋值运算符用起来很便捷,但背后的机制得弄清楚。它的执行顺序是:先计算等号右边的表达式,然后再与左边的变量进行指定的运算并赋值。这个过程有时会悄悄发生强制类型转换。再说说自增(++)和自减(--)运算符。当它们单独成行使用时,作用很简单,就是给变量加1或减1,符号在前在后都一样。但一旦混入其他运算,位置就至关重要了。如果符号在变量前面(如++a),会先对变量进行加1操作,然后再使用这个新值参与后续运算;如果符号在后面(如a++),则会先使用变量的当前值参与运算,运算完成后再给变量加1。
关系运算符用来做比较判断。对于基本数据类型(如int, double),它们比较的是值是否相等或大小关系。但对于引用数据类型(如String, 对象),==运算符比较的是两个引用是否指向内存中的同一个地址,而不是比较它们的内容是否相同。这一点是初学者常踩的坑。所有关系运算的结果都是一个boolean值(true或false)。不过要注意,boolean类型本身不能参与大小比较(如true > false),这没有意义。
逻辑运算专门处理boolean值。与运算(&)要求两边都为true,结果才为true。它有两个版本:短路与(&&)和非短路与(&)。短路与的特点是,如果左边表达式已经是false,那么右边表达式根本不会执行,直接判定结果为false,这能提升效率并避免某些副作用。或运算(|)则相反,只要有一边为true,结果就是true。同样,短路或(||)在左边为true时,也会跳过右边的计算。非运算(!)最简单,就是取反操作。
位运算直接操作整数的二进制位,在某些场景下效率极高。按位与(&):两个位都为1,结果才为1。一个经典应用是(a & 1) == 0来判断a是否为偶数。按位或(|):只要有一个位为1,结果就为1。按位异或(^):两个位不同则为1,相同则为0。异或运算有个巧妙的应用,可以不借助临时变量快速交换两个整数的值。左移(<<):每向左移动一位,相当于该数值乘以2。右移(>>):每向右移动一位,相当于该数值除以2(向下取整)。还有一个高级技巧:求两个整数的平均值时,为了避免直接相加可能导致的溢出,可以使用公式 (x & y) + ((x ^ y) >> 1)。
三目运算符是if-else的简洁写法。它的逻辑是:如果表达式1为true,则整个式子的值为表达式2的值;否则为表达式3的值。利用嵌套的三目运算符,可以简洁地完成多条件判断。例如,求三个数x, y, z的最大值:max = x > y ? (x > z ? x : z) : (y > z ? y : z)。求最小值也是类似的思路:min = x < y ? (x < z ? x : z) : (y < z ? y : z)。
当多种运算符混合在一个表达式中时,了解它们的优先级至关重要。基本的优先级顺序是:非运算(!)最高,接着是比较运算符(>, >=, <, <=, ==, !=),然后是与运算(&&),最后是或运算(||)。当然,最稳妥的方式是使用小括号()来明确指定运算顺序。
在Ja va中,String是一个特殊的引用类型。字符串的内容可以空,也可以是任意字符序列。当字符串中包含引号、换行等特殊字符时,需要使用反斜杠\进行转义,这些转义符本身不计入字符串长度。字符串有一个强大的特性:它可以与任何其他数据类型使用+号进行拼接,结果总是生成一个新的字符串。这里有一个至关重要的概念:Ja va中的字符串对象一旦被创建,其内容就是不可变的(Immutable)。我们感觉字符串“变了”,其实是变量指向了一个全新的字符串对象,原来的对象内容并未改变。
Ja va为String类提供了丰富的方法来方便我们操作:
获取长度:字符串变量.length()
获取指定位置的字符:字符串变量.charAt(下标值)
查找字符首次出现的位置:字符串变量.indexOf(指定字符)
转换大小写:字符串变量.toUpperCase() / 字符串变量.toLowerCase()
比较内容(可忽略大小写):字符串变量a.equalsIgnoreCase(字符串变量b)
截取子串:字符串变量.substring(beginIndex)(从beginIndex到末尾)
字符串变量.substring(beginIndex, endIndex)(从beginIndex到endIndex-1)
判断是否包含子串:字符串变量.contains(某个字符串)
占位符主要用于格式化输出,让代码输出更整洁可控。%s是一个通用占位符,可以格式化输出几乎任何类型的数据(最终都会转为字符串)。%d专门用于格式化输出整数。而%f则用于格式化输出浮点数。在输出浮点数时,还可以通过%.数字f(例如%.2f)来精确控制保留几位小数,这在处理金额、精度计算时非常实用。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9