用Java在变量中保存常用的属性?
当我学习C语言时,有人教我做一些事情,比如说,如果我想循环一个用Java在变量中保存常用的属性?,java,c,performance,Java,C,Performance,当我学习C语言时,有人教我做一些事情,比如说,如果我想循环一个strlen(string)次,我应该将该值保存在一个“辅助”变量中,比如count,并将其放在for condition子句中,而不是strlen,因为这样可以省去多次处理的需要 现在,当我开始学习Java时,我注意到这并不是常态。我见过很多代码和程序员在做我在C语言中被禁止做的事情 这是什么原因?他们是否在用效率换取“可读性”?或者编译器能够修复这个问题吗 E:这不是与链接问题重复的问题。我不是简单地问字符串长度,我的问题是一个更
strlen(string)
次,我应该将该值保存在一个“辅助”变量中,比如count
,并将其放在for condition子句中,而不是strlen
,因为这样可以省去多次处理的需要
现在,当我开始学习Java时,我注意到这并不是常态。我见过很多代码和程序员在做我在C语言中被禁止做的事情
这是什么原因?他们是否在用效率换取“可读性”?或者编译器能够修复这个问题吗
E:这不是与链接问题重复的问题。我不是简单地问字符串长度,我的问题是一个更一般的问题。在旧时代,每个函数调用都很昂贵,编译器很笨,可用的分析器还没有出现,计算机速度也很慢。C宏和其他可怕的东西就是这样诞生的。Java没有那么古老 效率很重要,但大多数程序部分对效率的影响很小。但读取代码仍然需要程序员的时间,而且这比CPU的成本要高得多。因此,我们最好在大多数情况下优化可读性,并在最重要的地方关注速度
局部变量可以使代码更简单,因为它避免了复杂表达式的重复——这种情况有时会发生。当它避免了编译器无法完成的昂贵计算时,它可以使它更快——这种情况很少发生。当两个条件都不满足时,这只是一个浪费的行,为什么还要麻烦呢?现代编译器现在已经足够智能,可以隐式地完成这项工作。这主要是程序员的偏好。一般来说,如果需要在多个位置调用函数的结果,最好将其设置为初始变量。根据您使用的编译器,它很可能会为您进行优化。
Java!=C
和C!=Java
仅仅因为语法相似并不意味着其他任何东西都相似。@Casey有没有办法看看编译器是否真的会改变这一点?@YoTengoUnLCD当然,编译Java类并查看它生成的字节码。