ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/Java

java 기초(νŒ¨ν‚€μ§€μ™€ API λ¬Έμ„œ, java.lang νŒ¨ν‚€μ§€)

μˆ˜ν˜€μ΄0812 2023. 4. 13. 19:14
728x90
λ°˜μ‘ν˜•

1) νŒ¨ν‚€μ§€μ™€ API λ¬Έμ„œ

 

1-1) μžλ°” 라이브러리 

  • κ°œλ°œμžκ°€ νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ νŒ¨ν‚€μ§€ ν˜Ήμ€ λͺ¨λ“ˆμ„ μ••μΆ•ν•œ 파일

 

1-2) νŒ¨ν‚€μ§€μ™€ λͺ¨λ“ˆ

  • νŒ¨ν‚€μ§€ : μƒν˜Έ κ΄€λ ¨ μžˆλŠ” ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν•œ 곳에 λ¬Άμ–΄ 놓은 것
  • λͺ¨λ“ˆ : λ°€μ ‘ν•œ 관계가 μžˆλŠ” νŒ¨ν‚€μ§€μ™€ λ¦¬μ†ŒμŠ€λ₯Ό λ¬Άμ–΄ 놓은 것, JDKλ₯Ό μ„€μΉ˜ν•˜λ©΄ jmods 폴더에 jmod νŒŒμΌμ„ μ œκ³΅ν•˜λŠ”λ° jmod 파일이 λͺ¨λ“ˆ 파일

 

1-3) μžλ°”μ˜ μ£Όμš” νŒ¨ν‚€μ§€ 및 λͺ¨λ“ˆ

 

1-4) API λ¬Έμ„œ

  • μžλ°”λŠ” 이런 νŒ¨ν‚€μ§€λ₯Ό κ°œλ°œμžκ°€ μ‚¬μš©ν•  수 μžˆλ„λ‘ API ν˜•νƒœλ‘œ μ œκ³΅ν•˜λ‹€
  • μ‚¬μš©μžλŠ” APIλ‘œλΆ€ν„° ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μž„ν¬νŠΈν•˜λ©΄ λͺ¨λ‹ˆν„°μ™€ ν‚€λ³΄λ“œλ₯Ό μ‰½κ²Œ μ‘°μž‘ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•  수 μžˆλ‹€
  • JDK에 ν¬ν•¨λœ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 맀우 λ°©λŒ€ν•˜κΈ° λ•Œλ¬Έμ— κ°œλ°œμžκ°€ λͺ¨λ‘ κΈ°μ–΅ν•  수 μ—†μœΌλ―€λ‘œ νŒ¨ν‚€μ§€λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ‚¬μš©ν•˜λ €λ©΄ κ°œλ°œμžλŠ” API λ¬Έμ„œλ₯Ό 자주 μ°Έμ‘°ν•΄μ•Όν•œλ‹€

μ£Όμ†Œ : https://docs.oracle.com/en/java/javase/14/docs/api

- κ΅μˆ˜λ‹˜μ΄ 계속 λͺ¨λ₯΄λŠ”κ±° 있으면 java.api 보라고 κ°•μ‘°λ₯Ό ν•˜μ‹ λ‹€. λŒ€λΆ€λΆ„ μ˜μ–΄λΌ ν•΄μ„ν•˜κΈ° νž˜λ“€μ–΄μ„œ κ΅¬κΈ€λ§μ΄λ‚˜ chat gptλ₯Ό 많이 μ°Ύμ•„λ³΄λŠ”λ° μ–Έμ  κ°€ μ˜μ–΄ μ‹€λ ₯κ³Ό μ½”λ”© μ‹€λ ₯을 ν‚€μ›Œμ„œ apiλ§Œλ“€ μ΄μš©ν•˜μ—¬ λ§Œλ“€μ–΄λ„ 보고 μ‹Άλ‹€!!

 

2) java.lang νŒ¨ν‚€μ§€

 

2-1) ν•„μˆ˜ νŒ¨ν‚€μ§€

  • java.lang νŒ¨ν‚€μ§€λŠ” μžλ°” ν”„λ‘œκ·Έλž¨μ—μ„œ κ°€μž₯ 기본이 λ˜λŠ” ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 보관
  • import λ¬Έ 없이 μ‚¬μš©

 

