๐Ÿ““ STUDY/JAVA

JAVA Basics

JuneBee 2022. 5. 12. 21:29
728x90
๋ฐ˜์‘ํ˜•

<1> ์ž๋ฐ”์˜ ํŠน์ง•

1. WORA (Wirte Once and Read Anywhere)

์ž๋ฐ”๋Š” ์šด์˜ ์ฒด์ œ์— ๋…๋ฆฝ์ ์ธ ํŠน์ง•์„ ์ง€๋‹Œ๋‹ค → ์–ด๋А ์šด์˜์ฒด์ œ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ (windows, Linux, Mac ...)

 

2. Garbage Collections

๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ์–ธ์ œ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€? ๋ฉฐ๋А๋ฆฌ๋„ ๋ชจ๋ฅธ๋‹ค. ์ž๊ธฐ๊ฐ€ ํ•œ๊ฐ€ํ•  ๋•Œ ํ•ด์คŒ

 

3. ๊ฐ์ฒด ์ง€ํ–ฅ์–ธ์–ด
์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ๋งด๋ฒ„ ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค
. : ~ has


4. ํด๋ž˜์Šค๋Š” ์ž๋ฐ”์˜ ์ตœ์†Œ ๊ตฌ์„ฑ ๋‹จ์œ„์ด๋‹ค

<2> Variables

๐Ÿ’ก Variable (๋ณ€์ˆ˜) : ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค
   ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๊ฐ’ (value) ๋ฅผ ํ• ๋‹น(assign) ํ•œ ํ›„์— ์‚ฌ์šฉํ•œ๋‹ค
  1. ํƒ€์ž…
    ๋ณ€์ˆ˜์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜
ํƒ€์ž… ํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ •์˜ bit
Primitive Types(๊ธฐ๋ณธํ˜•) ๋…ผ๋ฆฌํ˜• boolean true/false -
์ •์ˆ˜ํ˜• byte ๋ถ€ํ˜ธ O 8
short ๋ถ€ํ˜ธ X 16
int ์ •์ˆ˜ default 32
์‹ค์ˆ˜ํ˜• long ๋ถ€ํ˜ธ O 64
float ๋ถ€๋™์†Œ์ˆ˜์  ์‹ค์ˆ˜ 32
double ์‹ค์ˆ˜ default 64
๋ฌธ์žํ˜• char unicode 16
Reference Types(์ฐธ์กฐํ˜•) - - - -

(1) ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜ (Primitive Type)

๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ํฌ๊ธฐ์˜ memory size ๊ฐ€ ์žˆ๊ณ  ๋ณ€์ˆ˜ ์ž์ฒด์— ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค

(2) ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜ (Reference Type)

๋ฏธ๋ฆฌ ์ •ํ•ด์งˆ ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋กœ ์‹ค์ œ๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ๊ฐ’๋งŒ์„ ์ €์žฅํ•œ๋‹ค → "HEAP" ์˜์—ญ์— ๊ณต๊ฐ„์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค

<3> Byte

Byte ํ‘œ๊ธฐ๋ฒ•: ์ฒซ๋ฒˆ์งธ ๋น„ํŠธ๋Š” sign์„ ๋‚˜ํƒ€๋‚ธ๋‹ค (0-positive, 1 - negative)
00001001 : 1+ 2^3 = 9
10001001 : 1 + 2^3 + (-1)*2^8 = -119

<4> Type Casting

๐Ÿ’ก ํ˜•๋ณ€ํ™˜์€ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ–‰์œ„์ด๋‹ค
    ํ˜•๋ณ€ํ™˜์—๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค
  1. ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜ (Demotion)
    (1) Big → Small
    (2) ๊ฐ’ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— JVM์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค
    (3) ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜•๋ณ€ํ™˜์„ ํ•œ๋‹ค
int i =30000; //32 bit
byte b = (byte) i ;// 32 bit -> 8 bit. ์ž‘์€ ์ƒ์ž์•ˆ์— ์•„ํŒŒํŠธ ํ•œ์ฑ„ ๊ตฌ๊ฒจ๋„ฃ๋Š”์ค‘
  1. ๋ฌต์‹œ์  ํ˜•๋ณ€ํ™˜ (Promottion)
    (1) Small → Big
    (2) ์ž‘์€ ํƒ€์ž…์„ ํฐ ํƒ€์ž…์— ๋‹ด๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’ ์†์‹ค์ด ๋”ฐ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, ๋ณ„๋„๋กœ ํƒ€์ž… ์บ์ŠคํŒ…๋ฌธ์„ ์“ฐ์ง€ ์•Š์•„๋„ JVM ์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค
