• Home
  • About
    • on Weekend photo

      on Weekend

      ๐™Ž๐™ฉ๐™ช๐™™๐™ฎ๐™ž๐™ฃ๐™œ

    • Learn More
    • Instagram
    • Github
  • Archive
    • All Posts
    • All Tags
    • All Categories
  • Categories
    • Problem Solving
    • TIL
    • Study
    • Etc
    • ํ•„์‚ฌ
  • Projects

Java Programming 1

21 Dec 2020

์ˆ˜๊ฐ• ๋„์„œ

Do it! ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ

๊ณต๋ถ€ ๋ชฉํ‘œ

  1. java ๋ณต์Šต (1)
    • ํ•™๋ถ€ ๋•Œ ์ˆ˜๊ฐ•ํ–ˆ๋˜ java ์–ธ์–ด ๊ธฐ๋ณธ ๋ณต์Šต
    • ๋ณต์Šต ๋‚ด์šฉ : ์ž๋ฃŒํ˜•, ์—ฐ์‚ฐ์ž, ์ œ์–ด๋ฌธ, ํด๋ž˜์Šค์™€ ๊ฐ์ฒด
  2. java ๊ณต๋ถ€ (2)
    • ํ•™๋ถ€ ๋•Œ ์ˆ˜๊ฐ•ํ–ˆ์œผ๋‚˜ ๋Œ€์ถฉ ๊ณต๋ถ€ํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋˜ ๋ถ€๋ถ„ ๋ณต์Šต
    • ๋ณต์Šต ๋‚ด์šฉ
    • ํด๋ž˜์Šค์™€ ๊ฐ์ฒด : ์ธํ„ฐํŽ˜์ด์Šค, ์ƒ์„ฑ์ž
    • this ์˜ˆ์•ฝ์–ด
    • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด (static ์‘์šฉ) => ์—ฌ๊ธฐ๊นŒ์ง€ ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ(~197p)
    • ArrayList
    • ์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ : super, ๋‹ค์šด์บ์ŠคํŒ…, instanceof
    • ์ถ”์ƒ ํด๋ž˜์Šค
    • ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋‹คํ˜•์„ฑ
  3. java jdk ๊ณต๋ถ€
    • ๊ธฐ๋ณธ ํด๋ž˜์Šค (Object, String, Wrapper, Class)
    • ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ (์ œ๋„ค๋ฆญ ๋“ฑ)
    • ๋‚ด๋ถ€ ํด๋ž˜์Šค, ๋žŒ๋‹ค, ์ŠคํŠธ๋ฆผ
    • ์˜ˆ์™ธ์ฒ˜๋ฆฌ
    • ์ŠคํŠธ๋ฆผ ์ž…์ถœ๋ ฅ, ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™”

JVM
  • ์ž๋ฐ” ์ปดํŒŒ์ผ์‹œ *.class ํŒŒ์ผ ์ƒ์„ฑ(๋ฐ”์ดํŠธ ์ฝ”๋“œ, ์ค‘๊ฐ„๊ธฐ๊ณ„์–ด) => JRE(Java Runtime Environment;์ž๋ฐ”์‹คํ–‰ํ™˜๊ฒฝ)์ด OS์— ๋งž๋Š” JVM ์œ„์—์„œ *.class ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค.
  • JIT(Just In Time) ์ปดํŒŒ์ผ๋Ÿฌ : ์‹คํ–‰ ์‹œ์ ์— ๊ธฐ๊ณ„์–ด๋ฅผ ์ƒ์„ฑํ•˜๋˜, ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋ณต๋˜๋ฉด ์ด์ „์— ๋งŒ๋“  ๊ธฐ๊ณ„์–ด๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค. (์‹คํ–‰ ์†๋„ ์ƒ์Šน)
์ž๋ฃŒํ˜• ์—†๋Š” ๋ณ€์ˆ˜ํ˜• var (java10~)
  • ์ง€์—ญ ๋ณ€์ˆ˜ ์ž๋ฃŒํ˜• ์ถ”๋ก (local variable type inference)์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ž๋ฃŒํ˜• ์—†์ด var type์œผ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๋™์ž‘ ๋ฐฉ์‹ : ๋ณ€์ˆ˜์— ๋Œ€์ž…๋˜๋Š” ์ž๋ฃŒ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ถ”์ธก
    • ์ง€์—ญ ๋ณ€์ˆ˜๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
์ƒ์ˆ˜ ์„ ์–ธ
  • final ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์ˆ˜ ์„ ์–ธ
