1. λ³€μˆ˜

값을 μ €μž₯ν•˜κ³  λΆ€λ₯Ό 수 μžˆλŠ” μ΄λ¦„ν‘œ.πŸ”–
데이터λ₯Ό μž„μ‹œλ‘œ μ €μž₯ν•˜κ³  μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

  1. μ„ μ–Έ ν›„ κ°’ μ €μž₯
  2. λ³€μˆ˜λͺ… κ·œμΉ™ : camelCase
  3. λ‚˜μ€‘μ— κ°’ λ³€κ²½ κ°€λŠ₯
  4. νƒ€μž…μ— λ§žλŠ” κ°’λ§Œ μ €μž₯ κ°€λŠ₯
    πŸ”†μžλ°”λŠ” 컴파일 νƒ€μž„μ— νƒ€μž… 검사λ₯Ό μˆ˜ν–‰ν•˜λŠ” 정적 νƒ€μž… 언어이기 λ•Œλ¬Έμ΄λ‹€.

2. μƒμˆ˜

  1. final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ„ μ–Έν•œλ‹€.
  2. λ³€μˆ˜λͺ… κ·œμΉ™ : UPPER_SNAKE_CASE
  3. μƒμˆ˜μ˜ 값을 λ³€κ²½ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

3. μžλ£Œν˜•

Primitive Type

  1. λͺ¨λ‘ μ†Œλ¬Έμžλ‘œ μ‹œμž‘λœλ‹€.
  2. 비객체 νƒ€μž…μ΄λ―€λ‘œ null 값을 κ°€μ§ˆ 수 μ—†λ‹€. (기본값이 μ •ν•΄μ Έ 있음)
  3. λ³€μˆ˜μ˜ μ„ μ–Έκ³Ό λ™μ‹œμ— λ©”λͺ¨λ¦¬ 생성
  4. λ©”λͺ¨λ¦¬μ˜ μŠ€νƒ(stack)에 μ €μž₯λœλ‹€.
  5. μ €μž₯곡간에 μ‹€μ œ 자료 값을 κ°€μ§„λ‹€.
νƒ€μž…ν¬κΈ°μ„€λͺ…μ˜ˆμ‹œ
byte1 byteμ•„μ£Ό μž‘μ€ μ •μˆ˜ (-128 ~ 127)byte b = 10;
short2 byteμž‘μ€ μ •μˆ˜ (-32,768 ~ 32,767)short s = 1000;
int4 byte일반적인 μ •μˆ˜int age = 25;
long8 byte큰 μ •μˆ˜long count = 1000000000L;
float4 byteμ†Œμˆ˜ (단정도)float pi = 3.14f;
double8 byteμ†Œμˆ˜ (배정도, 더 μ •λ°€)double salary = 55000.5;
char2 byte단일 문자 (μœ λ‹ˆμ½”λ“œ)char grade = 'A';
boolean1 bitμ°Έ/κ±°μ§“boolean isValid = true;

β—κΈ°λ³Έν˜• νƒ€μž… μ‚¬μš© μ‹œ μœ μ˜μ‚¬ν•­

μ •μˆ˜ν˜• νƒ€μž…(byte, short, int, long)

  • λ§Œμ•½ ν‘œν˜„ κ°€λŠ₯ν•œ λ°μ΄ν„°μ˜ μ΅œλŒ€λ³΄λ‹€ 큰 값을 μ €μž₯ν•˜λŠ” 경우 μ˜€λ²„ν”Œλ‘œμš°(Overflow)κ°€ λ°œμƒν•˜κ³ , λ°μ΄ν„°μ˜ μ΅œμ†Œλ³΄λ‹€ μž‘μ€ 값을 μ €μž₯ν•˜λ©΄ μ–Έλ”ν”Œλ‘œμš°(Underflow)κ°€ λ°œμƒν•˜κ²Œ λœλ‹€.
  • μ˜€λ²„ν”Œλ‘œμš°/μ–Έλ”ν”Œλ‘œμš°κ°€ λ°œμƒν•˜λ©΄ μ‚¬μš©μžκ°€ μ˜λ„ν•˜μ§€ μ•Šμ€ 값이 μ €μž₯λœλ‹€.