byte b =10;
int i = b; //ํฐ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ์ž‘์€ ์ƒ์ž๋ฅผ ๋„ฃ๋Š”์ค‘ -> ๊ฐ€๋Šฅ
int i2 =(int) b; //(int) ๋ฅผ ์ƒ๋žตํ•ด๋„ JVM ์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค

<5> ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž๋Š” ๋ณดํ†ต ์šฐ์ธก ๋ฐฉํ–ฅ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค. ์—ฐ์‚ฐ์ž์˜ ์ˆœ์„œ๋ฅผ ์™ธ์›Œ๋†“์œผ๋ฉด ์ข‹์ง€๋งŒ ๊ตฌ์ง€ ์™ธ์šฐ์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ์œผ๋ฉฐ, ๋ณธ์ธ์ด ์™ธ์šฐ๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜์—ฌ๋„ ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด๋‹ค.
์—ฐ์‚ฐ์ž๋Š” ๋ณดํ†ต ์šฐ์ธก ๋ฐฉํ–ฅ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋งŒ์ด ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.

  • ๋Œ€์ž… ์—ฐ์‚ฐ์ž: = , += , -=, %= ๋“ฑ๋“ฑ
  • ๋‹จํ•ญ ์—ฐ์‚ฐ์ž: ++, —, !, ~ ,+/-(๋ถ€์ •, bit ๋ณ€ํ™˜> ๋ถ€ํ˜ธ )

๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” *2 ๋‚˜ /2 ์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

int a =10;     //a : 1 0 1 0  -> a<<1: 1 0 1 0 '0'|| a: 1 0 1 0- >  a>>1: '0' 0 1 0 1
int b = a<< 1; //  *2 ์™€ ๋™์ผ
int d = a>>1;  // ./2 ์™€ ๋™์ผ

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž 

์—ฐ์‚ฐ์ž ๊ธฐ๋Šฅ ์—ฐ์‚ฐ ๋ฐฉํ–ฅ
& ๋‘๊ฐœ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ true ์ธ ๊ฒฝ์šฐ : true ->
| ๋‘๊ฐœ์˜ ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด true ์ธ ๊ฒฝ์šฐ : true ->
! NOT ->
^ ๋‘๊ฐœ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ๊ฒฝ์šฐ์—๋งŒ true ->

 

Short Circuit ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž ๊ธฐ๋Šฅ ์—ฐ์‚ฐ ๋ฐฉํ–ฅ
&& & ์™€ ๋™์ผํ•˜๋‚˜ ์•ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false์ด๋ฉด ๋’ค ์—ฐ์‚ฐ์ž๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค ->
|| |์™€ ๋™์ผํ•˜๋‚˜ ์•ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true์ด๋ฉด ๋’ค ์—ฐ์‚ฐ์ž๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ->

 

์œ„์˜ ๋‘ ์—ฐ์‚ฐ์ž๋ฅผ ์ž์ฃผ ํ˜ผ๋™ํ–ˆ์—ˆ๋Š”๋ฐ,
&& ์„ ์“ฐ๋ฉด ์•ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false ์ผ๋•Œ ๋’ค์˜ ์กฐ๊ฑด์„ ๋ณด์ง€ ์•Š๊ณ  false ๋ฅผ ์‚ฐ์ถœํ•ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์›์น˜ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ฉด์„œ ์–ด๋””๊ฐ€ ํ‹€๋ ธ๋Š”์ง€ ํ—ค๋งฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— (์ž๊ธฐ์†Œ๊ฐœ) ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
Example:

int num1 =9, num2 =2 , num3 = 0;
/* num1 == num2 ๋Š” false ์ด๊ธฐ ๋•Œ๋ฌธ์—, 
num1 / num3 ์€ <int/0>์˜ ํ˜•ํƒœ๋ฅผ ๋„์–ด์„œ exception ์ด ๋ฐœ์ƒํ•ด์•ผํ•˜์ง€๋งŒ "False" ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค*/
System.out.print((num1==num2) && (num1/num3) >0);
System.out.print((num1==num2) & (num1/num3) >0); //error -> ์–‘์ชฝ ๋‹ค ๋Œ๋ฆฐ๋‹ค

<6>์ œ์–ด๋ฌธ

  1. If ๋ฌธ
    (1) ๊ตฌ์กฐ
    if - if , if -else, if- else if- else
