Thursday, March 27, 2014

Final Array vs Final Variable in Java

Final in java means you can not change it after been initialized, but ever noticed , you can change values of a final array but not values of a final variable ?

public class UF {
private final int[] nodes;
private final int something=0;
public UF(int n) {
nodes = new int[n];  // perfectly fine
                nodes[0]=-1;     // perfectly fine
                nodes[0]=13;     // perfectly fine
                something=-1;  // ERRR IT IS NOT OKAY
}


Why java is okay with final int[] array to be changed but not final int ? the final for Array means , you can not change the reference of the array to another array, but the content of array could be anything, since arrays are passed by reference not by value.but for variable, it is passed by value and u can not change the value .

For example the following example for array will make the compiler yell at us :
public class UF {
private final int[] nodes;
public UF(int n) {
nodes = new int[n];
int[] test = new int [n];
nodes=test; // ERRRR compiler not happy !!! you are trying to change a final reference to another reference
}
but How to make the array values final ? the answer is using umodifiable collections of java
for example :
int[] arr= new arr[5];
List items = Collections.unmodifiableList(Arrays.asList(arr));
Post a Comment

Related

Labels

computer (48) ubuntu (46) linux (28) tutorial (20) opinion (17) programming (14) software overview (13) terminal (12) troubleshooting (8) life (7) literature (7) poem (7) human languages (6) vim (6) bash (5) google (5) python (5) android (4) cars (4) phpBB (4) suggestion (4) tips (4) 12.04 (3) Chef (3) extension and addons (3) firefox (3) java (3) personal (3) russian (3) shell (3) windows (3) 64bit (2) Calligraphy (2) Chicago (2) Vagrant (2) apple (2) backup (2) bug (2) code (2) eclipse (2) funny (2) google chrome (2) idea (2) monitor (2) php (2) phpBB3 (2) shorter prompt (2) ssh (2) virtualbox (2) $_SERVER['REQUEST_URI'] (1) 2.7 (1) ALT+Backspace (1) AVR (1) Alt-Printscreen-K (1) AutoRotate (1) CTRL+ALT+DELETE (1) DRM (1) Debugging (1) Gimp (1) Gimp 2.8 (1) Microcontroler (1) Restart X (1) UML (1) Ventra (1) adsense (1) amazon (1) audio (1) aws (1) background process (1) battery (1) bing (1) blank (1) blogging (1) bmw (1) boot (1) business review (1) car (1) cd (1) chrome (1) comcast (1) computer kubuntu (1) conference (1) cookie (1) cron (1) database (1) date (1) display (1) domain name (1) download manager (1) dual boot (1) dual monitor (1) extensions (1) feature request (1) file (1) folder (1) freeze (1) gimp single window (1) git (1) gnome 3.10 (1) google docs (1) google plust (1) google+ (1) grep (1) icon (1) install (1) iterator (1) links (1) linu (1) linux links (1) list (1) mac os (1) media server (1) microsoft (1) moonlight (1) music (1) mysql (1) name (1) nautilus (1) netflix (1) notepad++ (1) parking (1) permission (1) philosophy (1) photo (1) prompt (1) protest (1) ps3mediaserver (1) putty (1) read from file (1) realtek (1) resolution (1) roku (1) samsung (1) scala (1) screenshot (1) security (1) selinux (1) server (1) skype (1) space (1) spam (1) spambot (1) sql (1) suspension (1) system monitor (1) tar (1) task manager (1) template design (1) th23 domain (1) thinking (1) ubuntu 13.10 (1) unity (1) vimrc (1) virtual machine (1) weblogic (1) wget (1) with space (1) xorg (1) xrand (1)