1 minute read

๐Ÿ“– Java ์งˆ๋ฌธ ๋ชจ์Œ์ง‘

๐Ÿ“– Java ์งˆ๋ฌธ ๋ชจ์Œ์ง‘


1 JVM


๐Ÿ„ Java๋Š” ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด JVM์€ ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚œ๊ฐ€?

  • ์•„๋‹ˆ๋‹ค. JVM์ด ํ”Œ๋žซํผ์— ์ข…์†์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, .classํŒŒ์ผ์ด ํ”Œ๋žซํผ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ์ „๋ถ€ ๋™์ผํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ„ Java๊ฐ€ C๋‚˜ C++๊ฐ™์€ ์–ธ์–ด๋ณด๋‹ค ๋Š๋ฆฐ ์ด์œ ?


๐Ÿ„ Jit Compiler๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ปดํŒŒ์ผ ํ•˜์—ฌ Native Code๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ์ด๋•Œ, Native Code๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”๊ฐ€?


๐Ÿ„ ์ž๋ฐ”์—๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์—†๋Š”๊ฐ€?


2 ๋žŒ๋‹ค์‹


๐Ÿ„ ๋žŒ๋‹ค์‹๊ณผ ์ต๋ช… ํ•จ์ˆ˜๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์„œ๋กœ ๊ฐ™์€ ๊ฒƒ์ธ๊ฐ€?


3 ์ƒ์†


๐Ÿ„ int num1 = null;์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
๋ฐ˜๋ฉด, Integer num2 = null; ์€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์‹ฌ์ง€์–ด if(null==num2)์™€ ๊ฐ™์€ ์‹์œผ๋กœ ๋น„๊ต๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค.
์™œ ์ด๋Ÿฐ ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ธ์ง€ ์ด์™€ ๊ด€๋ จํ•˜์—ฌ new์˜ ์—ญํ• ์ด ๋ฌด์—‡์ธ์ง€ ํ• ๋‹น๊ณผ ์„ ์–ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…ํ•ด๋ผ

  • ์ž๋ฐ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๋‹ค์Œ ๋‘๊ฐ€์ง€๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
    • reference type : ์„ ์–ธ -> ํ• ๋‹น
    • primitive type : ํ• ๋‹น
  • ์ด๋•Œ, reference type์€ ์„ ์–ธ๋งŒ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์กด์žฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, primitive type์€ ํ• ๋‹น์„ ํ•ด์•ผ์ง€ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์ •์ƒ์ ์œผ๋กœ ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ reference type์€ null์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” nullํƒ€์ž„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, primitive ํƒ€์ž…์€ ๊ฐ’ ๊ทธ ์ž์ฒด๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— null์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.


๐Ÿ„ ์ž๋ฐ”์—์„œ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ, ์ž๋ฐ”์—์„œ๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ๋ง‰๋Š”๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด Animal์„ ์ƒ์†๋ฐ›์€ dog ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์ง€ ๋ชปํ•œ ๊ฒƒ์ธ๊ฐ€?

  • ์ƒ์†๋ฐ›์€ Animal ํด๋ž˜์Šค ์ž์ฒด๊ฐ€ Objectํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์— dog ํด๋ž˜์Šค๋„ ์ƒ์†๋ฐ›์•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ„ ๋‹ค์Œ ํ•จ์ˆ˜๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”๊ฐ€?

class A {
    int num = 1;
    public void toString(){
      System.out.println("hello");
    }
}
  • ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด Object์˜ toString ํ•จ์ˆ˜์™€ ์ถฉ๋Œํ•œ๋‹ค.
    image


๐Ÿ„ ๋‹ค์Œ ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜๋Š”๊ฐ€? ๋งŒ์•ฝ ์‹คํ–‰๋œ๋‹ค๋ฉด ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ๋‚˜์˜ค๋Š”๊ฐ€?

class ConstructorTest{
    private void ConstructorTest(){
        System.out.println("Constuctor");
    }
}

public class Main {
    public static void main(String[] args) {
        ConstructorTest ct = new ConstructorTest();
    }
}
  • ์‹ฑํ–‰์€ ๋˜๋‚˜ ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ƒ์„ฑ์ž๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— Object ์—์„œ ์ƒ์†๋ฐ›์€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋กœ ์ƒ์„ฑ๋œ๋‹ค.



๊ฐœ์ธ ๊ณต๋ถ€ ๊ธฐ๋ก์šฉ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ œ๋ณดํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ˜