草庐IT

java - 原语的显式初始化

我知道Java原语有默认的初始化值;例如0代表int。根据我的研究,我似乎不应该依赖这些值。我应该始终提供显式初始化吗?如果是,在哪里?这是我的程序的一部分:publicclassCalculator{//Initializevaluewhereit'sdeclared?privateintvalue;publicCalculator(){//Initializevalueinconstructor?}publicvoidadd(intother){value+=other;}} 最佳答案 使用Java生成的默认值是绝对可以的,您不

java - 为什么静态字段自赋值只能使用显式静态语法进行编译?

为什么这段代码在右侧使用显式静态字段符号进行编译,但不是没有?publicclassA{staticinta=++A.a;//compiles//staticinta=++a;//error-cannotreferenceafieldbeforeitisdefinedpublicstaticvoidmain(String[]args){System.out.println(a);}} 最佳答案 这就是语言规范的编写方式。具体来说,Sec8.3.3说:Referencestoafieldaresometimesrestricted,e

java - 如何在不显式配置策略的情况下获取对 SessionAuthenticationStrategy 的引用?

在基于SpringSecurity3.2的应用程序中,我有一个显式配置的UsernamePasswordAuthenticationFilter,需要引用sessionAuthenticationStrategy(为了调用.onAuthentication)。*sessionAuthenticationStrategy是由创建的默认值(HttpSecurityBeanDefinitionParser)。我的问题:如何获得对SessionAuthenticationStrategy的引用?没有配置完整的SessionAuthenticationStrategy明确,以便我可以在XML配置

Java - 从 Int 到 Short 的显式转换

有人可以解释为什么会出现以下声明:shortvalue=(short)100000000;System.out.println(value);给我:-7936知道Java中short的最大值是32767对吗? 最佳答案 你值一亿,我得到-7936。1亿改100万只能得到16960。原因是short的值限制在-32768到+32767之间,Java在转换为short(narrowingprimitiveconversion,JLS5.1.3)时只保留最低有效的16位.实际上这个操作:100万模2^16(short中的16位)是1696

java - 显式置零

在java中什么情况下显式置空有用。它是否以任何方式通过使对象无法访问或其他方式来帮助垃圾收集器?这被认为是一种好的做法吗? 最佳答案 在Java中,如果您有一个运行时间很长的方法,并且对an对象的唯一引用是通过局部变量,它可以提供帮助。当您不再需要该局部变量时(但是当该方法将继续运行很长时间时)将该局部变量设置为null可以帮助GC。(在C#中,这很少有用,因为GC考虑了“最后可能的使用”。这种优化可能会在某个时候对Java起作用——我不知道。)同样,如果您有一个引用对象的成员字段并且您不再需要它,您可以通过将该字段设置为null

java - 如果您在 Java 中显式初始化一个 Object 数组,包含 "new Object[]"与不包含它是否不同?

前言:这个问题已经被问到here,但我特别想知道作者的具体含义。我正在通读ThinkinginJava,第3版。修订版4.0,Eckel在第4章初始化和清理中展示了这个片段:publicclassArrayInit{publicstaticvoidmain(String[]args){Integer[]a={newInteger(1),newInteger(2),newInteger(3),};Integer[]b=newInteger[]{newInteger(1),newInteger(2),newInteger(3),};}}并声明如下:Thefirstformisusefula

java - 如果一个方法由其显式类型调用,它对运行时性能有影响吗?

我目前正在编写一个创建Java字节码并编写方法调用的应用程序。到目前为止,编写此字节代码的模块没有关于调用方法调用的实例的实际类型的信息,但它确实知道为其定义特定方法的类型。例如:classFoo{publicvoidfoo(){}}classBarextendsFoo{publicvoidbar(){}}引擎的当前版本将执行INVOKEVIRTUALFoo.foo甚至在Bar类型的对象上,因为它知道foo是在Foo中定义的。这在JVM中是合法的(当然),但Java编译器会将其翻译成INVOKEVIRTUALBar.foo当它是“正常的”Java源代码时。我目前想知道JVM是否实际使用

java - 我需要显式处理 SWT Shell 吗?

有人告诉我并且有readSWT对象必须通过调用它们的dispose方法来显式处理。但是,在我自己使用以下代码进行的测试中,我注意到至少Shell将自己报告为已处置,即使在我的代码中从未调用(也未出现)dispose方法。importjava.util.ArrayList;importjava.util.List;importorg.eclipse.swt.events.DisposeEvent;importorg.eclipse.swt.events.DisposeListener;importorg.eclipse.swt.widgets.Display;importorg.ecli

java - 如何在没有显式调用的情况下调用 'actionPerformed' 方法?

我刚开始使用Swing学习GUI,并不完全了解actionPerformed方法的工作原理。考虑以下代码://codetocreateabuttonandchangeitstextwhenclickedpublicclasssimpleguiimplementsActionListener{JButtonbutton;publicstaticvoidmain(String[]args){simpleguigui=newsimplegui();gui.go();}publicvoidgo(){JFrameframe=newFrame();button=newJButton("clickM

SEO - sitemap.xml 提供不在页面上作为 anchor 的显式链接

我有一个带有输入文本的网站。用户键入一个城市的名称,按回车键,它就会在那里链接。我的sitemap.xml看起来像这样:http://www.example.com/rome.htmlhttp://www.example.com/london.htmlhttp://www.example.com/newyork.htmlhttp://www.example.com/paris.htmlhttp://www.example.com/berlin.htmlhttp://www.example.com/toronto.htmlhttp://www.example.com/milan.html