2-2) Object 클래슀

  • λͺ¨λ“  클래슀의 쑰상
  • Object ν΄λž˜μŠ€κ°€ μ œκ³΅ν•˜λŠ” μ£Όμš” λ©”μ„œλ“œ

 

2-3) Class 클래슀

  • μ‹€ν–‰ 쀑인 μžλ°” ν”„λ‘œκ·Έλž¨ 내뢀에 ν¬ν•¨λœ ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ 정보λ₯Ό μ œκ³΅ν•˜λ €κ³  getName(), getSimpleName() λ“± λ‹€μ–‘ν•œ λ©”μ„œλ“œλ₯Ό 제곡
  • Class ν΄λž˜μŠ€λŠ” μƒμ„±μžκ°€ μ—†κ³  μ–΄λ–€ 객체라도 μƒμ„±ν•˜λ©΄  JVM이 λŒ€μ‘ν•˜λŠ” Class 객체λ₯Ό μžλ™μœΌλ‘œ 생성
  • μ‹€ν–‰ 도쀑 객체 정보λ₯Ό μ–»μœΌλ €λ©΄  getClass()의 결과인 Class 객체λ₯Ό μ‚¬μš©
  • ex) μ£Όμ–΄μ§„ objκ°μ²΄μ—μ„œ Class 객체λ₯Ό μ–»μœΌλ €λ©΄ 

 

2-4) Math 클래슀

  • λͺ¨λ“  λ©”μ„œλ“œκ°€ static이기 λ•Œλ¬Έμ— 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  λ©”μ„œλ“œ 호좜
  • Math ν΄λž˜μŠ€κ°€ μ œκ³΅ν•˜λŠ” μ£Όμš” double νƒ€μž…μ˜ λ©”μ„œλ“œ

public class MathDemo {

        public static void main(String[] args) {

              System.out.println("Math.pow(2,8):" + Math.pow(2, 8));

              System.out.println("Math.random():" + Math.random());

              System.out.println("Math.sin(Math.PI):" + Math.sin(Math.PI));

              System.out.println("Math.min(10,20):" + Math.min(10, 20));

       }

}

닡은

Math.pow(2,8):256.0

Math.random():0.5957544835893684

Math.sin(Math.PI):1.2246467991473532E-16

Math.min(10,20):10

 

2-5) System 클래슀

  • ν‘œμ€€ μž…μΆœλ ₯을 λΉ„λ‘―ν•œ μ‹€ν–‰ μ‹œμŠ€ν…œκ³Ό κ΄€λ ¨λœ ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό static으둜 제곡
  • System.out.println()도 System ν΄λž˜μŠ€κ°€ μ œκ³΅ν•˜λŠ” λ©”μ„œλ“œ
  • System 클래슀의 μ„Έκ°€μ§€ ν•„λ“œ

 

  • μžλ°”μ—μ„œ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° 할당받은 λ©”λͺ¨λ¦¬λ₯Ό JVM이 관리
  • JVM은 λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•˜κ±°λ‚˜ 주기적으둜 κ°€λΉ„μ§€ 컬렉터λ₯Ό μ‚¬μš©ν•΄ κ°€λΉ„μ§€λ₯Ό 수거
  • κ°€λΉ„μ§€λ₯Ό μˆ˜κ±°ν•˜λŠ” μˆœμ„œλŠ” 객체의 생성 μˆœμ„œμ™€λŠ” 무관
  • ν”„λ‘œκ·Έλž¨μ—μ„œ κ°€λΉ„μ§€ 컬렉터λ₯Ό 직접 호좜 λΆˆκ°€, λŒ€μ‹ μ— System.gc()둜 JVM에 κ°€λŠ₯ν•˜λ©΄ 빨리 κ°€λΉ„μ§€ 컬렉터λ₯Ό μ‹€ν–‰ν•˜λ„λ‘ μš”μ²­ κ°€λŠ₯

class Garbage {

        public int no;

        public Garbage(int no) {

               this.no = no;

               System.out.printf("Garbage(%d)생성\n", no);

         }

