Day 12

·2023년 6월 22일
0

Global_2023_2

목록 보기
11/56

1.함수오버로딩이란?

  • 메소드 오버로딩
    • "파라미터 데이터 타입 또는 갯수를 달래해서"
      같은 함수 이름을 두개 쓸수 있는것
    • 절차지향언어(c언어)에선 불가
    • 모든 데이터타입의 아버지 Object(참조형)

2.static 을 표현하는 용어 4가지는?

  • static 변수 = 공유변수 = class 변수 = 정적변수静的変数
    (모두 같은 말)

3. 인스턴스 라면이 static 냄비에 올수 없는 이유는?

  • 인스턴스 라면(변수와함수)이
    static 냄비(함수) 안에 못들어가는 이유

    메모리 생성 시간차가 나기 때문
    (static은 먼저 올라가는데 인스턴스는 new 해야 생성되서)

4. static을 쓰는 예는?

  • 가장 많이 사용하는곳 : sysout(println)
    같이 자주 쓰는 곳에 사용하여 메모리를 아낀다

5.함수 오버로딩의 대표적인 함수는?

  • sysout(println) 같은것

6.지역변수, static 변수 , 인스턴스 변수의 차이는?

  1. 지역변수

    함수 안에 있는 변수

  2. static 변수

    클라스 안에서 먼저 메모리에 올리는 변수

  3. 인스턴스 변수

    클라스 안에 있는 변수

7.static 변수의 접근 방법 2가지는?

  1. 외부에서 클래스 이름으로 접근

  2. 외부에서 인스턴스 객체의 이름으로 접근


1. 아래의 Accumulator를 완성하시오.

for (int i = 0; i <= 10; i++)
Accumulator.add(i); // 전달되는 값을 모두 누적
Accumulator.showResult(); // 최종 누적 결과를 출력 sum = 55

class Accumulator{
private static int sum=0;
public static void add(int i) {
sum = sum + i;
}
public static void showResult() {
System.out.println("sum = " + sum);
}
}

2.아래의 결과를 예측하고, 이유를 설명하시오.

    String str1 = "Simple String";
    String str2 = "Simple String";
    
    String str3 = new String("Simple String");
    String str4 = new String("Simple String");
    
    if(str1 == str2)
        System.out.println("str1과 str2는 동일 인스턴스 참조");
    else
        System.out.println("str1과 str2는 다른 인스턴스 참조");

    if(str3 == str4)
        System.out.println("str3과 str4는 동일 인스턴스 참조");
    else
        System.out.println("str3과 str4는 다른 인스턴스 참조");
  • String 표시 방법 두가지
    • String str 1= new ~("");
    • String str 2= "~";
  • String 한번에 100여개의 함수가 들어간다(length등)

"누구나 1년만 버티면 남들 하는 만큼 먹고 산다"🚯


Point

  • 클래스나 변수 이름은 항상 내용을 유추 할 수 있도록 만들기
    (AA 이런 식으로 만들고 퇴사하면 나중 사람에 민폐)

  • 프로젝트에서 신입은 무시당하고 배제당할때가 많다💫

  • static

    • 변수와 함수 앞에만 붙는다 (클래스X)
    • 먼저(new 객체생성보다 먼저)
      한번 올려 공유 (어디에다? method area 에다)
      (외워야 함)
    • 집 나간 토끼
    • 외부에서 클래스 이름으로 접근 가능
    • static 붙이면 한번만 올려서 메모리 최소화

    • 붙이면 똑똑해보임 (알고 코딩하는것)👨‍💻
    • public과 위치는 상관없음 (변수선언 앞에 오면 된다)
    • 함수 내에서 자주 쓰고 인스턴스로 사용할 필요가 없는것을 static
    • 지역변수(함수안에 변수≠인스턴스 변수)는 static과는 상관없음
    • main 함수는 먼저 메모리가 읽는 함수일뿐 특별한건 없다
  • 생성자는 이름이 다르면 this.를 붙여도 되고 안붙여도 된다

  • String의 질량보존법칙은 불변의법칙(Immutable)
    • 한번 선언한 메모리는 합쳐져도 변하지 않는다
    • 내부적으로 final 화 되어있기 때문
    • 단어가 합쳐져도 메모리가 변하는게 아니라 새로 만들어지는 이유
      (보안적으로 좋지만 메모리를 많이 차지한다)
    • 500개 이하는 문제 없지만 10000개 이렇게 돌리면 안된다
  • 자바 17버전부터 switch()에 String이 들어간다
    • 이전엔 double을 넣어도 int로 변환하여 나왔다
    • 메모리 주소값을 걸리도록 설계됨
  • 신입사원 교육은 과제다 (보통은 업무시간에 함)

0개의 댓글