常量表达式
c语言,整型表达式和常量表达式中都没有变量参与吧?
完整问题:好评回答:表达式没有变量参与?不是很清楚这个问题的定义,只是知道(a b)这种表达式下a和b都可以是变量Java编译器对于String常量表达式的优化是什么呢?
完整问题:Java编译器对于String常量表达式的优化是什么呢?好评回答:首先把问题摆出来,先看这个代码 String a = ab; String b = a + b; System。out。println((a == b));打印结果会是什么?类似这样的问题,有人考过我,我也拿来考过别人(蛮好玩的,大家也可以拿来问人玩),一般答案会是以下几种: 1。true a + b 的结果就是ab,这样a,b都是ab了,内容一样所以相等,结果true 一般java新人如是答。 2。false a + a会生成新的对象aa,但是这个对象和String a = ab;不同,(a == b)是比较对象引用,因此不相等,结果false 对java的String有一定了解的通常这样回答。 3。true String a = ab;创建了新的对象ab; 再执行String b = a + b;结果b=ab,这里没有创建新的对象,而是从JVM字符串常量池中获取之前已经存在的ab对象。因此a,b具有对同一个string对象的引用,两个引用相等,结果true。 能回答出这个答案的,基本已经是高手了,对java中的string机制比较了解。 很遗憾,这个答案,是不够准确的。或者说,根本没有运行时计算b = a + b;这个操作。实际上运行时只有String b = ab; 3的观点适合解释以下情况: String a = ab; String b = ab; System。out。println((a == b));如果String b = a + b;是在运行期执行,则3的观点是无法解释的。运行期的两个string相加,会产生新的对象的。(本文后面对此有解释) 4。true 下面是我的回答:编译优化+ 3的处理方式 = 最后的true String b = a + b;编译器将这个a + b作为常量表达式,在编译时进行优化,直接取结果ab,这样这个问题退化 String a = ab; String b = ab; System。out。println((a == b));然后根据3的解释,得到结果true 这里有一个疑问就是String不是基本类型,像 int secondsOfDay = 24 * 60 * 60; 这样的表达式是常量表达式,编译器在编译时直接计算容易理解,而a + b 这样的表达式,string是对象不是基本类型,编译器会把它当成常量表达式来优化吗?。Java编译器对于String常量表达式的优化是什么呢?
完整问题:Java编译器对于String常量表达式的优化是什么呢?好评回答:首先把问题摆出来,先看这个代码 String a = ab; String b = a + b; System。out。println((a == b));打印结果会是什么?类似这样的问题,有人考过我,我也拿来考过别人(蛮好玩的,大家也可以拿来问人玩),一般答案会是以下几种: 1。true a + b 的结果就是ab,这样a,b都是ab了,内容一样所以相等,结果true 一般java新人如是答。 2。false a + a会生成新的对象aa,但是这个对象和String a = ab;不同,(a == b)是比较对象引用,因此不相等,结果false 对java的String有一定了解的通常这样回答。 3。true String a = ab;创建了新的对象ab; 再执行String b = a + b;结果b=ab,这里没有创建新的对象,而是从JVM字符串常量池中获取之前已经存在的ab对象。因此a,b具有对同一个string对象的引用,两个引用相等,结果true。 能回答出这个答案的,基本已经是高手了,对java中的string机制比较了解。 很遗憾,这个答案,是不够准确的。或者说,根本没有运行时计算b = a + b;这个操作。实际上运行时只有String b = ab; 3的观点适合解释以下情况: String a = ab; String b = ab; System。out。println((a == b));如果String b = a + b;是在运行期执行,则3的观点是无法解释的。运行期的两个string相加,会产生新的对象的。(本文后面对此有解释) 4。true 下面是我的回答:编译优化+ 3的处理方式 = 最后的true String b = a + b;编译器将这个a + b作为常量表达式,在编译时进行优化,直接取结果ab,这样这个问题退化 String a = ab; String b = ab; System。out。println((a == b));然后根据3的解释,得到结果true 这里有一个疑问就是String不是基本类型,像 int secondsOfDay = 24 * 60 * 60; 这样的表达式是常量表达式,编译器在编译时直接计算容易理解,而a + b 这样的表达式,string是对象不是基本类型,编译器会把它当成常量表达式来优化吗?。库伦定律的数学表达式。表达式中有个常量叫什么。采用国际单位制单位,其数值是多少。它的单位是什么
完整问题:好评回答:k=9.0*10^-19 单位是(N*m^2)/C^2 静电常数“每个常量表达式的值不能相同,但次序不影响执行结果”有问题吗
完整问题:好评回答:个人觉得有问题,常量表达式的值当然是可以相同的 如 int x=2; ? int y=2; //二个常量表达式的值都是2,完全是可以的C语言中switch()语句形式中case只加常量表达式但不加语句是什么意思?
完整问题:C语言中switch()语句形式中case只加常量表达式但不加语句是什么意思?好评回答:表示几个case共用一条/组语句。即它与下面离它最近那个有语句的case使用相同的语句。case 1:case 2:case 3: printf(123); break;则不论1/2/3都输出123
热门信息
阅读 (128)
1 童子命的口诀对照表,是不是童子命一查就知道阅读 (88)
2 让男人爱你的咒语——和合术咒语阅读 (71)
3 自己怎么简单的做和合术?找道长做快速挽回阅读 (70)
4 和合术真都有用吗?效果好吗?阅读 (68)
5 阳宅风水学入门图解大全100例,让你马上成为风水专家