Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 参数是通过引用而不是值传递的_Java_Android_Parameters - Fatal编程技术网

Java 参数是通过引用而不是值传递的

Java 参数是通过引用而不是值传递的,java,android,parameters,Java,Android,Parameters,我正在使用AsyncTask从网站上获取信息,用于我正在进行的一个小型学习项目。我已经试过我的代码,它“尝试”去做我想做的事情,尽管我有一个小问题 我将传递一个字符串作为要在AsyncTask中执行的参数,但该参数由地址而不是值引用。这是为什么?我如何在UI线程和后台线程之间正确地传递参数 这是传递参数的代码: ibSearch.setOnClickListener(new View.OnClickListener() { public void onClick(View v)

我正在使用AsyncTask从网站上获取信息,用于我正在进行的一个小型学习项目。我已经试过我的代码,它“尝试”去做我想做的事情,尽管我有一个小问题

我将传递一个字符串作为要在AsyncTask中执行的参数,但该参数由地址而不是值引用。这是为什么?我如何在UI线程和后台线程之间正确地传递参数

这是传递参数的代码:

ibSearch.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Editable artnrInput = input.getText();
            String artnr = artnrInput.toString();
            new Connection().execute(artnr);
        }
    });
到目前为止,我已经对它进行了调试,参数“artnr”在这里是一个值

这是发生错误的异步任务的一部分:

public class Connection extends AsyncTask<String, String, String>{

    @Override
    protected String doInBackground(String... artnr)  {
        String url = "http://mobil.systembolaget.se/SokDryck/SokDryck.aspx?artnr="+ artnr + "&lan=01";
我尝试了一个简单的toString(),但更多的是猜测。为什么它不是作为值传递,而是作为引用传递

谢谢,,
Z

您应该使用
artnr[0]
(这是您正在传递的唯一参数),而不是
artnr
(因为
String…artnr
是字符串对象的数组,而不是单个字符串对象):



除此之外,请参见您应该使用
artnr[0]
(这是您正在传递的唯一参数),而不是
artnr
(因为
String…artnr
是字符串对象的数组,而不是单个字符串对象):



除此之外,请参见

String。。。artnr
是一个
var args
,实际上只是一个数组。打印
artnr
时,您正在打印数组引用的值

您需要更改
url
字符串以打印
artnr[0]
,而不是
artnr
以打印字符串:-

String url = "http://mobil.systembolaget.se/SokDryck/SokDryck.aspx?artnr=" + 
             artnr[0] + "&lan=01";

字符串。。。artnr
是一个
var args
,实际上只是一个数组。打印
artnr
时,您正在打印数组引用的值

您需要更改
url
字符串以打印
artnr[0]
,而不是
artnr
以打印字符串:-

String url = "http://mobil.systembolaget.se/SokDryck/SokDryck.aspx?artnr=" + 
             artnr[0] + "&lan=01";

对字符串的引用是通过值传递的。Java中根本不传递对象,更不用说通过值或引用。对字符串的引用是通过值传递的。Java中根本不传递对象,更不用说通过值或引用了。@Zyril。知道Java按值传递一切是很有用的。当谈论对象时,“引用”是一个不好的词,因为它们是更准确的指针。“传递”给方法的对象(无法完成)实际上传递的是指针的值。该值是实际指针的副本,通过将对象“传递”到Java方法,然后尝试更改该对象,可以很容易地演示该值。可以修改其属性,但不能更改对象。编辑我刚刚发现了英文答案中的链接,这是一个很好的解释。@Simon。。呼吸,人呼吸。其实你是对的。编辑答案:)不用担心事实上我是在打电话给Zyril,我认为这不是对你答案的评论。我比和一个15.6K;)纠缠更聪明@西蒙。。哈哈:)不,这并不是说你不能和15.6K纠缠在一起。当然,人们并不是根据他们的代表来判断的。每个人都可能是错的。事实上,你的评论一点也没有冒犯我。所以不用担心。干杯:)@Zyril。知道Java按值传递一切是很有用的。当谈论对象时,“引用”是一个不好的词,因为它们是更准确的指针。“传递”给方法的对象(无法完成)实际上传递的是指针的值。该值是实际指针的副本,通过将对象“传递”到Java方法,然后尝试更改该对象,可以很容易地演示该值。可以修改其属性,但不能更改对象。编辑我刚刚发现了英文答案中的链接,这是一个很好的解释。@Simon。。呼吸,人呼吸。其实你是对的。编辑答案:)不用担心事实上我是在打电话给Zyril,我认为这不是对你答案的评论。我比和一个15.6K;)纠缠更聪明@西蒙。。哈哈:)不,这并不是说你不能和15.6K纠缠在一起。当然,人们并不是根据他们的代表来判断的。每个人都可能是错的。事实上,你的评论一点也没有冒犯我。所以不用担心。干杯:)
String url = "http://mobil.systembolaget.se/SokDryck/SokDryck.aspx?artnr=" + 
             artnr[0] + "&lan=01";