相关疑难解决方法(0)

Long vs Integer,long vs int,使用什么以及何时使用?

有时我看到API使用longLongintInteger,我无法确定如何做出决定?

我什么时候应该选择什么?

java types numbers

131
推荐指数
5
解决办法
26万
查看次数

如何在Java中为原语进行等效的传递

这个Java代码:

public class XYZ {   
    public static void main(){  
        int toyNumber = 5;   
        XYZ temp = new XYZ();  
        temp.play(toyNumber);  
        System.out.println("Toy number in main " + toyNumber);  
    }

    void play(int toyNumber){  
        System.out.println("Toy number in play " + toyNumber);   
        toyNumber++;  
        System.out.println("Toy number in play after increement " + toyNumber);   
    }   
}  
Run Code Online (Sandbox Code Playgroud)

将输出:

 
Toy number in play 5  
Toy number in play after increement 6  
Toy number in main 5  

在C++中,我可以通过toyNumber引用传递变量以避免阴影,即创建同一个变量的副本,如下所示:

void main(){  
    int toyNumber = 5;  
    play(toyNumber);  
    cout << "Toy …
Run Code Online (Sandbox Code Playgroud)

java pass-by-reference

111
推荐指数
5
解决办法
20万
查看次数

变量赋值如何在JavaScript中工作?

所以我前几天正在玩,只是为了确切了解JavaScript中的大规模分配是如何工作的.

首先我在控制台中尝试了这个例子:

a = b = {};
a.foo = 'bar';
console.log(b.foo);
Run Code Online (Sandbox Code Playgroud)

结果是"警报"显示在警报中.这是公平的,a并且b实际上只是同一对象的别名.然后我想,我怎么能让这个例子更简单.

a = b = 'foo';
a = 'bar';
console.log(b);
Run Code Online (Sandbox Code Playgroud)

这几乎是一回事,不是吗?那么这一次,它foo不会bar像我期望的那样返回第一个例子的行为.

为什么会这样?

注意:使用以下代码可以更简化此示例:

a = {};
b = a;
a.foo = 'bar';
console.log(b.foo);

a = 'foo';
b = a;
a = 'bar';
console.log(b);
Run Code Online (Sandbox Code Playgroud)

(我怀疑JavaScript将字符串和整数等原语与哈希处理不同.哈希返回指针,而"核心"原语返回自己的副本)

javascript

96
推荐指数
2
解决办法
7万
查看次数

整数是不可改变的

我知道这可能非常愚蠢,但很多地方声称Java中的Integer类是不可变的,但是下面的代码:

Integer a=3;
Integer b=3;
a+=b;
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

给出(预期)结果毫无困难地执行6.因此,a的值有效地改变了.这不意味着Integer是可变的吗?次要问题和一点offtopic:"不可变类不需要复制构造函数".有人在乎解释原因吗?

java mutable immutability

93
推荐指数
6
解决办法
6万
查看次数

JavaScript:如何按值传递对象?

  • 将对象作为参数传递时,JavaScript会通过引用传递它们,并且很难创建对象的本地副本.

    var o = {};
    (function(x){
        var obj = x;
        obj.foo = 'foo';
        obj.bar = 'bar';
    })(o)
    
    Run Code Online (Sandbox Code Playgroud)

    o会有.foo.bar.

  • 通过克隆来解决这个问题是可能的.简单的例子:

    var o = {};
    
    function Clone(x) {
       for(p in x)
       this[p] = (typeof(x[p]) == 'object')? new Clone(x[p]) : x[p];
    }
    
    (function(x){
        var obj = new Clone(x);
        obj.foo = 'foo';
        obj.bar = 'bar';
    })(o)
    
    Run Code Online (Sandbox Code Playgroud)

    o不会有.foo.bar.


  1. 除了创建本地副本/克隆之外,还有更好的方法按值传递对象吗?

javascript

85
推荐指数
10
解决办法
10万
查看次数

"new String()"也是不可变的吗?

我一直在研究Java String.以下问题基于以下帖子

Java String是java中特殊
的String不可变性

  1. 不可变性:现在,通过不变性,String类被设计为公共池中的值可以在其他位置/变量中重用.如果String被创建为, 则这很好

    String a = "Hello World!"; 但是,如果我创建String之类的

    String b = new String("Hello World!"); 为什么这也是不变的?(或者是吗?).由于这有一个专用的堆内存,我应该能够修改它而不影响任何其他变量.因此,通过设计,还有其他任何原因,为什么String整体被认为是不可改变的?或者我的上述假设是错误的?

  2. 我想问的第二件事是关于常见的字符串池.如果我创建一个字符串对象为

    String c = ""; 是在池中创建的空条目?

这些帖子上已经有帖子吗?如果是这样,有人可以分享链接吗?

java string immutability

73
推荐指数
8
解决办法
8921
查看次数

指针是否被认为是在C中通过引用调用的方法?

在我大学的C编程课程中,教授及其后来的书在引用C中的指针时使用了术语调用或通过引用传递.

我的教授称之为"参考函数调用"的一个例子:

int sum(int *a, int *b);
Run Code Online (Sandbox Code Playgroud)

我的教授称之为"价值函数呼叫"的一个例子:

int sum(int a, int b);
Run Code Online (Sandbox Code Playgroud)

读过 C不支持通过引用调用.根据我的理解,指针通过值传递.

基本上,说指针是C通过引用传递的方式是不正确的吗?说你不能通过C中的引用传递但是可以使用指针替代它会更正确吗?


2015年11月11日更新

从我的问题起源的方式来看,我认为术语的争论已经产生,实际上我看到了两个具体的区别.

  • pass-by-reference(主要用于今天的术语):C++等语言中使用的特定术语
  • pass-by-reference(我的教授用来解释指针的范例):在C++之类的语言开发之前使用的一般术语,因此在术语被重写之前

在阅读了@Haris的更新答案之后,为什么这不是那么黑白,这是有道理的.

c pointers pass-by-reference

65
推荐指数
7
解决办法
6566
查看次数

如何在Java中使用输出参数?

有人可以给我一些在函数中使用输出参数的示例代码吗?我试过谷歌它,但只是在功能中找到它.我想在另一个函数中使用此输出值.

我正在开发的代码旨在在Android中运行.

java parameters android

59
推荐指数
4
解决办法
13万
查看次数

为什么在Java中将局部变量和方法参数标记为"final"?

在Java中,您可以使用final关键字限定局部变量和方法参数.

public static void foo(final int x) {
  final String qwerty = "bar"; 
}
Run Code Online (Sandbox Code Playgroud)

这样做会导致无法在方法体中重新分配x和qwerty.

这种做法使你的代码向不变性的方向推动,这通常被认为是一个加分.但是,它也会使代码混乱,"最终"出现在各处.您对Java中的局部变量和方法参数的final关键字有何看法?

java final

57
推荐指数
5
解决办法
10万
查看次数

删除Java String变量的最后一个字符

一个java String变量,其值为

String path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null"
Run Code Online (Sandbox Code Playgroud)

我想删除最后四个字符,即.null.我可以使用哪种方法进行拆分.

java string

56
推荐指数
4
解决办法
14万
查看次数