我是Java的新手(多年来一直在写其他东西),除非我遗漏了一些东西(我很高兴在这里错了)以下是一个致命的缺陷......
String foo = new String();
thisDoesntWork(foo);
System.out.println(foo);//this prints nothing
public static void thisDoesntWork(String foo){
foo = "howdy";
}
Run Code Online (Sandbox Code Playgroud)
现在,我很清楚(相当差的措辞)概念,在java中,一切都是通过"值"而不是"引用"传递的,但String是一个对象,有各种各样的花里胡哨,所以,人们会期待与int不同,用户可以对传递给方法的东西进行操作(并且不会被overloaded =设置的值所困).
有人可以向我解释这个设计选择背后的原因是什么?正如我所说,我不是想在这里,也许我错过了一些明显的东西?
我一直在阅读关于delphi中with关键字的坏事,但在我看来,如果你不过度使用它.它可以使您的代码看起来很简单.
我经常将所有TClientDataSets和TField都放在TDataModules中.所以在我的表单中我有这样的代码
procedure TMyForm.AddButtonClick(Sender: TObject);
begin
with LongNameDataModule do
begin
LongNameTable1.Insert;
LongNameTable1_Field1.Value := "some value";
LongNameTable1_Field2.Value := LongNameTable2_LongNameField1.Value;
LongNameTable1_Field3.Value := LongNameTable3_LongNameField1.Value;
LongNameTable1_Field4.Value := LongNameTable4_LongNameField1.Value;
LongNameTable1.Post;
end
end;
Run Code Online (Sandbox Code Playgroud)
如果没有with关键字,我必须编写这样的代码
procedure TMyForm.AddButtonClick(Sender: TObject);
begin
LongNameDataModule.LongNameTable1.Insert;
LongNameDataModule.LongNameTable1_LongNameField1.Value := "some value";
LongNameDataModule.LongNameTable1_LongNameField2.Value :=
LongNameDataModule.LongNameTable2_LongNameField1.Value;
LongNameDataModule.LongNameTable1_LongNameField3.Value :=
LongNameDataModule.LongNameTable3_LongNameField1.Value;
LongNameDataModule.LongNameTable1_LongNameField4.Value :=
LongNameDataModule.LongNameTable4_LongNameField1.Value;
LongNameDataModule.LongNameTable1.Post;
end;
Run Code Online (Sandbox Code Playgroud)
我认为使用with关键字更容易阅读.
我应该避免使用with关键字吗?
我想用空格填充我的字符串.以下功能适用于除空白以外的所有字符.
myString.PadRight(50,"x")
Run Code Online (Sandbox Code Playgroud)
编辑:
myString.PadRight(50)会填充带有空格的字符串,但是当在以下语句中使用此字符串时,空白填充将消失.
myCheckBox.Text = myString.PadRight(50)
Run Code Online (Sandbox Code Playgroud) 情况就是这样:
我有一个Trigger.dll和一个Trigger.XmlSerializer.dll.
我使用CREATE ASSEMBLY在MSSQL中注册它们.
现在,我已经编译了两者的新版本.
我想使用ALTER ASSEMBLY来更新它们,但是你一次只能更新一个.如果您尝试更新具有依赖关系的那个,它会抱怨.这样做的诀窍是什么?
我不想丢弃并重新创建,因为我必须删除所有触发器等,并且有数据库停机时间.
有没有办法从jvm里面修改jvm args?具体来说,我希望能够从内部更改jvm的最大堆大小.这可能吗?
编辑:我想我应该添加我想要这样做的原因.我有一些在不同的机器/平台上运行的Java程序.这些程序具有在运行时获取的配置,并且根据程序运行的计算机/环境而不同.其中一些配置可以在运行时更改,并且各种程序会随着配置的更改自动更新.
我希望堆大小成为这些配置参数之一,这些参数在运行时来源,就像配置的其余部分一样.如果是这样,那么程序可以启动(使用一些默认的jvm args)然后根据检索到的配置调整自身.
什么是PowerShell?
我安装了Windows 7,我注意到它有PowerShell.我记得在注册Windows Azure时安装了一段时间,但仅仅因为它是必需的.
超级外行的条款会有什么解释?:)
为什么下面的文字是红色的?
#stories li a {color:red}
.default li.expand a {color:green}
li.expand a {color:blue}
Run Code Online (Sandbox Code Playgroud)
<ul id="stories" class="default">
<li>this is the end</li>
<li class="expand">this is the end</li>
Run Code Online (Sandbox Code Playgroud)
只有当我把#stories放在其他文件上时,文本才会改变.#是否有更多的优势,即使它进一步上升到css?!
无需使用ActiveX或其他类型的客户端编码:
是否可以通过他的书签或主页确定网站访问者是否到达页面?
我个人认为这是不可能的,但我想确定或证明是错误的.
我现在这样做的方式是:
Request.UrlReferrer
Run Code Online (Sandbox Code Playgroud)
如果我没有发现任何东西在那里,我目前推断用户有我添加书签.
这似乎是一个愚蠢的问题,但也能在应用与C#3(.NET Framework 3.5的)建立构建和部署到没有安装的3.5框架的机器?即bin部署是否适用于System.Core和其他3.5个dll?
我真的想建立使用lambda表达式,LINQ,Func键等我的应用程序,但我的客户是不允许在他们的计算机上安装的3.0或3.5的框架(他们安装了2.0框架).