μ‹€μˆ˜ν˜• νƒ€μž…(float, double)

  • μ΅œλŒ€ / μ΅œμ†Œ ν‘œν˜„ λ²”μœ„μ™€, 유효 자릿수λ₯Ό κ³ λ €ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.
  • 일반적으둜 μ»΄ν“¨ν„°λŠ” μ‹€μˆ˜λ₯Ό ν‘œν˜„ν•  λ•Œ, 뢀동 μ†Œμˆ˜μ (Floating point) 방식을 μ΄μš©ν•œλ‹€.

κ³ μ • μ†Œμˆ˜μ (Fixed point) 방식 : μ‹€μˆ˜λ₯Ό μ •μˆ˜λΆ€μ™€ μ†Œμˆ˜λΆ€λ‘œ λ‚˜λˆ„μ–΄ ν‘œν˜„
뢀동 μ†Œμˆ˜μ (Floating point) 방식 : μ‹€μˆ˜λ₯Ό κ°€μˆ˜λΆ€μ™€ μ§€μˆ˜λΆ€λ‘œ λ‚˜λˆ„μ–΄ ν‘œν˜„

  • 맀우 큰 μ‹€μˆ˜κΉŒμ§€λ„ ν‘œν˜„ν•  수 μžˆμ§€λ§Œ 10μ§„μˆ˜λ₯Ό μ •ν™•νžˆ ν‘œν˜„ν•  수 없기에 μ˜€μ°¨κ°€ λ°œμƒν•œλ‹€.
  • 유효 자릿수λ₯Ό 톡해 정밀도λ₯Ό νŒλ‹¨ν•˜μ—¬ μ‚¬μš©ν•  νƒ€μž…μ„ κ²°μ •ν•œλ‹€.
νƒ€μž…μ§€μˆ˜μ˜ λΉ„νŠΈ κΈΈμ΄κ°€μˆ˜μ˜ λΉ„νŠΈ 길이유효 자릿수
float8 bit23 bitμ†Œμˆ˜μ  μ•½ 6μžλ¦¬κΉŒμ§€ μ •ν™•νžˆ ν‘œν˜„
double11 bit52 bitμ†Œμˆ˜μ  μ•½ 15μžλ¦¬κΉŒμ§€ μ •ν™•νžˆ ν‘œν˜„

Reference Type

  • κΈ°λ³Έν˜• κ³ΌλŠ” 달리 μ‹€μ œ 값이 μ €μž₯λ˜μ§€ μ•Šκ³ , μžλ£Œκ°€ μ €μž₯된 κ³΅κ°„μ˜ μ£Όμ†Œλ₯Ό μ €μž₯ν•œλ‹€.
    즉, μ‹€μ œ 값은 λ‹€λ₯Έ κ³³(heap)에 있으며 값이 μžˆλŠ” μ£Όμ†Œλ₯Ό (stack에)κ°€μ§€κ³  μžˆμ–΄μ„œ λ‚˜μ€‘μ— κ·Έ μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•΄μ„œ 값을 κ°€μ Έμ˜¨λ‹€.
  • λ©”λͺ¨λ¦¬μ˜ νž™(heap)에 μ‹€μ œ 값을 μ €μž₯ν•˜κ³ , κ·Έ μ°Έμ‘°κ°’(μ£Όμ†Œκ°’)을 κ°–λŠ” λ³€μˆ˜λŠ” μŠ€νƒμ— μ €μž₯
  • μ°Έμ‘°ν˜• λ³€μˆ˜λŠ” null둜 μ΄ˆκΈ°ν™” μ‹œν‚¬ 수 μžˆλ‹€. 이 경우 λŸ°νƒ€μž„ μ‹œ, NullPointException μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.
νƒ€μž…ν¬κΈ°κΈ°λ³Έκ°’μ„€λͺ…μ˜ˆμ‹œ
String4 byte (μ£Όμ†Œκ°’)Nullλ¬Έμžμ—΄μ„ λ‹€λ£¨λŠ” 클래슀String name = "Alice";
Array4 byte (μ£Όμ†Œκ°’)Null동일 νƒ€μž… κ°’λ“€μ˜ μ§‘ν•©int[] scores = {90, 80, 70};
Class4 byte (μ£Όμ†Œκ°’)Nullμ‚¬μš©μž μ •μ˜ ν΄λž˜μŠ€λ‚˜ 객체Person p = new Person();
List, Map, Set4 byte (μ£Όμ†Œκ°’)Nullμ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬ 자료ꡬ쑰List<String> list = ...

