[Java] μžλ°” 기초

2021. 2. 23. 06:00γ†κ°œλ… 정리 μž‘μ—…μ‹€/Java

728x90
λ°˜μ‘ν˜•

πŸ“Œ 2021λ…„ 02μ›” 17일 곡뢀 λ‚΄μš©

   πŸ“ Native Application


C, C++, Rust λ“±μœΌλ‘œ λ§Œλ“  Application 쀑에 λ°”λ‘œ μ‹€ν–‰ κ°€λŠ₯ν•œ App을 λ§ν•©λ‹ˆλ‹€.

 

객체 지ν–₯ 언어듀은 λŒ€λΆ€λΆ„ Virtual Machine이 쀑간에 κ»΄ μžˆλŠ” μƒνƒœ μž…λ‹ˆλ‹€. 즉, OS와 μ–Έμ–΄κ°„ μ€‘κ°„μž 역할을 ν•΄μ£Όκ³  있죠!

 

   πŸ“ 컴퓨터 λ‹¨μœ„


1 bit => 2μ§„μˆ˜ 1자리λ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” λ²”μœ„.

1 byte => 8bit 즉, 8개의 2μ§„μˆ˜λ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” λ²”μœ„.

1 word => 4byte 즉, 32개의 2μ§„μˆ˜λ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” λ²”μœ„. 

 

   πŸ“ λ³€μˆ˜ μ„ μ–Έ


 

μ„ μ–Έ μ‹œ 곡식: [μžλ£Œν˜• Type][λ³€μˆ˜λͺ…]

λ³€μˆ˜λŠ” μ‰½κ²Œ 말해 값을 μ €μž₯ν•˜λŠ” 곡간(μƒμž)라고 μƒκ°ν•˜μ‹œλ©΄ 되며, ν•˜λ‚˜μ˜ κ°’λ§Œ μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κΈ°λ³Έν˜•(Primitive): ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 미리 μ •ν•œ 것 μž…λ‹ˆλ‹€.

λ³€μˆ˜μ— 값을 μ €μž₯ν•˜λŠ” 것을 또 λ‹€λ₯Έ 말둜 λŒ€μž…ν•œλ‹€κ³  라고 ν•©λ‹ˆλ‹€. λŒ€μž… μ—°μ‚°μž [ = ]을 μ‚¬μš©ν•˜μ—¬, μ™Όμͺ½ λ³€μˆ˜μ— 였λ₯Έμͺ½ κ°’ (λ¦¬ν„°λŸ΄ ν˜Ήμ€ μƒμˆ˜λΌκ³ λ„ 함)을 μ €μž₯ν•©λ‹ˆλ‹€.

   - 이름이 μžˆλŠ” μƒμˆ˜λž€ λ¬΄μ—‡μΌκΉŒμš”? λŒ€μž… 연산을 μ•ˆν•˜λŠ” λ³€μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€.

κ°’(μƒμˆ˜ ν˜Ήμ€ λ¦¬ν„°λŸ΄)을 보면 λ³€μˆ˜μ˜ μžλ£Œν˜•μ„ κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 기본적으둜 μΈμ‹ν•˜λŠ” κ°’μ˜ μ’…λ₯˜λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

     - boolean(λ…Όλ¦¬ν˜•): True, False의 결과값이 λ‚˜μ˜΅λ‹ˆλ‹€.

     - byte(μ •μˆ˜ν˜•): 8bit의 값을 μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     - short(μ •μˆ˜ν˜•): 16bit (2byte)λ₯Ό μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     - int(μ •μˆ˜ν˜•): 32bit (4byte)λ₯Ό μ €μž₯ν•  수 있으며, μžλ£Œν˜• Type μ •μˆ˜ν˜• 쀑 κΈ°λ³Έν˜• μž…λ‹ˆλ‹€.

     - long(μ •μˆ˜ν˜•): 64bit (8byte)λ₯Ό μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     - float(μ‹€μˆ˜ν˜•): 32bit (4byte)λ₯Ό μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     - double(μ‹€μˆ˜ν˜•) 64bit (8byte)λ₯Ό μ €μž₯ν•  수 있으며, μžλ£Œν˜• Type μ‹€μˆ˜ν˜• 쀑 κΈ°λ³Έν˜• μž…λ‹ˆλ‹€.

     - char(λ¬Έμžν˜•): 16bit (2byte)λ₯Ό μ €μž₯ν•  수 있으며, μžλ£Œν˜• Type λ¬Έμžν˜• 쀑 κΈ°λ³Έν˜• μž…λ‹ˆλ‹€.

     - Reference(μ°Έμ‘°ν˜•): Classν˜•μ΄λΌκ³  ν•˜λ©°, 첫 κΈ€μžλŠ” λŒ€λ¬Έμžλ‘œ ν‘œν˜„ λ©λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ Spring(λ¬Έμžμ—΄)이 μžˆμŠ΅λ‹ˆλ‹€.

