Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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 int被插入到字符串中间,sqlite selection,为什么代码中没有错误?_Java_Android_Database_String_Sqlite - Fatal编程技术网

Java int被插入到字符串中间,sqlite selection,为什么代码中没有错误?

Java int被插入到字符串中间,sqlite selection,为什么代码中没有错误?,java,android,database,string,sqlite,Java,Android,Database,String,Sqlite,尽管变量rowNum是int而不是String,但下面的代码如何能够正常工作?这是怎么可能的,或者这里发生了什么 当字符串分配给字符串选择变量时,int rowNum变量是否自动转换为字符串 public String getTableString(int rowNum){ String tableString = ""; String[] columns = new String[]{TABLE_STRING}; String selection = _ID + " = '"

尽管变量rowNum是int而不是String,但下面的代码如何能够正常工作?这是怎么可能的,或者这里发生了什么

当字符串分配给字符串选择变量时,int rowNum变量是否自动转换为字符串

  public String getTableString(int rowNum){
  String tableString = "";
  String[] columns = new String[]{TABLE_STRING};
  String selection = _ID + " = '" + rowNum + "';";
  Cursor cursor = sqLiteDatabase.query
  (MYDATABASE_TABLE, columns, selection, null, null, null, null);
为什么我不必在这种情况下使用Integer.toString(),它仍然有效

这没有任何意义,根据正常规则,在将rowNum分配给字符串选择变量之前,应该要求使用Integer.toString()方法将其转换为字符串


基本上,正如代码所示,将int粘贴到字符串上并将其分配给string变量。这是错误的。这应该是一个类强制类型转换异常。

这是在§15.18.1中发现的一种情况:

如果只有一个操作数表达式为String类型,则在运行时对另一个操作数执行字符串转换(§5.1.11),以生成字符串

最终,per所发生的是一个字符串转换,通过将原语值转换为其对象对应值(因此,
int
=>
newinteger()
char
变为
newcharacter()
,等等),然后对该引用调用
toString()

长话短说,是的<代码>整数。正在调用toString();但是您没有义务调用它-这是作为字符串转换的一个要求来完成的

被咬:

  • 我不知道
    \u ID
    的类型,但我假定它是字符串
  • “=”
    是字符串文字。将此值与上一个左侧值相结合,就有了一个新字符串

  • rowNum
    是一个
    int
    。创建一个新的
    Integer
    并对其调用
    toString()
    ,然后连接结果。你有一个新的字符串

  • “;”是一个字符串。将此字符串与以前的新字符串组合,就有了一个新字符串

最后,
rowNumb
是一个整数,但当您将它放在双引号旁边时,它将被视为字符串文字的一部分

例如:

int a = 3;
jtextField.setText(Integer.toString(a));
//or
jtextField.setText(""+a);
//are the not the same, but the second one is a tricky way to set
//an integer to the text field.

如果将字符串与int连接起来,Java会尝试将其转换为字符串。本质上,.toString是在对象上调用的,在本例中是一个整数


你应该提高你的技能。这是你应该知道的基本情况…

这是一种自动装箱,这里发生的是

String.valueOf(rowNum)
对于
int
转换为
String
,您应该手动执行此操作。但是java编译器将智能地完成这项工作,以方便程序员