-
728x90๋ฐ์ํ
<1> ์๋ฐ์ ํน์ง
1. WORA (Wirte Once and Read Anywhere)
์๋ฐ๋ ์ด์ ์ฒด์ ์ ๋ ๋ฆฝ์ ์ธ ํน์ง์ ์ง๋๋ค โ ์ด๋ ์ด์์ฒด์ ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํจ (windows, Linux, Mac ...)
2. Garbage Collections
๋์ด์ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํ๋ ๊ธฐ๋ฅ
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ธ์ ๋ฐ์ํ๋๊ฐ? ๋ฉฐ๋๋ฆฌ๋ ๋ชจ๋ฅธ๋ค. ์๊ธฐ๊ฐ ํ๊ฐํ ๋ ํด์ค
3. ๊ฐ์ฒด ์งํฅ์ธ์ด
์๋ฐ๋ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก ๋งด๋ฒ ๋ณ์์ ๋ฉ์๋๋ฅผ ๊ฐ๋๋ค
. : ~ has
4. ํด๋์ค๋ ์๋ฐ์ ์ต์ ๊ตฌ์ฑ ๋จ์์ด๋ค<2> Variables
๐ก Variable (๋ณ์) : ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ฏธํ๋ค
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ (value) ๋ฅผ ํ ๋น(assign) ํ ํ์ ์ฌ์ฉํ๋ค- ํ์
๋ณ์์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ์ข ๋ฅ
ํ์ ํ ๋ฐ์ดํฐ ํ์ ์ ์ 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
๐ก ํ๋ณํ์ ๋ณ์์ ํ์ ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณํํ๋ ํ์์ด๋ค
ํ๋ณํ์๋ ํฌ๊ฒ ๋๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค- ๋ช
์์ ํ๋ณํ (Demotion)
(1) Big โ Small
(2) ๊ฐ ์์ค์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ JVM์ด ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ์ง ์๋๋ค
(3) ๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ณํ์ ํ๋ค
int i =30000; //32 bitbyte b = (byte) i ;// 32 bit -> 8 bit. ์์ ์์์์ ์ํํธ ํ์ฑ ๊ตฌ๊ฒจ๋ฃ๋์ค- ๋ฌต์์ ํ๋ณํ (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 1int 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>์ ์ด๋ฌธ
- 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);- 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 loopfor(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 loopint i =0; //declare variables outside of the loop and write inc/dec inside bodywhile(i<arr.length){System.out.print(arr[i]); i++;}//๋ฐฉ๋ฒ 2: Do- While Loopdo { 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) ๋์ผํ ํ์ ์ ๋ฐ์ดํฐ ์ฌ๋ฌ๊ฐ๋ฅผ ํ๋์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ด๋ฆฌํ๋ ๊ฒ
(2) ์์์ ์ ๊ทผํ๋ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ฉฐ ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐํ๋ค. - ๋ฐฐ์ด ์ ์ธ
(1) ๋ฐฐ์ด ์ ์ธ:
new keyword์ ํจ๊ป ๋ฐ์ดํฐ ํ์ ๊ณผ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค โ new data_type[size]
ex) int [] array = new int[2]; โ array ๋ ์์ฑ๋ ๋ฐฐ์ด์ ๊ฐ๋ฅดํค๋ ์ฐธ์กฐํ ๋ณ์๋ค.
(2) ๋ฐฐ์ด ์ ์ธ์ 4๊ฐ์ง ๋ฐฉ์- int [] array1 = new int [5] ; array = new int [5];
- int [] array 2 = new int [5];
- int [] arryay3 = new int[] {1,2,3,4,5};
- int [] array4 = {1,2,3,4,5};
๐คฆ๐ปโโ๏ธ ๋ฐฐ์ด ์ ์ธ ํ ์์ฑ ์ ์ด๊ธฐํ์ ์ฃผ์ํด์ผ ํ๋ค !
int [] array1 ;array1 = {1,2,3,4,5}; //Compile Error -> array size is not initialized//Valid Codeint [] 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์ฐจ์ ๋ฐฐ์ด
๋ฐฐ์ด ์ ์ธ:- int arr1 [ ] [ ] = new int [4][2] ;
- int [ ] arr2 [ ] = new int [4][2]; โ 2D Array : [ ] ์ ์์น๋ ์๊ด ์๋ค !
- int [ ] [ ] arr3 = new int [4][3];
- int [ ] [ ] arr5 = new int [ ] [ ] {{1,2,3,4,5},{2,3,4},{3,4} };
- int [ ] [ ] arr6 = {{1,2} , {2,4,5,6,2} , {2,3,4,} };
- int [ ] [ ] arr4 = new int [4]{1,2,3,4,5} ; โ ๋ถ๊ฐ๋ฅ !!
int [][] arr2D = new int [4][]; //validarr2D[2] = new int [2]; //validarr2D[0]= new int[4]; //validarr2D[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 //5728x90๋ฐ์ํ'๐ STUDY > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ถ์ํ (0) 2022.05.17 ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (1) 2022.05.17 Class Case Exception (0) 2022.05.17 Variables (0) 2021.07.15 ๋ค์ง (0) 2021.07.15 - ํ์