float ff = 10.33F;

// float μžλ£Œν˜•μ„ μ„ μ–Έν•˜κ³ , ffλŠ” λ³€μˆ˜λͺ… μž…λ‹ˆλ‹€. ff에 10.33F μ—¬κΈ°μ„œ FλŠ” floatλ₯Ό λ‚˜νƒ€λ‚΄λ©°, floatλŠ” μ‹€μˆ˜ν˜•μ˜ κΈ°λ³Έν˜•μ΄ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— λ¦¬ν„°λŸ΄ 뒀에 κΌ­ λΆ™ν˜€ μ£Όμ…”μ•Ό ν•©λ‹ˆλ‹€.

 

 

long il = 100;

// μ΄λ ‡κ²Œ μ„ μ–Έν•˜λ©΄ 100μ΄λΌλŠ” 수λ₯Ό int 즉, μ •μˆ˜λ‘œ 보게 λ©λ‹ˆλ‹€.
// μ •μˆ˜ν˜• μžλ£Œν˜•μΈ intλŠ” long보닀 μ €μž₯ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ μš©λŸ‰μ΄ μž‘μŠ΅λ‹ˆλ‹€.
// κ·Έλ ‡κΈ° λ•Œλ¬Έμ— Exception없이 μžλ™ ν˜• λ³€ν™˜μ„ 톡해 μ €μž₯ λ©λ‹ˆλ‹€.

long il = 100L;

// 이 ν‘œν˜„μ€ longμ΄λΌλŠ” μžλ£Œν˜•μ„ 가진 ilμ΄λΌλŠ” λ³€μˆ˜μ— 100μ΄λΌλŠ” μ •μˆ˜λ₯Ό λ‹΄κ² λ‹€λŠ” 것인데,
// 100 뒀에 L이 뢙은 것은 Long이 μ •μˆ˜ν˜• λ³€μˆ˜μ— κΈ°λ³Έν˜•μ΄ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— λΆ™ν˜€μ€˜μ•Ό ν•©λ‹ˆλ‹€.

 

 

  πŸ“ μ •μˆ˜λž€?


기본적으둜 μ •μˆ˜λΌκ³  함은 μ‹­μ§„μˆ˜λ₯Ό λœ»ν•©λ‹ˆλ‹€.

μƒμˆ˜μ— 0X λΌλŠ” 접두λ₯Ό 적으면 16진법을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

즉, 0X10; dms 16진법 10을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€!

int n = 0X10;
System.out.println(n)

// 이 κ²°κ³Ό 좜λ ₯λ˜λŠ” 값은 μ‹­μ§„μˆ˜ 값이 좜λ ₯ λ©λ‹ˆλ‹€.

System.out.println(Integer.toHexString(n));

// μ΄λ ‡κ²Œ 좜λ ₯ν•˜λ©΄ 16μ§„μˆ˜ 값이 결과둜 좜λ ₯ λ©λ‹ˆλ‹€.

System.out.println(Integer.toBinaryString(n));

// μ΄λ ‡κ²Œ 좜λ ₯ν•˜λ©΄ 8μ§„μˆ˜ 값이 결과둜 좜λ ₯ λ©λ‹ˆλ‹€.

 

μƒμˆ˜μ— 0μ΄λΌλŠ” 접두λ₯Ό 적으면 8진법을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 010; μ΄λΌλŠ” 것은 8진법 10을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

λ˜ν•œ, μƒμˆ˜μ— 0B라고 접두λ₯Ό 적으면 2진법을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 0B10;은 2진법 10을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

 

 

  πŸ“ λΉ„νŠΈμ—°μ‚°μž


2μ§„μˆ˜ μ—°μ‚°μžλ₯Ό λœ»ν•˜λ©°, 이것을 μ‚¬μš©ν•˜λ©΄ μœ„μ˜ Integer.toBinaryString(λ³€μˆ˜λͺ…); ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό νŽΈν•  것 μž…λ‹ˆλ‹€.

 

 

  πŸ“ μ½”λ“œ μž‘μ„±λ²•


