BackEnd๐Ÿงต

2023.04.17 TIL(JAVA ๊ธฐ๋ณธ)

hae02y 2023. 4. 19. 01:20
๋ฐ˜์‘ํ˜•

 

๐Ÿ‘€Today...


์˜ค๋Š˜๋ถ€ํ„ฐ ์ž๋ฐ” ๊ธฐ์ดˆ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค.๐Ÿ‘ถ ์ •์ฒ˜๊ธฐ์ค€๋น„์— ๋ฐฉํ†ต๋Œ€๊นŒ์ง€ ๊ฒน์น˜๋‹ˆ๊นŒ ํ•˜๋ฃจ๊ฐ€ ์ง„์งœ ์ˆœ์‚ญ๋‹นํ•œ๋‹ค...ใ…‹ใ…‹ใ…‹ใ…‹

๊ทธ๋ž˜๋„ ์†Œ์†Œํ•œ ํ–‰๋ณต์„ ์ฐพ๋Š” ์‚ฌ๋žŒ์ด๋˜์ž~^^ ํ• ์ˆ˜์žˆ๋‹ค. ํ™”์ดํŒ…!

 

 

โ˜•์˜ค๋Š˜์˜ TIL(Today I Learn)


๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…

# ์ˆœ์„œ

  • JDK ์„ค์น˜ 
  • IntelliJ ์„ค์น˜
  • JetBrains Toolbox ์„ค์น˜
  • ์ž๋ฐ” ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • (windows)

์ž๋ฐ” JDK ์„ค์น˜์˜ ๊ฒฝ์šฐ๋Š” ๋ฉ”๋‰ด์–ผ์„ ๋ณด๊ณ  ๋”ฐ๋ผํ•˜๋ฉด ๊ธˆ๋ฐฉ ์ ์šฉํ• ์ˆ˜์žˆ์—ˆ๋‹ค. JDK๋ฒ„์ „์˜ ๊ฒฝ์šฐ์— ํ˜„์žฌ 17๋ฒ„์ „๊นŒ์ง€ ์ถœ์‹œ๋˜์—ˆ๋Š”๋ฐ ์‹ค์Šต๊ฐ„์—๋Š” 11๋ฒ„์ „์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‹ค์Œ์€ ์ž๋ฐ” 8-16๋ฒ„์ „ ๋ ˆํผ๋Ÿฐ์Šค์™€ 17๋ฒ„์ „ ํŠน์ง•์ด ์ •๋ฆฌ๋œ ๋ ˆํผ๋Ÿฐ์Šค์ด๋‹ค.

https://blogs.oracle.com/java/post/announcing-java17

https://blogs.oracle.com/javakr/post/java8-16

๋ฒ„์ „๋’ค์— ๋ถ™์–ด์žˆ๋Š” LTS(Long Term Support)๋ž€ ๊ฐœ๋ฐœ๋„๊ตฌ์— ๋Œ€ํ•ด ์žฅ๊ธฐ์ ์ธ ๊ด€๋ฆฌ์™€ ์ง€์›์ด ๋˜๋Š” ๋ฒ„์ „์„ ์˜๋ฏธํ•˜๊ณ  ์ผ๋ฐ˜๋ฒ„์ „๊ณผ ๋‹ฌ๋ฆฌ ์•ˆ์ •์„ฑ์— ์ค‘์ ์„ ๋‘์—ˆ๋‹ค๊ณ  ํ• ์ˆ˜์žˆ๋‹ค.

 

 

์ž๋ฐ”(JAVA) ๋ž€?

JAVA๋Š” 1991๋…„ ์ฌ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ์‚ฌ์—์„œ ์ œ์ž„์Šค ๊ณ ์Šฌ๋ง์ด ๊ณ ์•ˆํ•˜์˜€๊ณ , ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด์ด๋‹ค(Object Oriented Programming, OOP). ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๊ณ  "Write Once, Run Anywhere" ์ด๋ผ๋Š” ์Šฌ๋กœ๊ฑด์„ ๋‚ด์„ธ์šฐ๊ณ  ์žˆ๋‹ค. ๊ตญ๋‚ด์—์„œ๋Š” ์ „์ž์ •๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์— ์‚ฌ์šฉ๋˜๋ฉด์„œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ถ„์•ผ์—์„œ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ ์žˆ๋‹ค.

 

# ์ž๋ฐ”์˜ ํŠน์ง•

  • ์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ด๋‹ค.
  • ์ด์‹์„ฑ์ด ๋†’๋‹ค. (JVM์ด ์„ค์น˜๋œ ๋ชจ๋“  ์žฅ์น˜์—์„œ ๋™์ž‘)
  • ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์ด์ž ์ปดํŒŒ์ผ์–ธ์–ด์ด๋‹ค.(ํ•˜์ด๋ธŒ๋ฆฌ๋“œ)
  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.(Garbage Collector)
  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.
  • ๋™์  ๋กœ๋”ฉ์„ ์ง€์›ํ•œ๋‹ค.
  • ๋ถ„์‚ฐํ™˜๊ฒฝ์„ ์ง€์›ํ•œ๋‹ค.
  • ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ’๋ถ€ํ•˜๋‹ค.

# ๋‹จ์ 

