Java int被插入到字符串中间,sqlite selection,为什么代码中没有错误?
尽管变量rowNum是int而不是String,但下面的代码如何能够正常工作?这是怎么可能的,或者这里发生了什么 当字符串分配给字符串选择变量时,int rowNum变量是否自动转换为字符串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 + " = '"
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编译器将智能地完成这项工作,以方便程序员