4. μ—°μ‚°μž

μ—°μ‚°μž μš°μ„ μˆœμœ„

μˆœμœ„μ—°μ‚°μž
1( ), [ ]
2!, ~ , ++, --
3*, /, %
4+, -
5<<, >>, >>>
6<, <=, >, >=
7==, !=
8&
9^
10|
11&&
12||
13? : (μ‚Όν•­μ—°μ‚°μž)
14=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, ~=

1. μ‚°μˆ  μ—°μ‚°μž

μ’…λ₯˜μ„€λͺ…
-λΊ„μ…ˆ
*κ³±μ…ˆ
/λ‚˜λˆ—μ…ˆ
%λ‚˜λ¨Έμ§€

2. λΉ„νŠΈ μ—°μ‚°μž

μ’…λ₯˜μ„€λͺ…
&AND
|OR
^XOR
~NOT
<<ν”Όμ—°μ‚°μžμ˜ λΉ„νŠΈ 열을 쒌츑으둜 이동 ν›„ 빈 곡간은 0으둜 채움
>>ν”Όμ—°μ‚°μžμ˜ λΉ„νŠΈ 열을 였λ₯Έμͺ½μœΌλ‘œ 이동 ν›„ 빈 곡간에 μŒμˆ˜λŠ” 1, μ–‘μˆ˜λŠ” 0으둜 채움
>>>ν”Όμ—°μ‚°μžμ˜ λΉ„νŠΈ 열을 였λ₯Έμͺ½μœΌλ‘œ 이동 ν›„ λΉˆκ³΅κ°„μ€ 0으둜 채움

3. 관계 μ—°μ‚°μž

μ’…λ₯˜μ„€λͺ…
>크닀
>=ν¬κ±°λ‚˜ κ°™λ‹€
<μž‘λ‹€
<=μž‘κ±°λ‚˜ κ°™λ‹€
==κ°™λ‹€
!=κ°™μ§€μ•Šλ‹€

κ²°κ³Ό 값은 Booleanκ°’μœΌλ‘œ λ°˜ν™˜

4. 논리 μ—°μ‚°μž

μ’…λ₯˜μ„€λͺ…
&&AND
||OR
!NOT

결과값은 Booleanκ°’μœΌλ‘œ λ°˜ν™˜

πŸ’‘ &, |도 μ‚¬μš©ν•  수 μžˆλŠ”λ°,

int A = 2;
if(A > 0 && A > 1){
	System.out.println("μ°Έ");
}
if(A > 0 & A > 1){
	System.out.println("μ°Έ");
}

λ‹€λ₯Έ 점은 ( &, | )λŠ” ( &&, || )와 달리 이미 μ‘°κ±΄μ‹μ˜ κ²°κ³Όκ°€ 결정이 났닀고 해도 λͺ¨λ“  쑰건을 λκΉŒμ§€ κ²€μ‚¬ν•œλ‹€.

5. instanceof

객체의 νƒ€μž…μ„ ν™•μΈν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€. 결과값은 Boolean.
보톡 ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•œμ§€ 확인할 λ•Œ μ‚¬μš©ν•œλ‹€.

6. λŒ€μž…μ—°μ‚°μž

μ’…λ₯˜ |μ„€λͺ…

= λŒ€μž…
+= λ”ν•œ ν›„ λŒ€μž…
-= λΊ€ ν›„ λŒ€μž…
*= κ³±ν•œ ν›„ λŒ€μž…
/ λͺ«μ„ κ΅¬ν•œ ν›„ λŒ€μž…
% λ‚˜λ¨Έμ§€λ₯Ό κ΅¬ν•œ ν›„ λŒ€μž…
ν”Όμ—°μ‚°μžλŠ” 이항이며 μ΅œμ’…μ μœΌλ‘œ μš°λ³€μ˜ 값을 μ’Œλ³€μ˜ λŒ€μž…ν•΄ 쀌

7. ν™”μ‚΄ν‘œ(->) μ—°μ‚°μž

