草庐IT

局部剪枝

全部标签

java - 从我们声明内部类的方法局部内部类访问局部变量

我正在学习Java,我正在学习的教程说Java不允许从方法m2()直接访问变量k(下面示例中m1()的局部变量),因为它们是在相同的方法中创建的m1()并且在编译时我会得到一个错误(除非k被声明为final)。他们说的原因是局部变量(k)是在方法调用期间创建的,方法执行完成后销毁,但是对象(o)是在实例化对象时创建的,并且在方法执行后仍然不能销毁。所以教程说,如果你在方法m2执行后调用方法m2()或对象o(我不知道这是怎么可能的),变量k将被破坏并且不可用。所以教程声称Java不允许这样的声明。(不对的地方欢迎指正)但是当我编译这个程序时工作正常。我错过了什么吗?我知道从我的解释角度来

java - servlet 中的线程局部变量

threadlocals变量是否对所有向拥有这些变量的servlet发出的请求都是全局的?我正在为服务器使用树脂。感谢awnser。我想我可以让自己更清晰。具体案例:我想:在请求开始执行时初始化一个静态变量。能够以线程安全的方式在从servlet调用的方法的进一步执行中查询变量的值,直到请求结束执行 最佳答案 简短回答:是的。更长一点:这就是Spring发挥其魔力的方式。参见RequestContextHolder(通过DocJar)。但需要注意-您必须知道何时使ThreadLocal无效,如何推迟到其他线程以及如何(不)与非线程本

java - 为什么在大多数开源 java 项目中局部变量没有被声明为 final?

如果我查看OpenJDK、Hibernate或Apache中的java源代码,我还没有看到任何局部变量声明为final。这表明一些最广泛使用的Java软件库的开发人员:不要相信final关键字会提高可读性。不相信它会显着提高性能。为什么stackoverflow上的大多数贡献者都认为应该使用它(基于投票最高的回复)? 最佳答案 可能是因为输入单词final中的五个LONG字母很麻烦...为什么他们要经历写作的痛苦finalintx;打字次数是原来的两倍intx;?我们开发人员很懒,你知道的...:P

java - 重复局部变量(For 循环)

我正在尝试解决一个任务(我对Java还是很陌生)并且已经梳理了许多资源来解决这个冲突但仍然无法完全解决。(注意:金枪鱼是我的Scanner变量)intcounted,sum,counted1;System.out.print("Enteryournumbertobecalculated:");counted=tuna.nextInt();counted1=tuna.nextInt();for(intcounted=0;counted结果是:线程“main”中的异常java.lang.Error:Unresolved编译问题:重复局部变量计数我要解决的问题是:写一个程序,读入一个数,然后

java - Java 方法可以有超过 255 个局部变量吗?

iloadJava操作码用于将值从局部变量数组(LVA)压入操作数堆栈。此操作码采用单个字节作为参数(en.wikipedia.org/wiki/Java_bytecode_instruction_listings),用作LVA的索引。如果LVA的一个元素始终是对象的引用(我想这不是静态方法的情况,但现在让我们忽略它们),并且如果恰好一个字节用作索引(可能有256个)值),那么一个方法如何访问超过255个不同的局部变量? 最佳答案 是的,Java方法可以有超过255个局部变量。wide操作码指令可用于修改iload或aload指令以

java - 局部变量、实例字段、输入参数和类字段之间有什么区别?

相对于简单的Java程序,局部变量、实例字段、输入参数和类字段之间有什么区别? 最佳答案 局部变量是在block的范围内定义的。它不能在该block之外使用。例子:if(x>10){Stringlocal="Localvalue";}我不能在ifblock之外使用local。实例字段,或字段,是一个绑定(bind)到对象本身的变量。我可以在对象中使用它而不需要使用访问器,对象中包含的任何方法都可以使用它。如果我想在对象的外部使用它,并且它不是public,我将不得不使用getter和/或setter。例子:publicclassPo

java - 局部变量的默认值

这个问题在这里已经有了答案:Defaultvaluesofinstancevariablesandlocalvariables(2个答案)关闭9年前。在Java中,为什么要将类变量初始化为默认值?但局部变量不是。

java - 使用局部变量来保存全局变量的目的是什么?

我查看了String.hashcode()的源代码方法。这是6-b14中的实现,已更改。publicinthashCode(){inth=hash;if(h==0){intoff=offset;charval[]=value;intlen=count;for(inti=0;i我的问题是关于这一行:intlen=count;其中count是一个全局变量,表示字符串的字符数。为什么这里使用局部变量len作为循环条件而不是全局变量本身?因为没有变量的操作,只有读取。如果全局字段用于读取或写入局部变量,那么使用局部变量只是一种好习惯吗?如果答案是肯定的,为什么还要阅读?

java - 初始化静态变量时使用局部变量

在java.util.Scanner的源代码中,我发现了这些静态实用方法:privatestaticPatternseparatorPattern(){Patternsp=separatorPattern;if(sp==null)separatorPattern=sp=Pattern.compile(LINE_SEPARATOR_PATTERN);returnsp;}privatestaticPatternlinePattern(){Patternlp=linePattern;if(lp==null)linePattern=lp=Pattern.compile(LINE_PATTERN

java - Sun 的 HotSpot JIT 编译器是否自动将 "final"应用于 Java 局部变量?

我听说是这种情况,但我找不到权威的在线资源来证实这一点。背景:一位同事喜欢将他的局部变量设为final。他这样做的原因之一是性能。我的观点是Java的HotSpotJustInTime编译器会自动检测不变的局部变量,并使它们成为final,因此我们自己这样做不会性能有任何好处。请注意,我不是询问将局部变量设为final是否是良好的编码习惯,因为已经有很多(离题的)SO问题了.编辑:mrhobo提出了关于优化整数文字字节码的一个很好的观点。我应该给出一个我正在谈论的代码类型的例子,以及我的问题:ObjectdoSomething(Foofoo){if(foo==null){returnn