λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JAVA/Java Programming

5μž₯ μ°Έμ‘° νƒ€μž…

by soyλ―Έλ‹ˆ 2021. 9. 13.

 

1. 데이터 νƒ€μž…

  • κΈ°λ³Έ νƒ€μž… : byte, char, short, int, long, float, double, boolean
    • κΈ°λ³Έ νƒ€μž…μ€ μ‹€μ œ 값을 λ³€μˆ˜μ— μ €μž₯
  • μ°Έμ‘° νƒ€μž… : λ°°μ—΄, 클래슀, μ—΄κ±°, μΈν„°νŽ˜μ΄μŠ€
    • μ°Έμ‘° νƒ€μž…μ€ λ©”λͺ¨λ¦¬ λ²ˆμ§€ 값을 λ³€μˆ˜μ— μ €μž₯

 

 

 

2. λ©”λͺ¨λ¦¬ μ‚¬μš© μ˜μ—­

 

1. λ©”μ†Œλ“œ(Method) μ˜μ—­

  • 클래슀 λ³„λ‘œ λŸ°νƒ€μž„ μƒμˆ˜ν’€, ν•„λ“œ 데이터, λ©”μ†Œλ“œ 데이터, λ©”μ†Œλ“œ μ½”λ“œ, μƒμ„±μž μ½”λ“œ 등을 λΆ„λ₯˜ν•΄μ„œ μ €μž₯ν•œλ‹€.
  • λ©”μ†Œλ“œ μ˜μ—­μ€ JVM이 μ‹œμž‘ν•  λ•Œ μƒμ„±λ˜κ³  λͺ¨λ“  μŠ€λ ˆλ“œκ°€ κ³΅μœ ν•˜λŠ” μ˜μ—­μ΄λ‹€.

2. νž™(Heap) μ˜μ—­

  • 객체와 배열이 μƒμ„±λ˜λŠ” μ˜μ—­μ΄λ‹€.
  • νž™ μ˜μ—­μ—μ„œ μƒμ„±λ˜λŠ” 객체와 배열은 JVM μŠ€νƒ μ˜μ—­μ˜ λ³€μˆ˜λ‚˜ λ‹€λ₯Έ 객체의 ν•„λ“œμ—μ„œ μ°Έμ‘°ν•œλ‹€.
  • μ°Έμ‘°ν•˜λŠ” λ³€μˆ˜λ‚˜ ν•„λ“œκ°€ μ—†λŠ” κ°μ²΄λŠ” μ“°λ ˆκΈ°λ‘œ μ·¨κΈ‰ν•˜κ³  JVM은 Garbage Collectorλ₯Ό μ‹€ν–‰μ‹œμΌœ μ“°λ ˆκΈ° 객체λ₯Ό νž™ μ˜μ—­μ—μ„œ μ œκ±°ν•œλ‹€.
  • λ”°λΌμ„œ 객체λ₯Ό μ œκ±°ν•˜κΈ° μœ„ν•΄ λ³„λ„μ˜ μ½”λ“œλ₯Ό μž‘μ„±ν•  ν•„μš”κ°€ μ—†λ‹€.

3. JVM μŠ€νƒ(Stack) μ˜μ—­

  • μŠ€νƒ μ˜μ—­μ€ 각 μŠ€λ ˆλ“œλ§ˆλ‹€ ν•˜λ‚˜μ”© μ‘΄μž¬ν•˜λ©° μŠ€λ ˆλ“œκ°€ μ‹œμž‘λ  λ•Œ ν• λ‹Ήλœλ‹€.
  • μžλ°” ν”„λ‘œκ·Έλž¨μ— μΆ”κ°€λ‘œ μŠ€λ ˆλ“œλ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμœΌλ©΄ main() λ©”μ†Œλ“œμ— ν•΄λ‹Ήν•˜λŠ” JVM μŠ€νƒ μ˜μ—­ ν•˜λ‚˜λ§Œ μ‘΄μž¬ν•œλ‹€.
  • λ©”μ†Œλ“œ ν˜ΈμΆœν•  λ•Œλ§ˆλ‹€ ν”„λ ˆμž„ μΆ”κ°€(push)ν•˜κ³  λ©”μ†Œλ“œ μ’…λ£Œν•˜λ©΄ ν”„λ ˆμž„ 제거(pop)ν•˜λŠ” λ™μž‘ μˆ˜ν–‰ν•œλ‹€.
  • λ³€μˆ˜λŠ” μ„ μ–Έλœ 블둝 μ•ˆμ—μ„œλ§Œ μŠ€νƒμ— μ‘΄μž¬ν•˜κ³  블둝을 λ²—μ–΄λ‚˜λ©΄ μŠ€νƒμ—μ„œ μ œκ±°λœλ‹€.

 

 

 

 