Java 8μ—μ„œ μΆ”κ°€λœ λžŒλ‹€ ν‘œν˜„μ‹, ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ ν‘œν˜„
ν™”μ‚΄ν‘œ μ—°μ‚°μžλ₯Ό ν†΅ν•΄μ„œ 읡λͺ… 클래슀λ₯Ό ν‘œν˜„ν•  수 있음
λžŒλ‹€μ‹μ€ λ©”μ„œλ“œκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λ˜λŠ” 것과 결과둜 λ°˜ν™˜λ˜λŠ” 것이 κ°€λŠ₯
(무지성 λžŒλ‹€μ‹μ„ μ‚¬μš©ν•  경우 μ½”λ“œ 가독성이 λ–¨μ–΄μ§„λ‹€κ³  ν•©λ‹ˆλ‹€,,)

new Thread(() ->{
System.out.println("λžŒλ‹€μ‹");
}).start();
8. 3ν•­ μ—°μ‚°μž
(쑰건) ? (true 경우 μ‹€ν–‰) : (false 경우 μ‹€ν–‰)
쑰건이 κΉŒλ‹€λ‘­μ§€ μ•Šμ„ 경우 ifλ¬Έ 보닀 μ½”λ“œλ₯Ό 쀄일 수 있음
κ·ΈλŸ¬λ‹€ 쑰건이 λ§Žμ•„μ§€λ©΄ 가독성이 μ•ˆ μ’‹μŒ!!
말 κ·ΈλŒ€λ‘œ ν”Όμ—°μ‚°μžλ₯Ό μ‚Όν•­ λ°›λŠ”λ‹€! λ‹‰κ°’πŸ‘

int a = 2;
int b = 1;
if (a > b){
System.out.println("μ°Έ");
}
System.out.println(a > b ? "μ°Έ" : "κ±°μ§“");

8. switch μ—°μ‚°μž

Java 12μ—μ„œ μΆ”κ°€λœ μ—°μ‚°μž
breakλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ 되고 return값이 μ‘΄μž¬ν•΄λ„ λœλ‹€.
case -> A의 ν˜•μ‹μœΌλ‘œ μ‚¬μš© κ°€λŠ₯
yield μ˜ˆμ•½μ–΄λ‘œ λ°˜ν™˜κ°’μ„ 미리 지정해놓을 수 있음

int score = 100;
// 기쑴 switch문
switch(score){
	case 100 : 
    	System.out.println("만점");
        break;
	case 0 :
    	System.out.println("빡점");
        break;
}
// μΆ”κ°€λœ switch μ—°μ‚°μž
switch(score){
	case 100 -> System.out.println("만점");
    case 0 -> System.out.println("빡점");
};

5. 쑰건문

IF

Switch-case

6. 반볡문

for

β€œfor 문은 반볡이 ν•„μš”ν•œ λͺ¨λ“  μƒν™©μ—μ„œ
κ°€μž₯ λ¨Όμ € λ– μ˜¬λ €μ•Ό ν•  κ°•λ ₯ν•œ 도ꡬ닀.

핡심 κ°œλ…μ„€λͺ… μš”μ•½
λ°˜λ³΅λ¬Έκ°™μ€ μ½”λ“œλ₯Ό μ—¬λŸ¬ 번 μ‹€ν–‰ν•˜λŠ” ꡬ쑰
for λ¬Έμ΄ˆκΈ°μ‹, 쑰건식, 증감식을 ν¬ν•¨ν•œ 반볡문
반볡 쑰건쑰건이 true일 λ™μ•ˆ 반볡 μˆ˜ν–‰
ν™œμš© μ˜ˆμ‹œλͺ©λ‘ 좜λ ₯, ꡬꡬ단, μ‹œκ³„ λ“± 반볡 둜직
πŸ”΄πŸŸ‘πŸŸ’

public static void run2() {
    for (int i = 1; i <=9; i++) {
        for (int j = 1; j <=9; j++) {
            System.out.printf("%d x %d = %2d  ", j, i, i*j);
        }
        System.out.println();
    }
}

▢️ κ²°κ³Ό