๋ฆฌํ„ฐ๋Ÿด
  • ๋ณ€์ˆ˜์— ๋Œ€์ž…๋˜๋Š” ๊ฐ’์„ ๋ถ€๋ฅด๋Š” ์šฉ์–ด์ธ ๋“ฏ. ๋ฆฌํ„ฐ๋Ÿด ํ˜น์€ ๋ฆฌํ„ฐ๋Ÿด ์ƒ์ˆ˜๋ผ๊ณ  ๋งํ•œ๋‹ค.
  • ๋™์ž‘ ๋ฐฉ์‹ : ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ์ƒ์ˆ˜ ํ’€(constant pool)์— ๋กœ๋”ฉ๋œ ํ›„ ๋ณ€์ˆ˜์— ๋ณต์‚ฌ.
switch case
case 1 : case 3 : case 5 : ... : day = 31;
  break;
case 4 : case 6 : case 9 : case 11 : day = 30;
  break;
case 2 : day = 28;
  break;
  • ์‹ค์ œ๋กœ ์“ธ ์ผ์€ ์—†๊ฒ ๋‹ค๋งŒ ์ด๋ ‡๊ฒŒ case๋ฅผ ๋‚˜์—ดํ•˜๋Š” ์Šค์œ„์น˜ ๋ฌธ๋„ ๊ฐ€๋Šฅ.. ใ…‹ใ…‹ใ…‹
  • java7 ~ case๊ฐ’์— ๋ฌธ์ž์—ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ (equals() ์•ˆ์จ๋„ ๋จ)

์ธ์Šคํ„ด์Šค (์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜)

  • ํด๋ž˜์Šค๋ผ๋Š” ํ‹€์—์„œ ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด
  • ๋™์ž‘ ์›๋ฆฌ
    • ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜ ํ˜ธ์ถœํ•˜๋ฉด ์ธ์Šคํ„ด์Šค๊ฐ€ ํž™์— ์ƒ์„ฑ
    • ์ง€์—ญ๋ณ€์ˆ˜ studentAhn์— ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค ๋Œ€์ž… => ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋œ ์ง€์—ญ ๋ณ€์ˆ˜ studentAhn์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํž™ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋Œ€์ž…
  • this๋ฅผ ํ†ตํ•ด ์Šค์Šค๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ static ๋ณ€์ˆ˜

  • ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ”์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด 1ํšŒ ํ• ๋‹น๋˜๊ณ , ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ทธ ๊ฐ’์„ ๊ณต์œ ํ•œ๋‹ค.
  • ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ์ง์ ‘ ์ฐธ์กฐํ•ด์•ผ ํ•œ๋‹ค.
  • ์ด๋Ÿฌํ•œ ์ง์ ‘ ์ฐธ์กฐ๋ฅผ ์ง€์–‘ํ•˜๊ณ ์ž ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ(=static ๋ฉ”์„œ๋“œ)๊ฐ€ ์กด์žฌ, ๊ธฐ์กด์˜ static ๋ณ€์ˆ˜๋ฅผ private์œผ๋กœ ๋ฐ”๊พธ๊ณ  public static int getSerialNum()์ด๋Ÿฐ ์‹์œผ๋กœ getter setter๋ฅผ ๋ฉ”์„œ๋“œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
  • ์œ ํšจ ๋ฒ”์œ„ : ํ”„๋กœ๊ทธ๋žจ ์˜์—ญ ์ค‘ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ƒ์„ฑ

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด

  • ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด
  • ๊ตฌํ˜„
    1. private ์ƒ์„ฑ์ž ๋งŒ๋“ค๊ธฐ
      ์™ธ๋ถ€ ํด๋ž˜์Šค์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก
    2. ํด๋ž˜์Šค ๋‚ด๋ถ€์— static์œผ๋กœ ์œ ์ผํ•œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
      ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    3. ์™ธ๋ถ€์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” public ๋ฉ”์„œ๋“œ ์ƒ์„ฑ
      private์œผ๋กœ ์„ ์–ธํ•œ ์œ ์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก public ๋ฉ”์„œ๋“œ ์ƒ์„ฑํ•˜์—ฌ ์œ ์ผํ•˜๊ฒŒ ์ƒ์„ฑํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. ๋‹จ, ์ธ์Šคํ„ด์Šค ๋ฐ˜ํ™˜ ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ static์œผ๋กœ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค. (์ธ์Šคํ„ด์Šค ์ƒ์„ฑ๊ณผ ์ƒ๊ด€์—†์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ)
public class Company {
  private static Company instance = new Company();
  private Company() { }
  ...
  public static Company getInstance() {
    if(instance == null) {
      instance = new Company();
    }
    return instance;
  }
}
  1. ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ๋งŒ๋“ค๊ธฐ
public class CompanyTest() {
  public static void main(String[] args) {
    Company myCompany1 = Company.getInstance();
    Company myCompany2 = Company.getInstance();
    System.out.println(myCompany1 == myCompany2);
  }
}
  • ์ฝ˜์†”์— true๊ฐ€ ์ถœ๋ ฅ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


javabackend Share Tweet +1