请问getClass()和getName()有什么不同?

kstg4703904 2016-10-10 03:48:29

class Art {
Art() {
System.out.println(getClass());
System.out.println(getClass().getName());
}
}

public class A {
public static void main(String[] args) {
Art x = new Art();
}

输出的是:

class Art
Art



用getClass()已经能获得类名了,为什么还要在getClass()后面加getName()?








getClass()
...全文
203 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
当作看不见 2016-10-10
  • 打赏
  • 举报
回复
引用 8 楼 kstg4703904 的回复:
[quote=引用 7 楼 qq_29594393 的回复:] 错误的理解为控制台的输出的值是一样的,控制台输出任何对象,非基础类型都会转化为字符串再输出,所以看上去好像可以取代,实际上是不相同的
这么说实际上getClass()得到的是一个引用?[/quote] getClass()是对象,对.后面的 getClass().getName(),是一个字符串
kstg4703904 2016-10-10
  • 打赏
  • 举报
回复
引用 7 楼 qq_29594393 的回复:
错误的理解为控制台的输出的值是一样的,控制台输出任何对象,非基础类型都会转化为字符串再输出,所以看上去好像可以取代,实际上是不相同的
这么说实际上getClass()得到的是一个引用?
当作看不见 2016-10-10
  • 打赏
  • 举报
回复
错误的理解为控制台的输出的值是一样的,控制台输出任何对象,非基础类型都会转化为字符串再输出,所以看上去好像可以取代,实际上是不相同的
___d 2016-10-10
  • 打赏
  • 举报
回复
jdk源码 在jdk安装目录下的src.zip
kstg4703904 2016-10-10
  • 打赏
  • 举报
回复
引用 4 楼 u013185616 的回复:
[quote=引用 3 楼 kstg4703904 的回复:] 这么说在getClass()后面加getName()的目的就是让Class对象变成一个字符串?还有Class内部的定义在哪能看?
getClass().getName() 是为了得到类名,crl+鼠标左键点击方法就可以进去,这些是JDK的东西,源码应该都有![/quote]
引用 4 楼 u013185616 的回复:
[quote=引用 3 楼 kstg4703904 的回复:] 这么说在getClass()后面加getName()的目的就是让Class对象变成一个字符串?还有Class内部的定义在哪能看?
getClass().getName() 是为了得到类名,crl+鼠标左键点击方法就可以进去,这些是JDK的东西,源码应该都有![/quote] 我想看的是Class类的所有代码,这个能在JDK中看到吗?
I,Frankenstein 2016-10-10
  • 打赏
  • 举报
回复
引用 3 楼 kstg4703904 的回复:
这么说在getClass()后面加getName()的目的就是让Class对象变成一个字符串?还有Class内部的定义在哪能看?
getClass().getName() 是为了得到类名,crl+鼠标左键点击方法就可以进去,这些是JDK的东西,源码应该都有!
kstg4703904 2016-10-10
  • 打赏
  • 举报
回复
引用 2 楼 u013185616 的回复:
看下Object中对这getCLass()的定义
public final native Class<?> getClass();
注意看返回值,返回的是一个Class,这里得到的是一个对象,不是String 再看看Class中对getName()的定义
 public String getName() {
	if (name == null)
	    name = getName0();
	return name;
    }
注意看返回值,返回的是String 一样么???
这么说在getClass()后面加getName()的目的就是让Class对象变成一个字符串?还有Class内部的定义在哪能看?
I,Frankenstein 2016-10-10
  • 打赏
  • 举报
回复
看下Object中对这getCLass()的定义
public final native Class<?> getClass();
注意看返回值,返回的是一个Class,这里得到的是一个对象,不是String 再看看Class中对getName()的定义
 public String getName() {
	if (name == null)
	    name = getName0();
	return name;
    }
注意看返回值,返回的是String 一样么???
qq_35368995 2016-10-10
  • 打赏
  • 举报
回复
返回值不一样的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