1 x 1 =  1  2 x 1 =  2  3 x 1 =  3  4 x 1 =  4  5 x 1 =  5  6 x 1 =  6  7 x 1 =  7  8 x 1 =  8  9 x 1 =  9  
1 x 2 =  2  2 x 2 =  4  3 x 2 =  6  4 x 2 =  8  5 x 2 = 10  6 x 2 = 12  7 x 2 = 14  8 x 2 = 16  9 x 2 = 18  
1 x 3 =  3  2 x 3 =  6  3 x 3 =  9  4 x 3 = 12  5 x 3 = 15  6 x 3 = 18  7 x 3 = 21  8 x 3 = 24  9 x 3 = 27  
1 x 4 =  4  2 x 4 =  8  3 x 4 = 12  4 x 4 = 16  5 x 4 = 20  6 x 4 = 24  7 x 4 = 28  8 x 4 = 32  9 x 4 = 36  
1 x 5 =  5  2 x 5 = 10  3 x 5 = 15  4 x 5 = 20  5 x 5 = 25  6 x 5 = 30  7 x 5 = 35  8 x 5 = 40  9 x 5 = 45  
1 x 6 =  6  2 x 6 = 12  3 x 6 = 18  4 x 6 = 24  5 x 6 = 30  6 x 6 = 36  7 x 6 = 42  8 x 6 = 48  9 x 6 = 54  
1 x 7 =  7  2 x 7 = 14  3 x 7 = 21  4 x 7 = 28  5 x 7 = 35  6 x 7 = 42  7 x 7 = 49  8 x 7 = 56  9 x 7 = 63  
1 x 8 =  8  2 x 8 = 16  3 x 8 = 24  4 x 8 = 32  5 x 8 = 40  6 x 8 = 48  7 x 8 = 56  8 x 8 = 64  9 x 8 = 72  
1 x 9 =  9  2 x 9 = 18  3 x 9 = 27  4 x 9 = 36  5 x 9 = 45  6 x 9 = 54  7 x 9 = 63  8 x 9 = 72  9 x 9 = 81  

while

  • 쑰건을 λ¨Όμ € κ²€μ‚¬ν•˜κ³  true λ©΄ 반볡 μ‹€ν–‰
//μ΄ˆκΈ°κ°’ μ„€μ •;
while (쑰건) {
	//λ°˜λ³΅ν•  μ½”λ“œ;
    //κ°’ ++/--;
}

❇️while 문을 μ“°λŠ” 경우
보톡 boolean으둜 true/false νŒλ³„ν•΄μ„œ loopκ°€ λŒμ•„κ°€λŠ” 상황에 많이 쓰인닀.
for문이 λ§€κ°œλ³€μˆ˜λ‘œ μ •μˆ˜ 1μ”© μ¦κ°€ν•˜λŠ” κ²½μš°μ— λŒ€ν•΄ μ‹€ν–‰ν•˜λŠ” 것과 μ•½κ°„ λ‹€λ₯΄λ‹€.

βœμž…λ ₯
<boolean a = true;
int b = 1;
while (a) {
	System.out.println(b);
    b++;
    if (b > 100) {
        a = false;
    }
}        

do-while

  • while문과의 차이점 : 쑰건문이 λ’€λ‘œ λ°°μΉ˜λ˜μ–΄ μžˆλ‹€. μ΅œμ†Œ ν•œ λ²ˆμ€ μ‹€ν–‰λœλ‹€.
  • μ˜ˆμ‹œ ) <자판기> 졜초 1번 '무엇을 κ³ λ₯΄μ‹œκ² μŠ΅λ‹ˆκΉŒ?' 같은 질문 μ‹€ν–‰
//μ΄ˆκΈ°κ°’ μ„€μ •;
do {
	//λ°˜λ³΅ν•  μ½”λ“œ;
    //κ°’ ++/--;
} while (쑰건);

break / continue

breakλŠ” νƒˆμΆœ, continueλŠ” κ±΄λ„ˆλ›°κΈ°!

πŸ”΄πŸŸ‘πŸŸ’

// 1λΆ€ν„° 20κΉŒμ§€ μ€‘μ—μ„œ 3의 λ°°μˆ˜λŠ” λΉ„μ›Œλ‘κ³  좜λ ₯ν•˜κ³  15 이상이 되면 λ©ˆμΆ”κΈ°

public static void func369() {
    for (int i = 1; i <= 20; i++) {
        if (i >= 15) {
            break;
        }
        if (i % 3 == 0) {
            System.out.printf("(  ) ");
            continue;
        }
        System.out.printf("%d ",i);
    }
}

▢️결과
1 2 (  ) 4 5 (  ) 7 8 (  ) 10 11 (  ) 13 14 

7. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°

profile
πŸ—‚οΈ hamstern

0개의 λŒ“κΈ€