C++, C์™€ ๊ฐ™์€ ์–ธ์–ด๋“ค์— ๋น„ํ•ด ์‹คํ–‰์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค. ์ด๋Š” ์‹คํ–‰์„ ์œ„ํ•ด ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ ์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ํ•™๋ถ€์ƒ์ผ๋•Œ ์ž๋ฐ”๋ฅผ ๊ธฐํ”ผํ–ˆ๋˜ ์ด์œ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ, ์ฝ”๋“œ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ๋‹ค...๊ฐ™์€ ์ถœ๋ ฅ์„ ๋‹ค๋ฅธ์–ธ์–ด๋กœ ์ฝ”๋”ฉํ–ˆ์„๋•Œ๋ณด๋‹ค ํ›จ์”ฌ ๊ธธ๊ฒŒ ๋Š๊ปด์ง„๋‹ค. 

 

 

ํƒ€์ž…

# ๋ณ€์ˆ˜

๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ , ์‚ฌ๋žŒ์ด ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ๋ถ™์ธ ๊ฒƒ.

 

# ๋ณ€์ˆ˜ ๋ช…๋ช… ๊ทœ์น™

์ด์ „์— ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…ํ–ˆ๋˜ ๊ธ€์ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜๊ธฐ..!

2021.02.26 - [Web๐Ÿ•ธ๏ธ/FE] - [ํŒ] ์นด๋ฉœ ์ผ€์ด์Šค / ์ผ€๋ฐฅ ์ผ€์ด์Šค / ํŒŒ์Šค์นผ ์ผ€์ด์Šค / ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค ๋ž€?

์•„๋ž˜๋Š” ์ž๋ฐ”๋ช…๋ช…๊ทœ์น™์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค์ด๋‹ค.

https://www.oracle.com/java/technologies/javase/codeconventions-namingconventions.html

 

#์ƒ์ˆ˜

JAVA์—์„œ ์ƒ์ˆ˜๋Š” final ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์„ ์–ธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์ˆ˜์˜ ์„ ์–ธ์€ ๋Œ€๋ฌธ์ž์— ์–ธ๋”๋ฐ”๋ฅผ ๋„ฃ๋Š”(SCREAMING_SNAKE_CASE)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

final double PI = 3.14;

์ƒ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

1. ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉฐ์„œ ๊ฐ’์ด ๋ณ€ํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ

2. ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

3. ์ฝ”๋“œ ์œ ์ง€๊ด€๋ฆฌ๋ฅผ ์†์‰ฝ๊ฒŒ ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ

 

# ์ •์ˆ˜ / ์‹ค์ˆ˜ ํƒ€์ž…

๊ตฌ๋ถ„ ํƒ€์ž… ๋ฉ”๋ชจ๋ฆฌ ํ‘œํ˜„ ๋ฒ”์œ„
์ •์ˆ˜ byte 1byte -128(-27) ~ 127(27 - 1)
์ •์ˆ˜ short 2byte -32,768(-215) ~ 32,767(215 - 1)
์ •์ˆ˜ int 4byte -2,147,483,648(-231) ~ 2,147,483,647(231 - 1)
์ •์ˆ˜ long 8byte -9,223,372,036,854,775,808(-263) ~ 9,223,372,036,854,775,807(263 - 1)
์‹ค์ˆ˜ float 4byte ์Œ์ˆ˜ : -3.4 * 1038 ~ -1.4 * 10-45
์–‘์ˆ˜ : 1.4 * 10-45 ~ 3.4 * 1038
์‹ค์ˆ˜ double 8byte ์Œ์ˆ˜ : -1.8 * 10308 ~ -4.9 * 10-324
์–‘์ˆ˜ : 4.9 * 10-324 ~ 1.8 * 10308
๋…ผ๋ฆฌ boolean 1byte true / false
๋ฌธ์ž char 2byte -

* floatํƒ€์ž… , longํƒ€์ž…์˜ ๊ฒฝ์šฐ ๋ฆฌํ„ฐ๋Ÿด์— f ,L์„ ์ ‘๋ฏธ์‚ฌ๋กœ ๋ถ™์—ฌ์ค˜์•ผํ•œ๋‹ค.

* char๋กœ ๋ฆฌํ„ฐ๋Ÿด ์ž‘์„ฑ์‹œ ์ž‘์€๋”ฐ์˜ดํ‘œ(' ')๋ฅผ ์‚ฌ์šฉ. ํฐ๋”ฐ์˜ดํ‘œ(" ") ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด๋กœ ์ธ์‹๋œ๋‹ค.

 

 

๋ฌธ์ž์—ด

์ž๋ฐ”์—์„œ ๋ฌธ์ž์—ด์€ String ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค. String ํƒ€์ž…์€ ํฐ๋”ฐ์˜ดํ‘œ(" ")๋กœ ๊ฐ์‹ธ์ง„ ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•˜๊ณ  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

// ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ String ํƒ€์ž…์˜ ๋ณ€์ˆ˜ str์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•
String str = "haeyoung";

// String ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•
String str = new String("haeyoung");

 

# ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ

1. length()

2. charAt()

3. compareTo()

4. concat()

5. indexOf()

6. trim()

7. toLowerCase() / toUpperCase()


๐Ÿ‘Šํ˜ผ์ž์„œ ํ•ด๊ฒฐํ•˜๊ธฐ


1. StringTokenizer ์ดํ•ดํ•˜๊ธฐ

 

2. StringBuilder / StringBuffer ์ดํ•ดํ•˜๊ธฐ

 

3. ์šฐ๋ถ„ํˆฌ JetBrains ToolBox ์„ค์น˜๊ด€๋ จ ์—๋Ÿฌ

๊ด€๋ จ ๋ ˆํผ๋Ÿฐ์Šค

https://askubuntu.com/questions/1410885/how-to-install-jetbrains-toolbox-in-ubuntu-22-04-lts

sudo apt-get install -y libfuse2

 

๋ฐ˜์‘ํ˜•