导航:首页 > 编程语言 > java和优先级

java和优先级

发布时间:2023-05-29 22:11:05

java中的优先级问题

“++”薯渗与“--”的优先级都比“<”要高,
不过“++”、“--”的运算方向是自右向左的,“<”正好相反,所以在进行while里的条件判断后 y 进行“--”数雹脊操作,结果之所肆型以为 5 、5;
因为在运行到while循环时,条件判断里的 x 已经“++”一次,没有进while循环,所以后面的结果为6。
明白了么.....

② java运算优先级

所有的数学运算都认为是从左向右运算的,Java语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。
乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。
一般而言,单目运算符优先级较高,赋值运算符优先级较低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。
Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行。表 1 列出了所有的运算符的优先级以及结合性。

使用优先级为 1 的小括号可以改变其他运算符的优先级,即如果需要将具有较低优先级的运算符先运算,则可以使用小括号将该运算符和操作符括起来。例如下面的表达式:(x-y)*z/5
在这个表达式中先进行括号内的减法运算,再将结果与 z 相乘,最后将积除以 5 得出结果。整个表达式的顺序按照从左向右执行,比较容易理解。

再来看一个复杂的表达式,如下所示。--y || ++x && ++z;
这个表达式中包含了算术运算符和逻辑运算符。根据表 1 中列出的优先级,可以确定它的执行顺序如下:
① 先计算 y 的自减运算符,即 --y。
② 再计算 x 的自增运算符,即 ++x。
③ 接着计算 z 的自增运算符,即 ++z。
④ 由于逻辑与比逻辑或的优先级高,这里将 ② 和 ③ 的结果进行逻辑与运算,即 ++x && ++z。
⑤ 最后将 ④ 的结果与 ① 进行逻辑或运算,即 --y||++x&&++z。

如果没有上述对该表达式执行顺序的说明,第一眼看到它时将很难识别优先级。对于这类问题,可以通过添加小括号使表达的顺序更加清晰,而不用去查优先级表。如下所示为改进后的表达式。(--y)||((++x)&&(++z));
技巧:记住这么多运算符的优先级是比较困难的,因此读者应该在实际应用中多多练习。

因为 Java 运算符存在这种优先级的关系,因此在做 SCJP 的时候或者某些公司的面试题,有如下 Java 代码:

int a = 5;
int b = 4;
int c = a++- --b*++a/b-- >>2%a--;

问 c 的值是多少?这样的语句实在太恐怖了,即使多年的老程序员看到这样的语句也会眩晕。这样的代码只能在考试中出现,作为一个程序员如果写这样的代码,恐怕他马上就得走人了,因为他完全不懂程序开发。

源代码就是一份文档,源代码的可读性比代码运行效率更重要。 因此在这里要提醒大家:

③ JAVA的运算符的优先级是什么样的

所有的数学运算都认为是从左向右运算的,Java语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。另外,Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行。如下是优先级和结合性。

结合性是指如果遇到同一优先级的运算符,程序的执行顺序。比如!和++同时存在,它会先加,然后再去比较是否相等。

④ java运算符的优先级口诀急用急用!!

个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解,称这个顺序为运算符的优先顺序。

在表达式中,当运算符不止一种时,要先处理算术运算符,接着处理比较运算符,然后再处理逻辑运算符。所有比较运算符的优先顺序都相同;也就是说,要按它们出现的顺序从左到右进行处理。而算术运算符和逻辑运算符则必须按下列优先顺序进行处理:

算术
指数运算 (^)
负数 (–)
乘法和除法 (*、 /)
整数除法 (\)
求模运算 (Mod)
加法和减法 (+、 –)
字符串连接 (&)

比较
相等 (=)
不等 (<>)
小于 (<)
大于 (>)
小于或相等 (<=)
大于或相等 (>=)
Like
Is

逻辑
Not
And
Or
Xor
Eqv
Imp

当乘法和除法同时出现在表达式中时,每个运算都按照它们从左到右出现的顺序进行计算。当乘法和除法同时出现在表达式中时,每个运算也都按照它们从左到右出现的顺序进行计算。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。但是,在括号之内,运算符的优先顺序不变。

字符串连接运算符 (&) 不是算术运算符,但是,就其优先顺序而言,它在所有算术运算符之后,而在所有比较运算符之前。

Like 的优先顺序与所有比较运算符都相同,实际上是模式匹配运算符。

Is 运算符是对象引用的比较运算符。它并不将对象或对象的值进行比较,而只确定两个对象引用是否参照了相同的对象。

⑤ 对Java线程优先级的理解是什么

每一个线程都是有优先级的,一般来说,源旦高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,雹旁扰这个实现是和操作系统相关的(OSdependent)。可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个int变量(从1-10),1代表最低优先级,10代表最高优先启行级。

⑥ JAVA运算优先级

先运算b+2=22,然后是a-=22,a=-12.最后是 a+=-12, a=-2.

运算符优先级表
优先级 运算符 结合性
1 () [] . 从左到右
2 ! +(正) -(负) ~ ++ -- 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 << >> >>> 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左

⑦ 关于Java线程的优先级

Java线程的优先级越高,就越是先执行。A最低为1,B为6,C为10。程序在执行时先看线程的优先级,保证高优先级的先执行,同级别优先级的按顺序执行。并且线程在调用run方法后才开始执行。
上面的程序中,虽然创建顺序为ABC,但他们同时调入内存(因为java对于一个完整的程序是批处理),jvm会保证线程优先级顺序执行。

阅读全文

与java和优先级相关的资料

热点内容
三级美电影 浏览:621
天浩打印服务器怎么修改ip地址 浏览:468
二龙湖浩哥系列观看顺序 浏览:158
哪个播放器英语影视剧多 浏览:964
和小矮人有关的电影 浏览:501
欧洲啪啪最多的电影 浏览:11
加密兔可以玩吗 浏览:332
反编译后怎么找到服务器地址 浏览:977
保险app上哪里买 浏览:809
关于缅北的电影有哪些 浏览:147
看片网站不下载 浏览:398
win端口重启命令 浏览:621
哪部电影有分娩镜头 浏览:30
韩国R级朴银狐 浏览:238
在沈阳做app推广地址在哪里好 浏览:209
vue项目获取组件源码 浏览:11
朝鲜抗日战争电影 浏览:952
姜银惠全部5部影片 浏览:279
龙游花丛全文阅读300 浏览:523
教授的妻子是房产中介的外国电影 浏览:953