3. nullκ³Ό NullPointerException

 

1. null

  • μ°Έμ‘° νƒ€μž… λ³€μˆ˜λŠ” νž™ μ˜μ—­μ˜ 객체λ₯Ό μ°Έμ‘°ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 의미둜 null 값을 κ°€μ§ˆ 수 μžˆλ‹€.
  • μ΄ˆκΈ°κ°’μœΌλ‘œ null 값을 μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ— null 둜 μ΄ˆκΈ°ν™”λœ μ°Έμ‘° λ³€μˆ˜λŠ” μŠ€νƒ μ˜μ—­μ— 생성 λœλ‹€.

 

2. NullPointerException

 

int[] arr = null;
arr[0] = 10; // NullPointerException

 

  • arr 은 μ°Έμ‘° λ³€μˆ˜μΈλ° μ°Έμ‘°ν•˜κ³  μžˆλŠ” λ°°μ—΄ 객체가 μ—†κΈ° λ•Œλ¬Έμ— NullPointerException 이 λ°œμƒν•œλ‹€.

 

 

 

4. String νƒ€μž…

 

String name1 = "ν•˜μ΄";
String name2 = "ν•˜μ΄";

 

  • name1 λ³€μˆ˜μ™€ name2 λ³€μˆ˜λŠ” μŠ€νƒ μ˜μ—­μ— μƒμ„±λ˜κ³  λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μΈ "ν•˜μ΄"λŠ” νž™ μ˜μ—­μ— String 객체둜 μƒμ„±λœλ‹€. name1 λ³€μˆ˜μ™€ name2 λ³€μˆ˜μ—λŠ” νž™ μ˜μ—­μ˜ "ν•˜μ΄" 객체의 μ£Όμ†Œ 값이 μ €μž₯λœλ‹€.
  • name1 λ³€μˆ˜μ™€ name2 λ³€μˆ˜λŠ” λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ΄ "ν•˜μ΄"둜 λ™μΌν•˜κΈ° λ•Œλ¬Έμ— 같은 String 객체λ₯Ό μ°Έμ‘°ν•˜κ²Œ λœλ‹€.
  • new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ 직접 String 객체λ₯Ό 생성할 κ²½μš°μ—λŠ” λ‹€λ₯Έ String 객체λ₯Ό μ°Έμ‘°ν•˜κ²Œ λœλ‹€.

 

String name1 = new String("μ‹ μš©κΆŒ");
String name2 = new String("μ‹ μš©κΆŒ");

 

 

  • μ°Έμ‘°ν•˜κ³  μžˆλŠ” String 객체가 λ™μΌν•œμ§€ μ•ˆν•œμ§€λ₯Ό 비ꡐ할 λ•ŒλŠ” == λ˜λŠ” != 비ꡐ 연산을 ν•œλ‹€.
  • String 객체가 λ™μΌν•œκ°€ μ•„λ‹Œκ°€μ— 상관없이 String λ¬Έμžμ—΄λ§Œ 비ꡐ할 λ•Œμ—λŠ” equals() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

boolean result = str1.equals(str2);

 

 

μ°Έμ‘°λ₯Ό μžƒμ€ String κ°μ²΄λŠ” μ–΄λ–»κ²Œ 될까?

 