int age = 29 ;
if (age >= 31)      {System.out.println("์„ ๋ฐ”..?");
else if (age >= 26) {System.out.println("ํ™”์„");}
else if (age >=24 ) {System.out.println("์„ ๋ฐฐ๋‹˜...");}
else if (age >= 20) {System.out.println("์‚์•ฝ");}
else                {System.out.println("์‘์•  ๋‚˜ ์• ๊ธฐ");}
  (2) ์‚ผํ•ญ ์—ฐ์‚ฐ์ž
        Format  : datatype variableName condition ? value1 : value2 ; 
String collegeYear = age > = 26 ? "ํ™”์„" : "์‘์•  ๋‚˜ ์• ๊ธฐ" ; 
//age ๊ฐ€ 26์ด์ƒ์ด๋ฉด ํ™”์„์ด๊ณ  ์•„๋‹๊ฒฝ์šฐ์—” ์‘์•  ๋‚˜ ์• ๊ธฐ๊ฐ€ collegeYear ์— ํ• ๋‹น๋œ๋‹ค 

System.out.println(" I am... " + collegeYear);
  1. Switch ๋ฌธ
    (1) ๊ตฌ์กฐ
switch (age) {
        case 26 :
                 collegeYear = "ํ™”์„" ;//break ๋ฌธ์ด ์—†์œผ๋ฉด 
        case 30 :
                 collegeYear = "๊ณต๋ฃก" ; 
                 break;
        case 24 :
                 collegeYear = "์„ ๋ฐฐ";
                 break;
        default :
                 collegeYear = "์‘์•  ๋‚˜ ์• ๊ธฐ";
                 break;
}

์œ„ ์Šค์œ„์น˜ ๋ฌธ์—์„œ, case 26 ์ผ๋•Œ, break ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค.
26 ์„ ์ž…๋ ฅํ•˜๋ฉด break ๊ฐ€ ์—†์–ด์„œ "ํ™”์„"์ด ์•„๋‹Œ ๊ทธ ๋‹ค์Œ ์ผ€์ด์Šค์˜ "๊ณต๋ฃก"์„ ์ €์žฅํ•จ

๐Ÿคฆ๐Ÿป‍โ™€๏ธ ์ž๋ฐ”์—์„œ๋Š” case 1: case 2: case 3: ๊ณผ ๊ฐ™์ด ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์„ ๋•Œ ํ•œ๋ฒˆ์— ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค !

ex: case 1: case 2: case 12 : season = "๊ฒจ์šธ"; break;
    case 3: case 4: case 5: season = "๋ด„" break;
    case 6: case 7: case 8: season = "์—ฌ๋ฆ„" break;
    case 9: case 10: case 11: season = "๊ฐ€์„" break;
    default : season = "์‚ด๊ณ ๊ณ„์‹  ์„ธ๊ณ„๊ด€์ด ๋‹ค๋ฅด์‹ ๊ฐ€..?"; break;

<7> ๋ฐ˜๋ณต๋ฌธ

1. For Loop

(1) ๋ฌธ๋ฒ•
(2) for each vs for :
for each loop ๋Š” index ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์ง€๋งŒ ์งง์•„์„œ ํŽธ๋ฆฌํ•จ. ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ ํšจ์œจ์ ์œผ๋กœ ์จ์•ผํ•จ

int[] arr = {1,2,3,4,5};
//๋ฐฉ๋ฒ• 1: for( ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”; ๋ฐ˜๋ณต ์กฐ๊ฑด ; ์ฆ๊ฐ์‹)
for(int i =0 ; i<arr.length; i++) {System.out.print(arr[i] +" "); }

//๋ฐฉ๋ฒ• 2: for each loop
for(int x: arr) {System.out.print(x+" ");}

 

2. While Loop

(1) ๋ฌธ๋ฒ•
(2) while vs do... while:
while loop ๋Š” condition์ด true ์ผ๋•Œ๋งŒ block ์•ˆ์— ์žˆ๋Š” ์กฐ๊ฑด์„ ์‹คํ–‰ํ•˜์ง€๋งŒ, do...while loop ๋Š” condition์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ loop์˜ ๋๊นŒ์ง€ ๋Œ์•„๊ฐ„๋‹ค.

//๋ฐฉ๋ฒ• 1: while loop
int i =0; //declare variables outside of the loop and write inc/dec inside body
while(i<arr.length){System.out.print(arr[i]); i++;}

//๋ฐฉ๋ฒ• 2: Do- While Loop
do { System.out.print(arr[i]+" "); i++; }while(i<arr.length);

 

3.  For Loop vs While Loop

Loop Use When...
for 1. ์ดˆ๊ธฐ๊ฐ’, ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹์˜ ์œ„์น˜๊ฐ€ ๋ช…ํ™•
2. ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฐ˜๋ณต
3. index์˜ ์ฆ๊ฐ ํ™œ์šฉ
while 1. ์˜ˆ์ธก ๊ฐ€๋ณ€์ ์ธ ๋ฐ˜๋ณต
2. index ๋ณด๋‹ค๋Š” break, continue ํ™œ์šฉ

<8> ๋ฐฐ์—ด

๋™์ผํ•œ type์˜ ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ๋ณ€์ˆ˜์˜ ์ˆ˜๋„ ์ฆ๊ฐ€ํ•˜๊ณ  ์ฝ”๋“œ์˜ ๊ธธ์ด๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. ๋˜, ๋ฐ˜๋ณต๋ฌธ ์ ์šฉ์ด ๋ถˆ๊ฐ€ํ•˜๊ณ  ๋ณ€์ˆ˜์˜ ์ˆ˜๊ฐ€ ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋  ๊ฒฝ์šฐ์— ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.

์ด ๋•Œ, ๋ฐฐ์—ด(Array)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋™์ผํ•œ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ๋Œ€์‹ ํ•œ๋‹ค.

  1. ์ •์˜
    (1) ๋™์ผํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ํ•˜๋‚˜์˜ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ
    (2) ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋ฉฐ ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.
  2. ๋ฐฐ์—ด ์„ ์–ธ
    (1) ๋ฐฐ์—ด ์„ ์–ธ:
    new keyword์™€ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค → new data_type[size]
    ex) int [] array = new int[2]; → array ๋Š” ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋‹ค.
    (2) ๋ฐฐ์—ด ์„ ์–ธ์˜ 4๊ฐ€์ง€ ๋ฐฉ์‹
    1. int [] array1 = new int [5] ; array = new int [5];
    2. int [] array 2 = new int [5];
    3. int [] arryay3 = new int[] {1,2,3,4,5};
    4. int [] array4 = {1,2,3,4,5};

