1 public void mouseDra=gged(MouseEvent e)
2 {
3 String str = "X = " + e.getX() + " Y = " + e.getY();
4 this.textFiled.setText(str);
}
我的问题在第三行,e.getX()返回的是一个int类型的数,但是括号中是String类型,并且str也声明为字符串。那没请问:为什么编译时不报错呢?
请问报的信息可以 贴出来 么
噢,程序自动做类型转换了。因为所有的对象都继承自Object,都有ToString()方法;
String str = "X = " + e.getX() + " Y = " + e.getY();
java应该会自动转换,就像在Messagebox会自动转换一样
这是我积累的一些java项目源码 你可以参考参考 不过有点基础
http://download.csdn.net/album/detail/1369
你在+的时候自动转换了,如果以后有什么类型转string也可以直接加一个空的
这个是JAVA中的类型自动转换
你可以编译下面两行代码,看看有什么不同,再思考一下为什么
System.out.println("3"+3+3);//答案为333
System.out.println(3+3+"3");//答案为63
//e.getX()返回整数,但是前面"X = "是一个字符串,那么e.get()返回的值和它相加,仍未字符串。
当整形赋值给字符串变量时,整形变量会事先转换成字符串变量(相当于把整形变量当成字符串),然后在赋值给字符串。也就是类型自动转换
在相同的运算级的情况下从左到右顺序执行运算,字符串碰到基本类型int时,+号就是连接符了,而不是运算符了
java的数据类型转换分为两种,显性和隐性的,这里就是隐性的。
基本数据类型的有隐性数据类型,或者强制数据类型转换,百度很多。
而在自己定义的类中,如果重写了ToString()的话,和某个String类型的输出都会强制根据ToString的内容强制输出。
我想知道为什么要报错。。。。