[자바] 제어문과 함수

tech_bae·2025년 3월 6일

Java

목록 보기
4/10
post-thumbnail

📋유용한 단축키(IntelliJ)

  • f2 : 변수이름을 바꿨을때 오류가 발행하는 위치로 순간이동(바꿔야 하는 곳을 찾기가 쉽다.)
  • shift + f6 : 리팩토링(모든 관련 참조가 함께 변경 안전하게 변수이름을 바꿀 수 있다)
  • ctrl + alt + v : 변수 추출 같은 원리로 클래스(c), 메소드(m)도 가능!

제어문

선택문

if, else if, else

  • if문은 주어진 조건이 이면 해당 블록을 실행.
if (조건식 or 값) {
	본문
}
  • else if는 여러 개의 조건이 있을때 사용이 가능하다. 조건이 참이 블록을 실행하고 if문을 종료한다.(나머지 조건을 검사X)
if (a >= 6) {
	System.out.println("Too big");
	} else if(a < 6 && a >= 3){
		System.out.println("Good Number");
   }
   
//출력 : Good Number
	
  • else는 ****어떠한 조건에도 만족하지 않을때 코드블록을 실행.
boolean isClassFinished = false;

if (isClassFinished) {
	System.out.println("Let's go to workout!!");
	} else{
		System.out.println("Hang on...");
		}

Switch

  • if문과 비슷하나 case에 부합하는 값이 들어오면 해당 case문을 실행하고 그 아래의 모든 case를 실행시킴
    • break키워드를 사용해 해당 case만 실행 시킬 수 있음
  • 모든 case에 부합하지 않을때 default키워드를 사용하여 실행시킴
int number = 2;

switch (number){
  case 1:
      System.out.println("1");
  case 2:
      System.out.println("2");
  case 3:
      System.out.println("3");
  case 4:
      System.out.println("4");
}

//출력
2
3
4

반복문

while

  • 조건이 참일 동안 반복적으로 실행되는 제어문

do while

  • while과 흡사하지만 do블록의 코드가 무조건 한번은 실행된다.
  • do 블록(반복문)실행하고 조건식을 검사한다.

for

  • while과는 다르게 반복 수를 명시적으로 제어할 수 있음
  • for문의 외부에 있는 변수도 이용이 가능하다(이건 몰랐다..)
int a = 5;
for(; a <= 10; a++){
	System.out.println(a);
}

/* 출력
5
6
7
8
9
10
*/

함수

함수와 메서드

나는 함수와 메서드는 동일하고 용어의 차이인줄 알았는데 미묘한 차이가 있었다.

  • 함수
    • 어떤 객체에 속하지 않고, 그자체로 호출된다.
    • 객체와 무관하게 독립적으로 존재
  • 메서드
    • 클래스나 객체에 소속되어 있다.

메서드의 정의

접근제어자 반환자료형 메서드이름 (매게변수 ...) {
		본문
}
  • 접근제어자 : 메서드에 접근할 수 있는 범주를 정의 → 데이터 은닉화와 캡슐화 강화
  • 반환 자료형 : 메서드가 반환하는 자료형을 정의
  • 매게변수 : 메서드가 사용할 수 있는 값, 매게변수는 호출 될 때 전달하는 인자값을 정의

접근제어자

접근자클래스 내부패키지상속받은 클래스이외의 영역
defaultOOXX
publicOOOO
privateOXXX
protectedOOOX

가변인자(Vararg)

가변 인자를 사용하여 매개변수의 개수를 동적으로 설정할 수 있다!

public static void main(String[] args) {
        vararg("cat","dog","cow","rat","zebra");
    }

    public static void vararg(String...animals){
        for(String animal : animals){
            System.out.println(animal);
        }
    }

이런게 될 줄은 몰랐다. 나만 신기했나.. 난 너무 신기했다.

오버로딩

같은 이름을 가지는 메소드들을 여러개 정의 하는 것

단, 각 매서드의 매개변수의 타입이나 개수, 순서가 다르게 정의해야 한다.

반환 타입만으로는 오버로딩X

  • 메서드 시그니쳐 : 메서드를 구별하는데 필요한 정보
    • 반환타입은 메서드 시그니쳐가 아니므로 메서드의 구별에 영향이 없다.
profile
전 아무고토 몰루고 아무고토 못해여

0개의 댓글