构造方法不能由编程人员调用,而要系统调用? 如题,我看到这句话,表示不能理解我们新建一个对象是不是调用构造方法呢?Test t=new Test();那为什么说构造方法不能由编程人员调用,而要系统调用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 new Test()并不是单单执行了一个构造方法它包括:实例变量内存分配构造方法调用如果类没加载,还存在类装载、连接、初始化--------------你无法这样调用:Test t = new Test()t.Test();//error 调用构造方法 再论构造函数有没有返回值?? 在这个帖子里有人归纳的构造方法的特点http://topic.csdn.net/u/20080901/22/f44c4818-9a39-46c2-8a24-0e6dce9dc800.html 好像有点懂了,所以new这个操作,并不是调用构造方法的意思。new这个语法是告诉编译器我需要一个对象,具体怎么做则由jvm负责,我这么理解对不对? 再论构造函数有没有返回值?? 在这个帖子里有人归纳的构造方法的特点http://topic.csdn.net/u/20080901/22/f44c4818-9a39-46c2-8a24-0e6dce9dc800.html构造方法你可以说有返回值,也可以说没有,定义构造方法的时候是 public 类名(){} 这样看是没有返回值的,但是从根本上来说,有返回值,返回的是对象本身。 这个问题那篇帖子已经讨论炸了,不过书上在介绍构造方法时都说是没有返回值的。这就好像那个问题一样:java中有没有指针呵呵 首先说明下JAVA中处处都有指针。只是我们不接触罢了。说没有指针都是初学者。还有就是程序员不能new那个类是因为有的类是java虚拟机启动时候由java虚拟机来创建的比如:public final class Class<T> implements java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.reflect.Type, java.lang.reflect.AnnotatedElement { private static final int ANNOTATION= 0x00002000; private static final int ENUM = 0x00004000; private static final int SYNTHETIC = 0x00001000; private static native void registerNatives(); static { registerNatives(); } /* * Constructor. Only the Java Virtual Machine creates Class * objects. */ private Class() {}这个Class是java虚拟机在加载一个类的时候在堆中创建的,这时候JVM会创建一个.class对应的Class对象里面封装了该类在方法区的数据结构。并且给程序员提供访问方法区数据结构的接口。楼主可以看看源代码。还有下面就是解释下楼主以及那个帖子的:String str = new String("test");这时候是把该String对象的内存地址用String类型来接受不是返回值。 各位大神,如何用TableModel实例化JTable? 如何实现java类方法的动态调用? 请问:如何实现窗体的放大缩小,使用画布的重画功能吗? 初次运行java小程序,编译通过,但是运行时出现NoSuchMethodError错误,哪位老兄帮忙给调试一下? 关于java环境配置的简单问题! 我第一个程序又出问题 java初学者的问题 请教一个Swing开发的技术问题. 急急!!!!!Java 3d中如何实现类似上楼梯方式浏览的效果? 如果想对一个文本文件一行行的读,然后在对每行数据处理 用JAVA的IO流里的哪个类效率最高啊 递归? java代码实现1,2,5分拼凑一元的算法
并不是单单执行了一个构造方法它包括:
实例变量内存分配
构造方法调用
如果类没加载,还存在类装载、连接、初始化--------------
你无法这样调用:
Test t = new Test()
t.Test();//error 调用构造方法
构造方法你可以说有返回值,也可以说没有,定义构造方法的时候是 public 类名(){} 这样看是没有返回值的,但是从根本上来说,有返回值,返回的是对象本身。
呵呵
首先说明下JAVA中处处都有指针。只是我们不接触罢了。
说没有指针都是初学者。还有就是程序员不能new那个类是因为有的类是java虚拟机启动时候由java虚拟机来创建的
比如:public final
class Class<T> implements java.io.Serializable,
java.lang.reflect.GenericDeclaration,
java.lang.reflect.Type,
java.lang.reflect.AnnotatedElement {
private static final int ANNOTATION= 0x00002000;
private static final int ENUM = 0x00004000;
private static final int SYNTHETIC = 0x00001000; private static native void registerNatives();
static {
registerNatives();
} /*
* Constructor. Only the Java Virtual Machine creates Class
* objects.
*/
private Class() {}这个Class是java虚拟机在加载一个类的时候在堆中创建的,这时候JVM会创建一个.class对应的Class对象
里面封装了该类在方法区的数据结构。并且给程序员提供访问方法区数据结构的接口。楼主可以看看源代码。还有下面就是解释下楼主以及那个帖子的:
String str = new String("test");
这时候是把该String对象的内存地址用String类型来接受
不是返回值。