String hobby = "μ—¬ν–‰";
hobby = null;

 

  • JVM은 μ°Έμ‘°λ˜μ§€ μ•ŠλŠ” 객체λ₯Ό μ“°λ ˆκΈ° 객체둜 μ·¨κΈ‰ν•˜κ³  Garbage Collectorλ₯Ό κ΅¬λ™μ‹œμΌœ λ©”λͺ¨λ¦¬μ—μ„œ μžλ™μœΌλ‘œ μ œκ±°ν•œλ‹€.

 

 

 

5. λ°°μ—΄μ΄λž€?

 

  • 같은 νƒ€μž…μ˜ 데이터λ₯Ό μ—°μ†λœ 곡간에 λ‚˜μ—΄μ‹œν‚€κ³  각 데이터에 인덱슀λ₯Ό λΆ€μ—¬ν•΄ 놓은 μžλ£Œκ΅¬μ‘°μ΄λ‹€.
  • λ‹€λ₯Έ νƒ€μž…μ˜ 값을 μ €μž₯ν•˜λ €κ³  ν•˜λ©΄ νƒ€μž… 뢈일치 컴파일 였λ₯˜κ°€ λ°œμƒν•œλ‹€.
  • ν•œ 번 μƒμ„±λœ λ°°μ—΄μ˜ κΈΈμ΄λŠ” λŠ˜λ¦¬κ±°λ‚˜ 쀄일 수 μ—†λ‹€.
  • 배열도 κ°μ²΄μ΄λ―€λ‘œ νž™ μ˜μ—­μ— λ°°μ—΄ 객체가 μƒμ„±λ˜κ³  μŠ€νƒ μ˜μ—­μ˜ λ°°μ—΄ λ³€μˆ˜λŠ” νž™ μ˜μ—­μ˜ λ°°μ—΄ 객체λ₯Ό μ°Έμ‘°ν•˜κ²Œ λœλ‹€.

 

λ°°μ—΄ λ³€μˆ˜λ₯Ό 이미 μ„ μ–Έν•œ 후에 λ‹€λ₯Έ μ‹€ν–‰λ¬Έμ—μ„œ λ°°μ—΄ 생성은 ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€.

 

String[] names;
names = {"홍길동", "κ°μžλ°”", "홍삼원"}; // 컴파일 μ—λŸ¬


String[] names = null;
names = new String[]{"홍길동", "κ°μžλ°”", "홍삼원"};

 

  • 배열을 λ¨Όμ € μ„ μ–Έν•œ ν›„ 값은 λ‚˜μ€‘μ— μ£ΌλŠ” κ²½μš°μ—λŠ” new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ κ°’ λͺ©λ‘μ„ 지정해주면 λœλ‹€.
  • λ°°μ—΄ λͺ©λ‘μ„ 생성함과 λ™μ‹œμ— λ©”μ†Œλ“œμ˜ λ§€κ°œκ°’μœΌλ‘œ μ‚¬μš©ν•˜κ³ μž ν•  λ•ŒλŠ” λ°˜λ“œμ‹œ new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

int[] arr = new int[5];
int result = add(new int[]{95, 80, 75});

 

 

λ°°μ—΄μ˜ μ΄ˆκΈ°κ°’

 

  • μ •μˆ˜ : 0,  μ‹€μˆ˜ : 0.0, 논리 : false, μ°Έμ‘° νƒ€μž… : null

 

 

λ°°μ—΄ 길이

 

int[] arr = { 10, 20, 30 };
int num = arr.length;

 

 

6. μ»€λ§¨λ“œ 라인

 

