Rumah > Java > javaTutorial > teks badan

Bagaimana untuk menetapkan nilai antara tatasusunan di Jawa

王林
Lepaskan: 2023-05-02 12:46:06
ke hadapan
1165 orang telah melayarinya

Nama tatasusunan ialah alamat elemen *** yang ditunjuk oleh penuding kepala tatasusunan Jika anda boleh memahaminya dengan cara ini, maka fikirkannya dengan peha anda dan anda akan tahu bahawa a=b tidak dapat menyedarinya penetapan tatasusunan secara amnya, dalam C dan C++ kita A gelung digunakan untuk menetapkan nilai tunggal, serupa dengan ini:

  1. untuk( int i=0;i<10;i++)

  2. a[i]=b[i];

cara untuk mencapainya, setelah mempelajari C dan C++ sekian lama, saya menggunakannya lebih banyak, dan saya tidak mendapatinya menyusahkan. Tetapi dalam JAVA, ia tidak sama dengan C dan C++ sangat pintar Ia boleh menggunakan a=b untuk menetapkan b kepada a. Apabila menggunakan a=b dalam JAVA kandungan adalah output dalam bentuk tatasusunan, ia betul-betul sama dengan kandungan b, yang menunjukkan bahawa kaedah ini boleh dilaksanakan Ini adalah bagaimana ia digunakan dalam program saya, tetapi hasil pepijat. Pada mulanya saya mendapati bahawa tidak kira sama ada saya menggunakan a=b atau a=a.clone(); hasilnya adalah sama, yang agak mengelirukan, tetapi sekarang saya faham sepenuhnya. Untuk menggambarkan masalah ini, mari kita tunjukkan dengan atur cara:

private int[] subResources(int[] aa, int[] bb)  {     // 做减法     int []a=aa;     int []b=bb;     for (int i = 0; i < a.length; i++)      a[i] = a[i] - b[i];     return a;  }
Salin selepas log masuk

Ini digunakan untuk melaksanakan fungsi yang ingin menolak dua tatasusunan Dalam atur cara memanggil, gunakan

int []allo=pcb0.getAllocation().clone(); //方式1   //int []allo=pcb0.getAllocation()//方式2     int[] allocation = this.addResources(allo, request);
Salin selepas log masuk

di atas dua cara. Hasil berbeza yang dihasilkan dengan menghantar parameter ialah apabila anda mengubah suai nilai parameter yang diluluskan dalam fungsi addResources, kaedah 1 tidak boleh menukar data asal, tetapi kaedah 2 boleh menukar data asal. Apabila menetapkan nilai dalam kaedah 1, ia mula-mula mencipta salinan tatasusunan, dan kemudian memberikan salinan itu kepada tatasusunan sasaran Dengan cara ini, alamat tatasusunan salinan pastinya tidak sama dengan alamat tatasusunan asal dengan cara ini, tidak kira bagaimana anda mengubahnya, kaedah 1 tidak akan mengubah data asal, tetapi kaedah 2 adalah berbeza secara langsung memperuntukkan alamat data kepada data sasaran, supaya nama tatasusunan yang berbeza bagi dua tatasusunan. sebenarnya merujuk kepada alamat yang sama, jadi sudah tentu nilai asal boleh diubah.

Dianalisis dengan cara ini, ia sedikit seperti nilai penunjuk dan rujukan dalam parameter fungsi yang dihantar dalam C++ Memandangkan penunjuk ditinggalkan dalam Java, semua hubungan penunjuk menggunakan jenis rujukan, yang tahan lama dalam C++ mudah untuk melakukan kesilapan seperti itu. Ia bukan seperti menghantar nilai addResources (int *a,int *b) atau addResources (int a[],int b[]) seperti dalam C++. Ini akan menjadi satu kelemahan Nampaknya ini adalah satu-satunya masa di tempat ini dalam hidup saya. Sekarang saya faham mengapa soalan asas di pameran kerja kelihatan mudah, tetapi tidak semua orang dapat menjawabnya dengan baik .

Atas ialah kandungan terperinci Bagaimana untuk menetapkan nilai antara tatasusunan di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!