         protected void finalize() {

                 System.out.printf("Garbage(%d)수거\n", no);

         }

         }

public class GarbageDemo {

       public static void main(String[] args) {

              for (int i = 0; i < 3; i++)

                    new Garbage(i);

       }

}

닡은

Garbage(0)생성

Garbage(1)생성

Garbage(2)생성

κ°€λΉ„μ§€μ˜ 생성 μˆœμ„œμ™€ 수거 μˆœμ„œλŠ” λ¬΄κ΄€ν•˜λ‹€!!

 

2-6) 포μž₯ 클래슀

  • λŒ€λΆ€λΆ„μ˜ κΈ°λ³Έ νŒ¨ν‚€μ§€κ°€ μ œκ³΅ν•˜λŠ” 클래슀의 λ©”μ„œλ“œλŠ” μ°Έμ‘° νƒ€μž…μ„ λ§€κ°œλ³€μˆ˜λ‘œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 기초 νƒ€μž…μ„ μ‚¬μš©ν•˜λ©΄ 객체 μ§€ν–₯ μ–Έμ–΄μ˜ νŠΉμ§•μ„ 이용 λΆˆκ°€
  • μžλ°”λŠ” 기초 νƒ€μž…μ„ 포μž₯ν•΄ ν΄λž˜μŠ€ν™” ν•œ 포μž₯ 클래슀(wrapper class)λ₯Ό μ œκ³΅ν•΄μ„œ 기초 νƒ€μž… 데이터도 κΈ°λ³Έ νŒ¨ν‚€μ§€λ₯Ό ν™œμš©ν•˜λ„λ‘ 함
  • λͺ¨λ“  기초 νƒ€μž…μ— λŒ€μ‘ν•˜λŠ” 포μž₯ ν΄λž˜μŠ€κ°€ 있으며, int와 char νƒ€μž…μ— λŒ€μ‘ν•˜λŠ” 포μž₯ ν΄λž˜μŠ€λŠ” 각각 Integer와 Character이며, λ‚˜λ¨Έμ§€ 포μž₯ 클래슀의 이름은 기초 νƒ€μž…μ˜ 첫 영문자λ₯Ό λŒ€λ¬Έμžλ‘œ λ°”κΎΌ 것이닀
  • Integer ν΄λž˜μŠ€κ°€ μ œκ³΅ν•˜λŠ” μ£Όμš” λ©”μ„œλ“œ

  • 기초 νƒ€μž… 데이터λ₯Ό 포μž₯ν•΄ κ°μ²΄ν™”ν•˜λŠ” 것을 λ°•μ‹±(boxing), λ°˜λŒ€ 과정을 μ–Έλ°•μ‹±(unboxing)

  • 박싱을 μˆ˜ν–‰ν•˜λ €λ©΄ 포μž₯ 클래슀의 μƒμ„±μžλ‚˜ valueOf()λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€
더보기

Interger bi = new Integer(10);      // λ°•μ‹±

Integer bi = Integer.valueOf(10)   // λ°•μ‹±

public class WrapperDemo {

       public static void main(String[] args) {

              Integer bi1 = new Integer(10);           // Integer νƒ€μž… 객체λ₯Ό μƒμ„±ν•œλ‹€

              int i1 = bi1.intValue();                         // Integer νƒ€μž…μ„ int νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œλ‹€    

              double d = bi1.doubleValue();            // Integer νƒ€μž…μ„ double νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œλ‹€

              Integer bi2 = 20;                                 // μžλ™ 박싱이닀

               int i2 = bi2 + 20;                                 // μžλ™ 언박싱이닀

               String s1 = Double.toString(3.14);     // double νƒ€μž… 데이터λ₯Ό String νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œλ‹€

               Float pi = Float.parseFloat("3.14");   // String νƒ€μž… 데이터λ₯Ό Float νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œλ‹€

               Integer bi3 = Integer.valueOf("11", 16);  // 16μ§„μˆ˜ 숫자 λ¬Έμžμ—΄μ„ 10μ§„μˆ˜ Integer νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œλ‹€

               System.out.println(bi3);

        }

}

닡은

17

 

728x90
λ°˜μ‘ν˜•