1. java νŒŒμΌμƒμ„± (Class)

2. μ•„λž˜ μ°Έκ³ 

// μ•„λž˜λ₯Ό Class μ •μ˜ 라고 ν•©λ‹ˆλ‹€.

public class [classλͺ…] {
    // 이 μ•ˆμ— μ‹€ν–‰ν•˜λ €λŠ” λ‚΄μš©μ„ μž‘μ„± ν•©λ‹ˆλ‹€.
}

 

  πŸ“ ν•¨μˆ˜λž€?


처리의 λ‹¨μœ„(κΈ°λŠ₯): ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κΈ° μœ„ν•œ λΆ€ν’ˆ(λͺ¨λ“ˆ) 이라고 λΉ„μœ  ν•©λ‹ˆλ‹€.

즉, 말둜 ν‘œν˜„ν•˜μžλ©΄ 동사에 ν‘œν˜„ν•˜λŠ” 것을 ν•˜λŠ” 것이라고 ν•  수 μžˆλŠ”λ°, 예λ₯Ό λ“€μ–΄ ~을 ν•˜μ„Έμš”, ~ 움직여라 등등을 ν•¨μˆ˜λ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜μ˜ μ •μ˜ ν˜Ήμ€ ν•¨μˆ˜μ˜ κ΅¬ν˜„ 곡식은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

[λ°˜ν™˜μžλ£Œν˜•] [ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜ ν˜Ήμ€ Argument λ˜λŠ” 인자라고 함)] {

}


Scanner input new Scnner();
String keyboard = input.nextInt();

// 이것은 ScannerλΌλŠ” ν•¨μˆ˜λ₯Ό μƒˆλ‘œ λ§Œλ“€κ²ƒμΈλ°, 이름은 input이라고 ν•  κ±°μ•Ό.
// κ·Έ inputμ΄λΌλŠ” ν•¨μˆ˜ μ•ˆμ— nextInt(); ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ ν‚€λ³΄λ“œ μž…λ ₯값을 μ •μˆ˜λ‘œ λ°›μ•„ λ¬Έμžμ—΄ μžλ£Œν˜• λ³€μˆ˜ keyboardμ—κ²Œ 넣을 것이야.
// 이런 의미 μž…λ‹ˆλ‹€.

 

μ—¬κΈ°μ„œ λ°˜ν™˜ μžλ£Œν˜•μ€ '무엇을 λ°˜ν™˜' 인데, λ°˜ν™˜ν•  λ‚΄μš©μ΄ μžˆλ‹€λ©΄ ν•¨μˆ˜ μ•ˆμ— return이 λ‚˜μ™€μ•Ό ν•˜κ³ , λ°˜ν™˜ μžλ£Œν˜•μ— λ§žλŠ” 값을 μ μ–΄μ€˜μ•Ό ν•©λ‹ˆλ‹€.

ν•¨μˆ˜λͺ…은 '~ν•¨μˆ˜', λ§€κ°œλ³€μˆ˜λŠ”  ' ~ 전달 λ°›λŠ”'이라고 ν‘œν˜„ν•  수 있고, μ‹œν—˜ 같은 곳에 μ΄λŸ°μ‹μœΌλ‘œ λ‚˜μ˜¨λ‹€κ³  ν•˜λ„€μš”!

그럼 λ„λŒ€μ²΄ MethodλŠ” λ¬΄μ—‡μΌκΉŒμš”? MethodλŠ” Class μ•ˆμ— μžˆλŠ” ν•¨μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€. κ²°κ΅­ JavaλŠ” λͺ¨λ‘ Class μ•ˆμ—μ„œ μ‹€ν–‰ λ‚΄μš©μ„ μ •μ˜ν•  수 있기 λ•Œλ¬Έμ— λͺ¨λ“  ν•¨μˆ˜λŠ” MethodλΌλŠ” κ²ƒμ΄μ§€μš”. λ˜λ„λ‘ ν•¨μˆ˜ 말고, Method라고 ν‘œν˜„ν•˜λŠ” 것이 덜 ν—·κ°ˆλ¦¬μ‹€ 것 κ°™μŠ΅λ‹ˆλ‹€!

 

ν•¨μˆ˜ λ§Œλ“€κΈ° μ˜ˆμ‹œ

