Rumah  >  Soal Jawab  >  teks badan

java类加载机制-类定义中new如何理解

高洛峰高洛峰2711 hari yang lalu824

membalas semua(5)saya akan balas

  • 黄舟

    黄舟2017-04-18 10:48:41

    Apabila menjalankan program java, setiap kelas dimuatkan sekali sahaja. Ia adalah mustahil untuk memuat semula. Jadi tidak ada rekursi seperti yang disebutkan dalam soalan.

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 10:48:41

    Adalah disyorkan untuk memahami dahulu memori dalam mesin maya JVM

    Semasa proses instantiasi objek AVA, komponen utama yang digunakan termasuk timbunan mesin maya, timbunan JAVA dan kawasan kaedah.
    Selepas fail JAVA disusun, ia akan ditambahkan terlebih dahulu ke kawasan kaedah JVM Bahagian yang sangat penting dalam kawasan kaedah JVM ialah kumpulan pemalar masa jalan - digunakan untuk menyimpan versi, medan, kaedah, antara muka dan penerangan lain bagi. fail kelas Maklumat dan pemalar masa kompilasi dan pembolehubah statik.
    Tempat di mana objek JAVA sebenarnya dijadikan instantiated adalah dalam timbunan JAVA dan timbunan mesin maya, Objek A = New Object(); dalam ingatan sebenar, A sebenarnya bersamaan dengan nama yang kami berikan kepada pelaksanaan kelas Objek. Dalam pengaturcaraan berorientasikan objek, sama seperti anjing tergolong dalam kategori haiwan, tetapi kami akan memberi nama untuk membezakan anjing tertentu. Objek digunakan untuk menandakan bahawa A tergolong dalam kelas ini, dan A merujuk kepada pelaksanaan khusus Objek, dan Objek Baru adalah bersamaan dengan mencipta pelaksanaan khusus kelas ini. Oleh itu, kita boleh memahami bahawa objek mesti terlebih dahulu dapat menentukan kelas yang dimilikinya, dan kedua, ia juga mesti dapat menentukan pelaksanaan khusus yang dirujuknya.
    Terdapat dua kaedah pelaksanaan yang sepadan:

    1. Mengendalikan objek akses

    2. >HotSpot menggunakan kaedah pelaksanaan kedua.
    Pemuatan kelas merangkumi 3 langkah: memuatkan, memaut dan memulakan
    MemuatkanSeperti yang ditunjukkan dalam rajah di atas, tidak sukar bagi kita untuk memahami bahawa apabila objek disegerakan Pada masa ini, JVM akan bahagikan kawasan memori dalam timbunan JAVA mengikut jenis objek yang diperlukan, dan jana penuding kepada jenis data objek kawasan kaedah untuk mengenal pasti objek. Pautan Penunjuk dalam jadual pembolehubah tempatan (juga dipanggil jadual pembolehubah tempatan) dalam tindanan mesin maya menghala ke kawasan memori yang dibahagikan dalam timbunan JAVA. Mesin maya JAVA menggunakan pautan dinamik Hanya fail kelas yang disusun tidak menyimpan perwakilan kaedah akhir dalam ingatan.
    Inisialisasi
    Initialization sebenarnya ialah panggilan kepada kaedah permulaan dalam fail kelas, dan terasnya ialah POP/PUSH bagi bingkai tindanan dalam tindanan mesin maya. Ia bersamaan dengan melakukan proses pemuatan yang sama pada objek dalam kelas.
    Pada ketika ini, proses instantiasi lengkap sesuatu objek telah diperkenalkan.

    Jujukan permulaan dalaman kelas ialah domain statik->domain bukan statik->pembina

    Disyorkan untuk membaca:
    [JAVA Notes-Tao] Penjelasan terperinci tentang kitaran hayat objek
    [JAVA Notes-Tao] Pemahaman permulaan kelas

    balas
    0
  • PHPz

    PHPz2017-04-18 10:48:41

    Adakah anda mengelirukan pemuatan kelas dan permulaan objek?

    balas
    0
  • 怪我咯

    怪我咯2017-04-18 10:48:41

    Adakah poster itu berfikir terlalu mendalam? Takrifan segera dan pengisytiharan ialah 2 konsep dan peringkat.
    A2 mempunyai beberapa pembolehubah ahli statik yang dijadikan instantiated apabila diisytiharkan, dan proses instantiasi kelas diselesaikan melalui pembina.
    Nampaknya ada sarang di sini, tetapi tidak. Pengkompil boleh mengisytiharkan lompatan arahan semasa menyusun pernyataan instantiasi, dan alamat lompatan ditentukan semasa penyusunan sekunder.
    Dengan cara ini, semasa fasa pengisytiharan kelas, apabila a, b, c, d dibuat seketika, pengkompil akan melompat ke blok pembina A2(int i).
    Lompat ke pembina A() semasa fasa instantiasi kelas.
    Secara terang-terangan, ia hanya memanggil kaedah pembinaan yang sepadan pada peringkat yang berbeza Tiada sarang gelung seperti yang difikirkan oleh penulis.

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:48:41

    Apabila memuatkan kelas, susunan pemuatan untuk pembolehubah statik dan pembina adalah berbeza. Kaedah konstruktor juga merupakan kaedah statik.
    Saya tidak tahu banyak tentangnya, jadi saya akan duduk dahulu

    balas
    0
  • Batalbalas