๐Ÿคฆ๐Ÿป‍โ™€๏ธ ๋ฐฐ์—ด ์„ ์–ธ ํ›„ ์ƒ์„ฑ ์‹œ ์ดˆ๊ธฐํ™”์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค !

int [] array1 ;
array1 = {1,2,3,4,5}; //Compile Error -> array size is not initialized

//Valid Code
int [] intarr = {1,2,3};
//inValid Code : { } ๋ฅผ ํ†ตํ•œ ๋ฐฐ์—ด ์ƒ์„ฑ์€ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋™์‹œ์— ํ•ด์•ผํ•œ๋‹ค
bool[] bools;
bools = {true, false, false} ; 

int [] array2 ;
array2 = new int [] {1,2,3,4,5}; //์„ ์–ธํ•  ๋•Œ๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ

3. ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์กฐํšŒ ํ•  ๋•Œ์—๋Š” index ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

4. for- each ๋Š” ๋ฐฐ์—ด์—์„œ ์ž์ฃผ ์“ฐ์ธ๋‹ค → Read Only ์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฃผ๋กœ ์“ฐ์ธ๋‹ค

5. Array is Immutable
๋ฐฐ์—ด์€ ์ตœ์ดˆ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ดํ›„ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค
๊ฐœ๋ณ„ ์š”์†Œ๋Š” ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ/overwrite ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‚ญ์ œํ• ์ˆ˜๊ฐ€ ์—†๊ณ , ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜๋„ ์—†๋‹ค → resize: ArraysCopyOf ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•œ๋‹ค

6. 2์ฐจ์› ๋ฐฐ์—ด
๋ฐฐ์—ด ์„ ์–ธ:

  1. int arr1 [ ] [ ] = new int [4][2] ;
  2. int [ ] arr2 [ ] = new int [4][2]; → 2D Array : [ ] ์˜ ์œ„์น˜๋Š” ์ƒ๊ด€ ์—†๋‹ค !
  3. int [ ] [ ] arr3 = new int [4][3];
  4. int [ ] [ ] arr5 = new int [ ] [ ] {{1,2,3,4,5},{2,3,4},{3,4} };
  5. int [ ] [ ] arr6 = {{1,2} , {2,4,5,6,2} , {2,3,4,} };
  6. int [ ] [ ] arr4 = new int [4]{1,2,3,4,5} ; → ๋ถˆ๊ฐ€๋Šฅ !!
int [][] arr2D = new int [4][]; //valid
arr2D[2] = new int [2];         //valid
arr2D[0]= new int[4];           //valid
arr2D[1]= {1,2,3};              //inValid! -> arr2D = new int [] {1,2,3}; ์œผ๋กœ ์ˆ˜์ •

๐Ÿคฆ๐Ÿป‍โ™€๏ธ 2D Arrays Tip 

1. ํ”„๋ฆฐํŠธ ๋ฐฉ๋ฒ•
    ๋ฐฐ์—ด์„ ํ”„๋ฆฐํŠธ ํ• ๋•Œ๋Š”,
   (1) 1์ฐจ์› ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ, Arrays.toString()
   (2) 2์ฐจ์› ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ Arrays.deepToString() ์„ ์‚ฌ์šฉํ•œ๋‹ค
2. Getting Length:
   int [ ] [ ] array1 = new int [4][5];
   (1) row : array1[0].length //4
   (2) column : array1. length //5
728x90
๋ฐ˜์‘ํ˜•