public static void main(String[] args){ ``` }

 

 

  • java 클래슀둜 ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ©΄ JVM은 길이가 0인 String 배열을 λ¨Όμ € μƒμ„±ν•˜κ³  main() λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ λ§€κ°œκ°’μœΌλ‘œ μ „λ‹¬ν•œλ‹€.
  • main() λ©”μ†Œλ“œλŠ” String[] args λ§€κ°œλ³€μˆ˜λ₯Ό ν†΅ν•΄μ„œ μ»€λ§¨λ“œ λΌμΈμ—μ„œ μž…λ ₯된 λ°μ΄ν„°μ˜ μˆ˜μ™€ μž…λ ₯된 데이터λ₯Ό μ•Œ 수 있게 λœλ‹€.

 

int num1 = Integer.parseInt("10");
int num2 = Integer.parseInt("20");

// λͺ…λ Ή ν”„λ‘¬ν”„νŠΈ : java MainStringArrayArgument 10 20

 

 

 

7. 닀차원 λ°°μ—΄

 

int[][] scores = new int[2][3];
scores.length; // 2
scores[0].length; //3
scores[1].length; //3

 

 

 

 

7-1. 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” λ°°μ—΄

 

String[] strArray = new String[3];
strArray[0] = "Java";
strArray[1] = "Java";
strArray[2] = new String("Java");

System.out.println(strArray[0] == strArray[1]);  //true
System.out.println(strArray[0] == strArray[2]);  // false
System.out.println(strArray[0].equals(strArray[2]);  // true

 

  • == λŠ” 객체의 λ²ˆμ§€ 수λ₯Ό λΉ„κ΅ν•˜κ³  equals λŠ” λ¬Έμžμ—΄μ„ 비ꡐ할 수 μžˆλ‹€.

 

 

 

 

8. ν–₯μƒλœ forλ¬Έ (forEach)

 

 

  • for 문이 처음 싀행될 λ•Œ λ°°μ—΄μ—μ„œ κ°€μ Έμ˜¬ 첫 번째 값이 μ‘΄μž¬ν•˜λŠ”μ§€ ν‰κ°€ν•œλ‹€. κ°€μ Έμ˜¬ 값이 μ‘΄μž¬ν•˜λ©΄ ν•΄λ‹Ή 값을 λ³€μˆ˜μ— μ €μž₯ν•˜κ³  싀행문을 μ‹€ν–‰ν•œλ‹€. 싀행문이 λͺ¨λ‘ μ‹€ν–‰λ˜λ©΄ λ‹€μ‹œ 루프λ₯Ό λŒμ•„ λ°°μ—΄μ—μ„œ κ°€μ Έμ˜¬ λ‹€μŒ 값이 μ‘΄μž¬ν•˜λŠ”μ§€ ν‰κ°€ν•œλ‹€. κ°€μ Έμ˜¬ λ‹€μŒ ν•­λͺ©μ΄ μ—†μœΌλ©΄ for문이 μ’…λ£Œλœλ‹€.

 

int [] scores = { 10, 20, 30, 40, 50 };
int sum = 0;
for (int score : scores) {
	sum += score;
}

 

 

 

9. μ—΄κ±° νƒ€μž…

 

public enum Week { 
     MONDAY, 
     TUESDAY, 
     WEDNESDAY, 
     THURSDAY, 
     FRIDAY, 
     SATURDAY,
     SUNDAY 
}

Week today = Week.SATURDAY;
today == Week.SATURDAY; // true
Week birthday = null;

 

 

Calendar now = Calendar.getInstance();

int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1;
int day = now.get(Calendar.DAY_OF_MONTH);
int week = now.get(Calendar.DAY_OF_WEEK);

 

  • μžλ°”λŠ” Date, Calendar, LocalDateTime λ“± 클래슀 μ œκ³΅ν•œλ‹€.

 

 

 

'JAVA > Java Programming' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JAVA] DAO, DTO, VO 정리  (0) 2023.09.16
4μž₯ 쑰건문과 반볡문  (0) 2021.09.12
3μž₯ μ—°μ‚°μž  (0) 2021.09.12
2μž₯ λ³€μˆ˜μ™€ νƒ€μž…  (0) 2021.09.12
1μž₯ μžλ°” μ‹œμž‘ν•˜κΈ°  (0) 2021.09.12

λŒ“κΈ€