개발자의 길


- 객체는 아는것(품사로 명사 / 속성)과 하는것(품사로 동사 / 기능)을 가지고 있다.

- 자바 클래스기반 객체지향언어이다.

- 클래스의 멤버는 멤버필드 멤버메서드이다.

- 스택메모리(Stack memory) 영역은 메서드 혹은 생성자 호출되면 해당 영역이 잠시 생성(쌓임) 됩니다.

- 힙(Heap) 영역은 객체가 존재하는 공간 입니다,

- 강아지(Dog) 클래스의 UML 입니다. 속성과 기능을 채워 보세요. 

* UML(Unified Modeling Language) 란 프로그램 설계를 표현하기 위해 사용되는, 그림으로 된 표기법을 의미한다.

Dog
속성: 성별 / 종 / 몸무게 / 색 / 나이 /이름 
기능: 물다. / 짖는다. / 잔다. / 달린다

 


■ 변수

- 변수 자료형에 따른 분류 선언지역에 따른 분류가 있다.

- 자료형에 따른 분류 기본자료형 변수 객체자료형 변수가 있다.

- 객체자료형과 참조자료형은 같은 말이다.

- 기본자료형 변수의 대입은 값의 변수이다. (직접 들어감)

- 객체자료형 변수의 대입은 레퍼런스의 참조이다.

- 선언지역에 따른 분류 지역변수 멤버필드가 있다.

- 지역변수는 메모리가 스텍(Stack)에 쌓인다.

- 멤버필드는 메모리가 힙(Heap)과 스태틱(Static)에 쌓인다.

- 힙은 인스턴스(Instance) 멤버필드라고 부른다.


- 클래스 객체의 설계도 / 객체자료형이다.

- 클래스의 멤버 멤버필드 멤버메서드로 나눈다.

 

- 다음을 스텍(Stack)  힙(Heap) 으로 그려보세요.

class A{
    int a;
}

class B{
    int a;
    int b;
}
public class C{
	public static void main(String[] args){
           int a = 5;
           int b = a;
           A c = new A();
           B d = new B();
           A e = c;
           c.a = b;
           d.b = c.a;
           System.out.println(e.a);
    }
}

- 다음을 스텍(Stack)  힙(Heap) 으로 그려보세요.

class A {
    int a;
    A b;
}
class B {
    int a;
    B b;
}
public class C{
	public static void main(String[] agrs){
             int c = 3;
             A a = new A();
             B b = new B();
             a.a = c;
             int d = 5;
             b.a = d;
             a = new A();
             a.b = a;
             b.b = new B();
    }
}

*접근제한자를 간단하게 말하면 자바에서는 클래스, 함수, 변수에 대한 접근을 제한하는 문법이 있다.

  1. public
  2. private
  3. protected
  4. default

 

 


■ 자바(Java)

- 자바의 자료형은 두가지이고 기본자료형 객체자료형이다.

- 변수의 선언은 자료형 변수명;

- SIX FINGER 를 식별자로 각각써보세요

  • 클래스:SixFinger
  • 메서드:sixFinger()
  • 상수:SIX_FINGER
  • 변수sixFinger
  • 생성자:SixFinger()

- 다음의 결과는?(에러 발생시 이유를 쓰세요)

public static void main(String[] args){
	byte a = 1;
	short b = 2;
	short c = a + b;
	System.out.println(c);
}
...더보기

에러가 발생.

서로 다른 자료형 두개가 연산하려면 변수 c 의 short형을 int형으로 써줘야한다.


- 다음의 결과는?(에러 발생시 이유를 쓰세요)

public static void main(String[] args){
    int a = 2; 
    int b = 3;
    int c = ++a + b++;
    System.out.println(a);
    System.out.println(b);
    System.out.println("a+b+c="+a+b+c)
    
}

- 다음의 결과는?(에러 발생시 이유를 쓰세요)

public static void main(Strin[] args){
    char a = 'A';
    int b = 5;
    int c = a + b;
    System.out.println(c);
}
...더보기

자료형이 char 형인 변수 a는 'A' 로 초기화했다. char형은 내부적으로 정수로 처리하기 때문에 A는 65이다.

int c = 65 +  5; 

이기 때문에 c는 70


- 다음의 결과는?(에러 발생시 이유를 쓰세요)

public static void main(String[] args){
    byte b = 3;
    boolean a = b!=3;
    System.out.println(!a);
}
...더보기

//b = 3

// 3!=3 을 해석하면 3은 3이 아니다 즉 false 이다. boolean 형이기 때문에 a = false

// !false 는 true 

답은 true


- 다음의 결과는?(에러 발생시 이유를 쓰세요)

public static void main(String[] args){
    int a = 2;
    int b = 3;
    System.out.println(++a==b && --a!=b);
    System.out.println(a++==b && --a!=b);
}

- 제어문

종류 설명 종류
분기문 특정 상황에 따라 다르게 작동 if 문 / switch 문
반복문 특정 구문을 여러번 반복하여 작동 for 문 / while 문

- 다음의 결과는?(에러 발생시 이유를 쓰세요)

public static void main(String[] args){
	int a = 3;
    if(a--==3 || a==2){
    	Sytem.out.println("맞습니다");
    }else{
    	System.out.println(틀립니다.);
    }//if~else end
}//main() end

- 다음의 결과는?(에러 발생시 이유를 쓰세요)

public static void main(String[] args){
	for(int i = 2; i < 12; i++){
    	if(i/2==3){
        	System.out.println(i);
        }//if end
    }//for end
}//main() end

최근 글