본문 바로가기

Back-End/JAVA

[자바] 자바 기초 개념

JAVA란?

  • JAVA : 객체 지향적 프로그래밍 언어
  • JAVA의 특징
    1. 객체 지향 언어 (Object Orient Language)
    2. 이식성이 높음 ( 한 번의 컴파일로 Window, Linux, IOS 어디서든 실행됨)
    3. opensource 라이브러리가 풍부함 ★

   객체지향 언어란?

  • OOP(Object Orient Programing :  객체 지향 프로그래밍) 언어
  • 자동차 공장에서 각 부품을 조립하여 자동차를 만들듯이 프로그램도 조립한다면 어떨까?
  • 누군가가 만들어 공개한 내용을 가져다쓰면 개발 속도가 더 빨라지지 않을까?
  • 그 결과 만들어진 것이 바로 OOP언어.
  • => JAVA는 누군가 만들어놓은 것을 편하게 사용하기 위한 관점으로 바라보기! ★

 

변수란?

1. 변수

  • 무언가를 담는 컵
  • 물을 마시고자 할 때 컵을 이용하여 마시면 물을 흘리지 않고 마실 수 있다.

2. 변수 이름

  • 같은 컵이 많으면 구분할 수 없으니까 각 컵을 구분하고 가져올 수 있도록 붙이는 라벨

3. 변수의 타입

  • 담는 용도에 따라 컵의 크기와 종류가 달라진다. 
  • 맥주 - 맥주잔, 막걸리 - 막걸리잔, 소주 - 소주잔, 와인 - 와인잔, 따뜻한 우유 - 머그잔

4. 프로그램에서의 변수

String wineglass = "레드 와인";

// String : 변수 타입 - 담는 값에 따라 타입이 정해짐
// wineglass : 변수 이름
// 레드와인 : 변수 값
  • 변수 선언 타입
자료형 설명
Boolean 논리 자료형 (true / false)
String 문자열 클래스
Int 4바이트의 정수형 자료 타입
Long 8바이트의 정수형 자료 타입
Float 4바이트의 실수형 자료 타입
Double 8바이트의 실수형 자료 타입

 

5. 변수의 영역(scope)

  • 변수는 선언된 곳보다 바깥 쪽에서는 사용 불가하다.
  • 카페 매장의 머그컵 VS 집에서 가져온 텀블러
  • => 매장의 머그컵은 밖으로 들고 나갈 수 없다.
public class VarScope {
	
	String str = "아무거나 입력 하세요."; //클래스 영역에서 생성되었기 때문에 method에서 사용할 수 있다.
	
	public static void main(String[]args) {
		int number = 123; //method에서 생성되었기 때문에 method 밖으로 못나간다.
		
		for (int i = 0; i < args.length; i++) {
			int sum = 0; //for문 안에서 만들어졌기 때문에 for 밖으로 나갈 수 없다.
			sum = i + number; //number는 for문 안에서 사용 가능
		}
		
		str = sum + "입니다."; //sum은 for문을 벗어날 수 없다.
	}

}

 

6. 형 변환(casting)

  • 한 컵에 있는 내용물을 다른 컵에 옮겨 담는 것
  • 묵시적 형 변환 : 작은 컵 -> 큰 컵 : 따로 절차가 필요하지 않음
  • 명시적 형 변환 : 큰 컵 -> 작은 컵 : 내용물이 넘칠 수 있기 때문에 절차가 필요
