解决方案 »

  1.   

    分配内存、创建对象是构造方法做的么??  jvm调用的指令多了去, 那我也觉得这是new起的作用, 别误导楼主了
      

  2.   

    从实质上说,构造方法不是初始化,而是实例化对象,即分配内存。
    个人学java不久,只理解到这,不知对否。
      

  3.   

    是吗,我才学到jdbc,加个好友呗
      

  4.   

    构造方法结合new()方法即可对对象赋值和分配内存,并且是先用new()方法对对象进行内存分配,再对对象赋值。这写和C++都差不多的,,
      

  5.   

    分配内存、创建对象是构造方法做的么??  jvm调用的指令多了去, 那我也觉得这是new起的作用, 别误导楼主了
    大哥,你酱油别打的这么深好么,构造更准确的是构造器,构造器主要就是实例化对象用的撒,比如反射,内省。进行属性值初始化也可以在定义的时候进行啊,如果定义就进行初始化那构造器岂不是没有处了???
      

  6.   

    分配内存、创建对象是构造方法做的么??  jvm调用的指令多了去, 那我也觉得这是new起的作用, 别误导楼主了
    大哥,你酱油别打的这么深好么,构造更准确的是构造器,构造器主要就是实例化对象用的撒,比如反射,内省。进行属性值初始化也可以在定义的时候进行啊,如果定义就进行初始化那构造器岂不是没有处了???
    好复杂,菜鸟不懂
      

  7.   

    分配内存、创建对象是构造方法做的么??  jvm调用的指令多了去, 那我也觉得这是new起的作用, 别误导楼主了
    亲,构造方法也算是另类的的static,你调用math的static方法没有new吧!就这样吧
      

  8.   

    构造方法里对参数的设置,一般用来设置某对象的初始值,即在new的时候进行的操作。在.java文件中没看到构造函数并不表示该类没有,只是编译器会自动在编译的时候给你添加上去。
    构造函数和静态方法两个根本就是不同概念的东西,不能做类比的 
      

  9.   

    分配内存、创建对象是构造方法做的么??  jvm调用的指令多了去, 那我也觉得这是new起的作用, 别误导楼主了
    亲,构造方法也算是另类的的static,你调用math的static方法没有new吧!就这样吧
    我是指,对于new Object()而言,这个构造方法并没有为这个对象的初始化做任何事情, 因为没有为属性赋值, 我这里所说的初始化不同于对象在内存中的初始化。 而且就算是jvm这一大堆的创建对象过程也是因为碰到了new这个关键字才触发的,只不过new + 构造方法 创建对象是Java的语法而已。你这里所谓"构造方法也算是另类的的static"是一些类加载的说法, 任何对于一个类的静态引用都会触发类加载, jvm规范明确规定,遇到new、gestatic、putstatic、invokestatic字节码指令时,需先触发类初始化。 new是唯一一个非静态调用。 就像19楼说的,构造函数和静态方法两个根本就是不同概念的东西,不能做类比的。
      

  10.   


    楼主这样的理解也没有什么不可以。其实我觉得很多书籍翻译成构造方法有不妥的地方,翻译为构造器更好一些。因为这不能理解为一个方法,它不同于一个对象的方法。构造方法到底是什么,其实这个问题没有必要去钻牛角尖深究,重要的是知道怎么用就可以了。
    其实java的很多东西我们都无法非常清晰的解释这到底是什么。因为java本身只是一个规范,具体的实现依赖于虚拟机。不同的虚拟机有不同的实现方式。
      

  11.   

    可以用来初始化参数,不过大多数时候可以用set/get来设置参数,这个是用情况看个人了..示例:
    package Other;/**
     * Created by puruidong on 2014/8/10.
     */
    public class TestDemo {    //使用构造方法初始化.
        private String name;
        private int age;    //使用set/get设置值.
        private String uname;
        private String sname;    /*uname的set/get*/
        public String getUname() {
            return uname;
        }    public void setUname(String uname) {
            this.uname = uname;
        }    /*end.*/    /*sname的set/get*/
        public String getSname() {
            return sname;
        }    public void setSname(String sname) {
            this.sname = sname;
        }
        /*end*/    /*name是private修饰的,因此需要提供一个get方法让外面可以访问.*/
        public String getName() {
            return name;
        }
        /*end*/    /*获取age.*/
        public int getAge() {
            return age;
        }
        /*end*/    public TestDemo(){}//空构造方法    public TestDemo(String name,int age){
            this.name=name;
            this.age=age
            ;}
        public static void main(String[] args) {
                TestDemo t = new TestDemo("abc",10);
               //不推荐这样的获取方式,虽然可以目前可以正常获取,但是假如你在另一个类获取将会报错 System.out.println("使用构造方法初始化:姓名\t:"+t.name+"\t年龄\t:"+t.age);
            System.out.println("使用构造方法初始化:姓名\t:"+t.getName()+"\t年龄\t:"+t.getAge());
                t.setSname("不说");
                t.setUname("测试一下真实姓名");
                System.out.println("使用set/get设置值:真实姓名\t:"+t.getUname()+"\t姓名\t:"+t.getSname());
        }
    }
      

  12.   

    大部分是用来创建对象的吧。设置属性值用“setXXX”好像比较多。
      

  13.   

    java的构造函数其实很简单。
    一个类 被实例化 也就是被new的时候 最先执行的是 构造函数,如果你有留心。你会发现很多类里面根本没有写构造函数。
    在java类中,如果不显示声明构造函数,JVM 会给该类一个默认的构造函数。一个类 可以有多个构造函数。构造函数的主要作用 一是用来实例化该类。二是 让该类实例化的时候执行哪些方法,初始化哪些属性。当一个类声明了构造函数以后,JVM 是不会再给该类分配默认的构造函数。