黑马程序员技术交流社区

标题: 关于数据类型的一段代码的疑惑 [打印本页]

作者: 李健_8    时间: 2012-10-11 12:14
标题: 关于数据类型的一段代码的疑惑
本帖最后由 李健_8 于 2012-10-11 13:35 编辑

package Stringlei;
public class StringDemo {
public static void main(String[] args){
  method_get();
}
public static void method_get(){
  String str="abcfghijk";
  //长度
  sop(str.length());  //sop方法声明的是传入一个数据类型 而此处却是传入一个方法 为什么却可以运行
}
public static void sop(Object obj){   //此处声明的是传入一个数据类型
  System.out.println(obj);
}
}


作者: 严海荣    时间: 2012-10-11 12:24
str.leng()的返回值是int
作者: 王震阳老师    时间: 2012-10-11 12:36
首先,在java中Object就上上帝,任何对象都是其子民。
再次,sop(str.length());  传入的不是一个方法,是一个int型数据。

作者: 唐永康    时间: 2012-10-11 13:09
首先,你没有对Object 这个超级类的理解,Object 类可以接受一切引用变量。也就是上帝类。而sop(str.length()),这是str.length();返回的是一个字符的长度,相当于str.length()=一个整数,把你的那个语句变一下,sop(整数);你的疑惑应该是对str.length()的返回类型不明确。
作者: 张忠豹    时间: 2012-10-11 13:10
亲,str.length()返回一个int类型
public static void sop(Object obj){   //此处声明的是传入一个数据类型
当然当str.length()的返回值传递给obj的时候传递的是int的包装类型Integer。
作者: 廖智    时间: 2012-10-11 13:32
本帖最后由 廖智 于 2012-10-11 13:33 编辑
张忠豹 发表于 2012-10-11 13:10
亲,str.length()返回一个int类型
public static void sop(Object obj){   //此处声明的是传入一个数据类型 ...


str.length()); 传入的是一个int型变量。
sop(str.length()); 接收int的是Integer对象。这是jdk1.5以后有的新特性。这里有个自动装箱动作。这里相当于Object obj = new Integer
注意:jdk1.5后。只要是基本数据类型Object都能接收。接收时会先把基本数据类型转成对应的基本数据类型对象包装类。
作者: 廖智    时间: 2012-10-11 13:37
本帖最后由 廖智 于 2012-10-11 13:44 编辑
廖智 发表于 2012-10-11 13:32
str.length());  传入的是一个int型变量。
sop(str.length()); 接收int的是Integer对象。这是jdk1.5以后 ...

package Stringlei;
public class StringDemo {
public static void main(String[] args){
  method_get();
}
public static void method_get(){
  String str="abcfghijk";
  //长度
  sop(str.length());   { 这里结果为9 ,是一个int型数据。
}
public static void sop(Object obj){  这里相当于 Object obj = 9也相当于Object obj = new Integer(9)。这里有一个自动装箱动作,jdk1.5后的新特性。
  System.out.println(obj);
}
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2