什么时候使用比较运算符是安全的,例如==,> =,<在Java中使用Integer对象而不是原始的int?
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
我知道==对于引用是危险的,你应该使用.equals,但其他运算符呢?例如
int x = 7;
int y = 7;
Integer a = new Integer(7);
Integer b = new Integer(7);
System.out.println(x == y);
System.out.println(a == b);
System.out.println(a.equals(b));
System.out.println(a <= b);
Run Code Online (Sandbox Code Playgroud)
版画
true
false // Why you should use .equals
true
true // Seemed dangerous but it worked?
Run Code Online (Sandbox Code Playgroud)
是否可以使用除double equals以外的任何东西(So>,<,> =和<=是安全吗?),还是应该使用.compareTo()方法?
我的程序运行时创建的对象有问题
首先我创建n个对象(假设n:= 3)
for i:=0 to n-1 do
begin
With TGauge.Create(Form1) do
begin
Parent := Form1; // this is important
Left := 20; // X coordinate
Top := 20+i*45; // Y coordinate
Width := 250;
Height := 20;
Kind := gkHorizontalBar;
Name := 'MyGauge'+IntToStr(i);
//....
Visible := True;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这三个对象在表单中创建并可见.现在我想改变它的'属性,但每当我尝试访问这些创建的对象时,我只会得到它
EAccessViolation
Run Code Online (Sandbox Code Playgroud)
例如,当我尝试获取一个对象的名称时
g := Form1.FindComponent('MyGauge0') as TGauge;
Form1.Label1.Caption:=g.Name;
Run Code Online (Sandbox Code Playgroud) 我正在阅读Scott Meyers的Effective C++并且遇到了这个问题.使用引用/指针的原因包含:
string s1("Nancy");
string s2("Clancy");
string& rs = s1; // rs refers to s1
rs = s2; //rs still refers to s1, but s1's value is now "Clancy".
Run Code Online (Sandbox Code Playgroud)
所以,我尝试了这个:
string s1("Nancy");
string s2("Clancy");
string& rs = s1;
cout << rs << endl;
rs = s2;
cout << rs << endl;
cout << s1 << endl;
Run Code Online (Sandbox Code Playgroud)
输出见:
nancy
clancy
clancy
Run Code Online (Sandbox Code Playgroud)
这意味着s1的值现在已经改变了,s1的原始值永远丢失了?
这是区分引用和指针的事情之一然后??只有当你确定不打算在不同的时间引用不同的对象时才使用引用.
我遇到了一个不寻常的情况.我存储一个引用Object.prototype.toString.call,试图创建一个快捷方式,调用它作为指定的变量导致TypeError,而每次直接调用它不会.
谁能解释实际发生的事情,而不是我相信我在做什么?
var toString = Object.prototype.toString.call;
toString({}); //Uncaught TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)
以下工作:
var toString = Object.prototype.toString;
toString.call({});
Run Code Online (Sandbox Code Playgroud)
非常感谢.
可以为基类引用变量分配基类对象或派生类对象的地址。
真假?
谁能给我看看这意味着什么的例子?我是Java的新手,正在尝试了解Java的特定语言术语。谢谢。
我认为以下示例就是我在下面编写的代码:
public class B extends A {
A a = new A();
A ab = new B();
}
class A {
}
Run Code Online (Sandbox Code Playgroud)
我认为,由于两个参考变量都是有效的语法(在Eclipse中),所以答案是正确的。
请考虑以下JavaScript类,属性和方法:
function Foo() {
this.data = 123;
}
Test.prototype.foo = function() {
$("body").append($("<div>")
.text("Hello World!")
.click(function () {
alert("Data: " + this.data);
})
);
}
var Bar = new Foo();
Bar.foo();
Run Code Online (Sandbox Code Playgroud)
为什么data警报框中的属性未定义?如何引用"this",如同指向Foo类而不是jQuery div元素?
嗨,我对Java和DLL有问题。
我需要通过引用将字符串值传递给dll,但是,它不成功。
public short ReadData(int block_id, int offset, int data_size,StringByReference dataBuf, IntByReference err_code);
Run Code Online (Sandbox Code Playgroud)
问题是StringByReference dataBuf,我尝试了多种方法来找到解决方案,但是它不起作用。
调用函数为:
ReadData(0, 4, 13, ??? , status);
Run Code Online (Sandbox Code Playgroud)
原因没有.dll文件。
功能
`public static short Read_Data(int card_type, int block_id, int offset, int data_size, String dataBuf, IntByReference err_code){
short rc;
IntByReference status = new IntByReference(0);
int len = data_size+16;
//StringByReference dataBuf_ref = new StringByReference( spaces(data_size+16));
//StringBuilder zText = new StringBuilder ();
//zText.append(dataBuf);
dataBuf = spaces(data_size+16);
//StringByReference a = new StringByReference(dataBuf);
// StringByReference a = new StringByReference(dataBuf);
//Pointer …Run Code Online (Sandbox Code Playgroud) 考虑:

我理解,对于原始数据类型,分配的内存(橙色矩形)包含您想要的内容,但对于引用数据类型,分配的内存包含指向您想要的内容的引用/指针.
为什么要这样设计呢?对于通常是参考数据类型(对象,数组等)的东西,为什么不把你想要的东西放在橙色矩形中呢?
有人可以让我知道指针 "*&" 的C等价物吗?
换句话说,如果我的函数在C++中是这样的:
void func(int* p, int*& pr)
{
p++;
pr++;
}
Run Code Online (Sandbox Code Playgroud)
在C中转换它时,我如何更改第二个参数?
更新: @MikeDeSimone:如果我理解了翻译的代码,请告诉我?让我从初始化变量开始:
int i = 10;
int *p1 = &i;
int **pr= &p1;
Run Code Online (Sandbox Code Playgroud)
所以,当你执行(*pr)++时,这基本上相当于:
(p1)++
Run Code Online (Sandbox Code Playgroud)
但是,我无法理解main()内部的外观如何?
问题2:如果我有这样的代码片段,我该怎么办?
void pass_by_reference(int*& p)
{
//Allocate new memory in p: this change would reflect in main
p = new int;
}
Run Code Online (Sandbox Code Playgroud) 考虑这两个文件:
//main1.cpp
int main()
{
int a = 0;
int &b = a;
}
//main2.cpp
int main()
{
int a = 0;
int *b = &a;
}
Run Code Online (Sandbox Code Playgroud)
当我用gcc -S选项编译它并比较2个汇编器输出时,它们是完全相同的输出.那么为什么有些书说参考变量不使用额外的内存呢?