public static void main(String[] args) {
    // 명시적 형변환 ( 큰 거 -> 작은 거, 동일크기 다른 형태)
    // eclipse에서 자동으로 해 준다.
    char charVal;
    int intVal;
    long longVal;
    float floatVal;
    double doubleVal;

    intVal = 44032;
    charVal =(char) intVal;  // int 인데 char에 들어갈거야 잘 확인해봐.
    System.out.println(charVal); //syso

    longVal = 500;  //longVal을 intVal에 넣어보자 -> *intVal이 왼쪽에 있어야 함!*
    intVal = (int) longVal;  

    doubleVal = 3.14;  //doubleVal을 floatVal에 넣어보자 
    floatVal = (float) doubleVal;
}
  • 타입의 크기 : byte < short < int < long
  • 각 타입 별 크기
    //byte
    System.out.println("byte 크기 : " + Byte.MIN_VALUE +" ~ "+ Byte.MAX_VALUE);

    //short(JAVA 에서 거의 안쓴다.)
    System.out.println("short 크기 : " +Short.MIN_VALUE +" ~ "+ Short.MAX_VALUE);

    //int
    System.out.println("int 크기 : " +Integer.MIN_VALUE +" ~ "+ Integer.MAX_VALUE);

    //long
    System.out.println("long 크기 : " +Long.MIN_VALUE +" ~ "+ Long.MAX_VALUE);

    //float
    System.out.println("float 크기 : " +Float.MIN_VALUE +" ~ "+ Float.MAX_VALUE);

    //double
    System.out.println("double 크기 : " +Double.MIN_VALUE +" ~ "+ Double.MAX_VALUE);

코드 결과값

 

Method란?

1. 정의

  • 변수가 데이터를 보관하는 바구니라면 메서드는 동작을 실행해주는 무언가이다.
  • 변수 : 빨래바구니
  • 변수값 : 빨래감
  • 메서드 : 세탁기

2. 메서드의 구조

  • 구성요소 : 반환 타입, 메서드 이름, 매개변수, 실행문, 반환문
public class Laundry {
	public static void main(String[] args) {
    	String 빨래바구니 = "오늘 입은 옷";
        String 바구니 = 세탁기(빨래바구니);
        System.out.println(바구니);
    }
    
    //세탁기 : 메서드 이름
    //빨래감 : 매개 변수
    //String : 변수 타입
	public static String 세탁기 (String 빨래감) {
    	//실행문
    	System.out.println(빨래감+"을 세탁");
        System.out.println(빨래감+"을 탈수");
        //반환문
        return "깨끗한"+빨래감;
    }

3. 메서드의 종류

  • 메서드는 모든 구성요소를 가지고 있는 것은 아니다
  • 반환 타입이 없으면 반환도 없다. 
  • 매개변수가 필요한 경우 : 매개변수가 들어가야만 메서드가 실행되는 경우
    ex) 자판기 - 돈을 넣어야 음료수 뽑을 수 있음
  • 반환 타입이 필요한 경우 : 반환 값이 필요한 경우
    • 반환 타입 O, 매개변수 O : 커피머신, 토스트기 
    • 반환 타입 O, 매개변수 X : 대기 번호표 기계, 손소독제 자동분사기
    • 반환 타입 X, 매개변수 O : 저금통
    • 반환 타입 X, 매개변수 X : 호출벨, 버스 하차벨
//반환 타입 O, 매개 변수 O
String 토스트기(String 빵) {
    return "구운 빵";
}

String 커피머신(String 커피캡슐) {
    return "커피";
}

//반환 타입 O, 매개 변수 X
String 번호표기계() {
    return "번호표";
}

String 손소독제자동분사기() {
    return "소독제";
}

//반환 타입 X, 매개 변수 O
void 저금통(int 동전) {
    System.out.println(동전+"저금");
}

//반환 타입 X, 매개 변수 X
void 호출벨() {
    System.out.println("호출");
}

 

<개념 질문 타임>

  • 객체지향언어란 무엇인가?
    => 특정 코드를 부품처럼 사용하여 프로그램을 개발할 수 있는 언어이다.
  • 에디터와 IDE의 차이점
    => 에디터는 편집만 가능 IDE는 코딩, 컴파일, 실행, 배포를 모두 하나의 프로그램 안에서 처리하는 환경을 제공하는 프로그램이다.
  • JDK란 무엇인가?
    자바 개발과 컴파일을 위한 도구이다.
  • 변수란 무엇인가?
  • 변수 타입이란 무엇인가?
  • 변수 타입이 있는 이유?
  • 변수의 scope에 대해 설명하라.
  • 변수의 casting에 대해 설명하라.
  • 메서드란 무엇인가?
  • 메서드의 구성요소에는 무엇이 있는가?
  • 반환값만 있는 메서드의 예시를 들어라.