public static void main (String[] args) {

// μžλ£Œν˜• νƒ€μž…μ΄ μ •μˆ˜μΈ todoλΌλŠ” ν•¨μˆ˜λŠ” 전달값이 main Method의 μΈμžκ°’ argsλ₯Ό λ°›μ•„ λ¬Έμžν˜•μœΌλ‘œ μ „λ‹¬ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“ λ‹€. 
	int todo(char args);{
    // intν˜•μœΌλ‘œ μžλ£Œν˜•μ„ λ§Œλ“€μ—ˆκΈ° λ•Œλ¬Έμ— λ°˜ν™˜κ°’μ„ int 값에 λ§žλŠ” μ •μˆ˜ν˜•μœΌλ‘œ μ€˜μ•Ό ν•œλ‹€.
		return 0;
   }
}

 

Class μ•ˆμ— ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜κ³ , ν•¨μˆ˜ μ•ˆμ—λŠ” μ‹€ν–‰ν•  λ‚΄μš©μ„ μž‘μ„±ν•˜λŠ” 것 μž…λ‹ˆλ‹€.

 

그럼 ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” μš”λ Ήμ€ 무엇이 μžˆμ„κΉŒμš”?

μ‹€ν–‰(호좜) μ‹œν‚€λŠ” 방법을 λ¨Όμ € κ²°μ •ν•˜λŠ” 것이 μ’‹λ‹€κ³  ν•©λ‹ˆλ‹€!

λ˜ν•œ, ν•¨μˆ˜(Method)λŠ” ν•¨μˆ˜(Method)μ•ˆμ— μ •μ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. main도 Method인 것 μ•„μ‹œμ£ ? κ·Έλ ‡κΈ° λ•Œλ¬Έμ— main μ•ˆμ— ν•¨μˆ˜λŠ” λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€.

 

   πŸ“ Eclipse


        πŸ‘‰ ν”„λ‘œκ·Έλž¨ 싀행법

μ½˜μ†”μ—μ„œ μ‹€ν–‰ μ‹œ main Methodκ°€ κΌ­ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

Eclipse λ‚΄μ˜ Run asλ₯Ό 톡해 java application으둜 μ‹€ν–‰ ν•©λ‹ˆλ‹€.


        πŸ‘‰ μ‚­μ œ 참고사항

κΉ”λ”ν•˜κ²Œ OSμ—μ„œ μ§€μš°κ³  싢을 λ•ŒλŠ” eclipse.ini νŒŒμΌμ•ˆμ— 적인 경둜 μ•ˆμ— λͺ¨λ“  νŒŒμΌμ„ μ‚­μ œ ν•΄ μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

 

              πŸ’‘ μ•„ν•˜!

접두, μ ‘λ―Έλž€? 접두(머리)λŠ” 진법에 λŒ€ν•œ 것을 이야기 ν•˜λ©°, μ ‘λ―Έ(꼬리)λŠ” μžλ£Œν˜•μ— λŒ€ν•œ 것을 이야기 ν•œλ‹€κ³  ν•˜λ„€μš”!

좜λ ₯을 ν•˜λ €λ©΄ 어디에 (ν™”λ©΄) 무엇을 (μ–΄λ–€ κ°’)이 κΌ­ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€!

// μ˜ˆμ‹œ

System.out.println(좜λ ₯ν•˜λ €λŠ” λ³€μˆ˜λͺ…);

// ()μ•ˆμ— 값은 인자라고 λΆ€λ₯΄λ©°, μΈμžλŠ” ν•¨μˆ˜μ—κ²Œ 값을 μ „λ‹¬ν•œλ‹€κ³  μ΄ν•΄ν•˜λ©΄ λ©λ‹ˆλ‹€!

System.out.printlnμ—μ„œ System은 컴퓨터 자체λ₯Ό μ΄μ•ΌκΈ°ν•˜κ³ , κ·Έ μ•ˆμ— out은 μ½˜μ†”μ— 좜λ ₯ μž₯치 즉, λͺ¨λ‹ˆν„°λ₯Ό λœ»ν•˜λŠ” 것이며, . (점)은 'μ•ˆμ—' λΌλŠ” 의미이며, κ·Έ μ•ˆμ— printλ₯Ό ν•˜λŠ”λ° ln (Line) λ‹¨μœ„λ‘œ 해라 λΌλŠ” 의미 μž…λ‹ˆλ‹€.

즉, '컴퓨터 μ•ˆμ— 좜λ ₯ μ•ˆμ— μžˆλŠ” Printλ₯Ό μ΄μš©ν•΄μ„œ, Line λ‹¨μœ„λ‘œ Print해라'둜 ν’€μ–΄ μ“Έ 수 μžˆκ² λ‚΄μš”!

 

728x90
λ°˜μ‘ν˜•