Мағынаны өзгертетін және ештеңені қайтармайтын әдістер

Айнымалы мәннің мазмұнын өзгертетін әдістердің термині қандай болса да, ештеңені қайтармай-ақ, қандай термин.

Мысалы, java.util.Arrays сыныбынан алынған sort статической әдісі массивтерді ішіндегі сұрыптайды және сұрыпталған жиынды бастапқы массивінің айнымалы мәніне орнатады (сенімді емес).

import static java.util.Arrays.sort;
public class bs {
public static void main(String [] args){

    int[] arr = {3,2,4,8,2,5,33,12,19,15,20};
    sort(arr);//doing this stuff <<<< and not int [] arr1 = sort(arr); 
  }
 }

1 - Is there a specific term for that kind of method,

және;

2 - How does this work internally? Does it delete the original variable and assign the sorted values to a fresh one with that same name or??

Рахмет!

6

4 жауаптар

Әдетте, бұл мутацик деп аталадым немесе бұл туралы жанама әсерлері туралы әңгімелеп беремін. (Әдетте мутация - бұл объектінің күйін өзгерткен нысанның деп аталатын әдіс, бұл жағдайда біз сәл аргументі/em> басқа.)

Бұл қалай жұмыс істейтініне байланысты айнымалы , сілтемесі және нысаны арасындағы айырмашылықты түсіну маңызды.

Бұл әдіс келесідей:

sort(arr);

arr айнымалы мәнінің sort әдісіндегі параметрдің мәні ретінде көшіреді. Бұл мән объектке сілтемесі (бұл жағдайда массив). Әдіс ешқашан arr мәнін өзгертпейді - бұл сол массивке сілтеме болып табылады. Алайда, әдіс массивтің мазмұны мәнін өзгертеді (яғни, қандай элементтердің мәндері бар).

8
қосылды

Бұл үшін атау бар: анти-паттерн;)

Шынымды айтсам, оларды жаман тәжірибе ретінде қолданамын деп ойлаймын: мүмкіндігінше, әдістер әлемнен тыс әлемді өзгертпеуі керек, нәтижені соңында қайтаратын қарқынды массивге қою әлдеқайда жақсы (және одан да көп Объективті) Сіздің өңдеу. Егер сіз мұны қаламасаңыз және басқа элементтерді өзгертетін әдістерді қолдансаңыз, сіз барлық қиындықтарға (инкапсуляция бұзылуына, келіспеушілік мәселелеріне және т.б.) айналып, әлдеқайда көп аулақ бола аласыз бұл оңай емес.

Ерекше жағдай: қондырушылар, әрине.

Бұл қалай жұмыс істейтініне қатысты, Джон Ските оның жауабында айтты.

2
қосылды

Мағынаны қайтаратын әдістер кейде «функциялар» деп аталады және ешбір «рәсімдер» қайтармайды.

1
қосылды

Header әдісі мен әдістерінің тақырыбы ( Public static void main string немесе ұқсас нәрсе) болып табылады. Негізгі әдіс - барлық жеке Java қосымшалары үшін әдеттегі бастапқы нүкте. «Статикалық» сөзі модификатор болып табылады. «Бос» дегеніміз, бұл әдіс ол шақырылғанда мәнді қайтармайды.

0
қосылды