1. 매서드의 정의

접근제한자 리턴타입 메서드명(인수1, 인수2, ...){
        수행코드;
        return 반환값;
}

* return값이 없는 경우에는 리턴타입이 void

* 매개변수는 ',' 로 구분, 매개변수가 없더라도 괄호 ( ) 필요

 

2. 매서드 호출

자료형 변수명 = 매서드명(인수1, 인수2, ...)

*호출시 인수의 개수와 타입이 일치해야 함

*매서드의 결과는 하나의 값으로 나오기 때문에 하나의 변수로 받아줘야 함

public class MethodMakeTest{
    public static void main(String[] args) {
        int a=3;
        int b=5;
        int result=add(a,b); //매서드 호출
        System.out.println("result = " + result);
    }
    
    //매서드 정의
    public static int add(int a, int b){
        int sum=a+b;
        return sum;
    }
}
result = 8

종료 코드 0(으)로 완료된 프로세스

 

3. 매개변수 전달기법

1. Call by Value(값 전달)

public int add(int a, int b){
    int sum = a+b;
    return sum;
}

2. Call by Reference(번지 전달)

public int add(int[ ] a){
    int sum=0;
    for(int i=0;i<a.length;i++){
      sum+=a[i];
  }
  return sum;
}

*예시(배열 a를 모두 더하는 매서드를 정의하여 사용하기)

public class CallByReference {
    public static void main(String[] args) {
        int []a={1,2,3,4,5};
        int result=ArrayAdd(a);
        System.out.println("result = " + result);
    }
    public static int ArrayAdd(int[] a){
        int sum=0;
        for(int i=0;i<a.length;i++){
            sum+=a[i];
        }
        return sum;
    }
}
result = 15

종료 코드 0(으)로 완료된 프로세스

 

4. 매서드의 오버로딩(Overloading)

- 오버로딩: 하나의 클래스 내에서 동일한 이름의 매서드를 여러 개 사용할 수 있는 기법

- 오버로딩 전제조건: 매서드의 시그니처(매개변수 개수, 타입)가 달라야 함

*예시(정수, 실수를 받아서 총합을 구하는 매서드 정의하고 호출하여 사용하기)

public class OverloadingTest {
    public static void main(String[] args) {
        float v=Add(12.1f, 45.4f);
        System.out.println("v = " + v);
        int vv=Add(10,80);
        System.out.println("vv = " + vv);
    }
    public static int Add(int a, int b){
        int sum=a+b;
        return sum;
    }
    public static float Add(float a, float b){
        float sum=a+b;
        return sum;
    }
}
v = 57.5
vv = 90

종료 코드 0(으)로 완료된 프로세스

 

 

 

 

'Study > Java' 카테고리의 다른 글

[개념]JVM이 사용하는 메모리 영역  (0) 2025.06.15
[개념]Static, NoneStatic  (1) 2025.06.15
[개념] for문과 while문  (4) 2025.05.30
[개념]If문과 Switch-case문  (0) 2025.05.30
[개념]키보드로부터 데이터 입력 받기  (1) 2025.05.29

for문

1. 구조

for(초기식; 조건식; 증감식){
    반복할 문장;
}

*조건식이 거짓이면 반복문 탈출

*초기식은 처음 한 번만 수행 후, 조건식 -> 반복할 문장 -> 증감식이 반복적으로 수행

2. 구조 2

for( 변수 : 컬렉션 형태의 데이터 ) {
     반복할 문장;
}

*컬렉션에서 변수에 데이터를 하나씩 순서대로 대입하면서 반복할 문장 실행

3. 예시1(알파벳 대문자의 아스키 코드 출력)

public class ForLoopTest {
    public static void main(String[] args) {
        //알파벳 대문자와 아스키 코드 값을 출력하기
        for(char c='A';c<='Z';c++){
            System.out.println(c+":"+(int)c);
        }
    }
}
A:65
B:66
C:67
D:68
E:69
F:70
G:71
H:72
I:73
J:74
K:75
L:76
M:77
N:78
O:79
P:80
Q:81
R:82
S:83
T:84
U:85
V:86
W:87
X:88
Y:89
Z:90

종료 코드 0(으)로 완료된 프로세스

4. 예시2(배열 안에 숫자 순서대로 출력하기)

public class ForLoopTest {
    public static void main(String[] args) {
        //int[] numbers={1,2,3,4,5,6,7,8,9,10}; 배열 원소를 순서대로 출력하기
        int[] numbers={1,2,3,4,5,6,7,8,9,10};
        for(int i=0;i<numbers.length;i++){
            System.out.print(numbers[i]+"\t");
        }

        System.out.println("");

        for(int i:numbers){
            System.out.print(i+"\t");
        }
    }
}
1	2	3	4	5	6	7	8	9	10	
1	2	3	4	5	6	7	8	9	10	
종료 코드 0(으)로 완료된 프로세스

5. 예시3(구구단 출력하기)

public class ForLoopTest {
    public static void main(String[] args) {
        //구구단 출력하기
        int []a={1,2,3,4,5,6,7,8,9};
        int []b={1,2,3,4,5,6,7,8,9};

        for(int i:a){
            for(int j:b){
                System.out.print(i+"x"+j+"="+i*j+" ");
            }
            System.out.println("");
        }
    }
}
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9 
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18 
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27 
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36 
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45 
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54 
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63 
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72 
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 

종료 코드 0(으)로 완료된 프로세스

 

while문

1. 구조

초기식;
while(조건식){
          반복할 문장;
          증감식;
}

*초기식 확인 후 조건식 확인해서 참이면 반복할 문장 실행하고 증감식 실행

*조건식이 거짓이면 while문 탈출

2. 예시(1~10까지 있는 배열 출력하기)

public class WhileTest {
    public static void main(String[] args) {
        int[]numbers={1,2,3,4,5,6,7,8,9,10};
        int a=0;

        while(a<numbers.length){
            System.out.print(numbers[a]+"\t");
            a++;
        }
    }
}
1	2	3	4	5	6	7	8	9	10	
종료 코드 0(으)로 완료된 프로세스

3. do~while 문

1. 구조

초기식;
do{
        반복할 문장;
        증감식;
}while(조건식);

*초기식 확인 후 반복할 문장 실행후 조건식을 확인. -> 반복할 문장을 최소한 한 번은 실행

*while조건식이 { }밖에 있어서 마지막에 ; 찍어줘야 함

*조건식이 거짓이면 반복문 탈출

2. 예시 (1~10까지 있는 배열 출력하기)

public class WhileTest {
    public static void main(String[] args) {
        int[]numbers={1,2,3,4,5,6,7,8,9,10};
        int a=0;

        do{
            System.out.print(numbers[a]+"\t");
            a++;
        }while(a<numbers.length);
    }
}
1	2	3	4	5	6	7	8	9	10	
종료 코드 0(으)로 완료된 프로세스

 

Break, Continue

1. break 예시(문자열 출력 중 문자 'o'를 만나면 멈추기)

public class BreakContinueTest {
    public static void main(String[] args) {
        //문자 'o'를 만나면 중단하기
        char[] c={'s','h','u','t','d','o','w','n'};
        for(char a:c){
            if (a=='o')break;
            System.out.print(a + "\t");
            }
        }
    }
s	h	u	t	d	
종료 코드 0(으)로 완료된 프로세스

2. continue 예시(1부터 임의의 수까지 3의 배수의 개수 구하기)

import java.util.Scanner;

public class BreakContinueTest {
    public static void main(String[] args) {
        //1부터 임의의 수까지 중 3의 배수의 개수를 구하기
        Scanner scan=new Scanner(System.in);
        System.out.println("임의의 정수를 입력하세요: ");
        int num=scan.nextInt();

        int count=0;
        int i;
        for(i=1;i<=num;i++) {
            if(i%3==0){
                count++;
            }
            continue;
        }
        System.out.println("1부터"+(i-1)+"까지의 3의 배수의 갯수는: "+count);
    }
}
임의의 정수를 입력하세요: 
3
1부터3까지의 3의 배수의 갯수는: 1

종료 코드 0(으)로 완료된 프로세스

 

'Study > Java' 카테고리의 다른 글

[개념]Static, NoneStatic  (1) 2025.06.15
[개념]매서드(Method)  (0) 2025.06.02
[개념]If문과 Switch-case문  (0) 2025.05.30
[개념]키보드로부터 데이터 입력 받기  (1) 2025.05.29
[개념]배열(Array)  (0) 2025.05.29

If문

1. 기본 If문

1. 구조

if (조건식){
      참일 때 실행될 문장;
}

2. 예시(정수 1개를 입력받아 입력된 수가 7의 배수인지 출력, 나이를 입력받아 19세 이상이면 성인 출력)

public class IfBasicTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        //정수 1개를 입력받아 입력된 수가 7의 배수인지 출력하세요.
        System.out.print("정수를 입력하세요: ");
        int a = scan.nextInt();

        if(a%7==0){
          System.out.println(a+"은 7의 배수입니다.");
        }

        //나이를 입력 받아 19세 이상이면 성인임을 출력하는 코드를 작성하세요.
        System.out.print("나이를 입력하세요: ");
        int age = scan.nextInt();

        if(age>=19){
            System.out.println("성인입니다.");
        }
    }
}
정수를 입력하세요: 10
나이를 입력하세요: 20
성인입니다.

종료 코드 0(으)로 완료된 프로세스

2. If-else문

1. 구조

if (조건식){
    참일 때 실행될 문장;
}else {
    거짓일 때 실행될 문장;
}

2. 예시(년도를 입력받아서 윤년인지 판단)

import java.util.Scanner;

public class IfElseTest {
    public static void main(String[] args) {
Scanner scan =new Scanner(System.in);

        //년도를 입력 받아서 해당 년도가 윤년인지(4의 배수이면서 100의 배수인 해가 아니거나 400의 배수인 해) 판단하는 코드를 작성하세요.
        System.out.print("년도를 입력하세요: ");
        int year=scan.nextInt();
        if(((year%4==0)&&(year%100!=0))||year%400==0){
            System.out.println(year+"년은 윤년입니다.");
        }else{
            System.out.println(year+"년은 윤년이 아닙니다.");
        }
    }
}

3. 다중 If문

1. 구조

if (조건식){
    참일 때 실행될 문장;
}else if(두 번째 조건식){
    처음 조건이 거짓이고 두 번째 조건이 참일 때 실행될 문장;
}
else if(세 번째 조건식){
    첫 번째, 두 번째 조건이 모두 거짓이고 세 번째 조건이 참일 때 실행될 문장;
}
....
}else{
    모두 거짓일 때 실행될 문장; 
}

2. 예시(성적 처리)

import java.util.Scanner;

public class IfElseIfTest {
    public static void main(String[] args) {
        Scanner scan =new Scanner(System.in);

        //90점 이상은 A반, 85점 이상은 B반, 80점 이상은 C반, 80점 미만은 불합격 처리
        int[]score=new int[5];
        for(int i=0;i<score.length;i++){
            System.out.print("점수를 입력하세요(5개)");
            score[i]=scan.nextInt();
            if(score[i]>=90){
                System.out.println("A반");
            } else if (score[i]>=85) {
                System.out.println("B반");
            } else if (score[i]>=80) {
                System.out.println("C반");
            }else {
                System.out.println("불합격");
            }
        }
    }
}
점수를 입력하세요(5개)90
A반
점수를 입력하세요(5개)95
A반
점수를 입력하세요(5개)84
C반
점수를 입력하세요(5개)87
B반
점수를 입력하세요(5개)70
불합격

종료 코드 0(으)로 완료된 프로세스

Switch-case문

1. 구조

switch(수식){
    case 상수1;
             문장1;
             (break;)          -필요하면 사용
    case 상수2;
             문장2;
             (break;)          -필요하면 사용

   ....

    default:                    -필요하면 사용
              문장N;
}

2. 예시(요일에 해당하는 운동 출력하기 일-야구, 월-농구, 화,수-수영, 목,금,토-휴식)

import java.util.Scanner;

public class SwitchCaseTest {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday 중 하루를 입력하세요.");
        String day=scan.nextLine();

        switch (day){
            case "Sunday" :
                System.out.println("야구하기");
                break;
            case "Monday" :
                System.out.println("농구하기");
                break;
            case "Tuesday" :
            case "Wednesday" :
                System.out.println("수영하기");
                break;
            default:
                System.out.println("휴식");
        }
    }
}
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday 중 하루를 입력하세요.
Wednesday
수영하기

종료 코드 0(으)로 완료된 프로세스

 

 

 

 

 

 

'Study > Java' 카테고리의 다른 글

[개념]매서드(Method)  (0) 2025.06.02
[개념] for문과 while문  (4) 2025.05.30
[개념]키보드로부터 데이터 입력 받기  (1) 2025.05.29
[개념]배열(Array)  (0) 2025.05.29
[개념]연산자  (0) 2025.05.29
import java.util.*  //Scanner 클래스 임포트

Scanner scan=new Scanner(System.in); //키보드로 입력받기
scan.close() //키보드로 입력 받기 종료

*활용 예시(Book 개체의 정보를 입력받기)

import java.util.*;

public class ScannerExam {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.print("제목을 입력하세요: ");
        String title=scan.nextLine();
        System.out.println("제목: "+title);

        System.out.print("가격을 입력하세요: ");
        int price=scan.nextInt();
        System.out.println("가격: "+price);

        scan.nextLine(); //버퍼 비우기

        System.out.print("저자를 입력하세요: ");
        String author=scan.nextLine();
        System.out.println("저자: "+author);

        System.out.print("페이지수를 입력하세요: ");
        int page=scan.nextInt();
        System.out.println("페이지수: "+page);

        scan.close();
    }
}

* 파이썬은 input 안에다가 "저자를 입력하세요" 같은거 넣을 수 있는데 자바는 따로따로 넣어야해서 불편하네;;

* 키보드 쓴다고 처음에 scanner 구문 넣어주고 또 끝나면 scan.close()해야 하는 것도 구리다...

*입력 받다가 중간에 공백이나 남는 문자가 있으면 버퍼에서 가지고 있다가 다음 입력을 안 받고 그냥 넣어버림;; -> 버퍼 비우기

제목을 입력하세요: 자바
제목: 자바
가격을 입력하세요: 32000
가격: 32000
저자를 입력하세요: lee
저자: lee
페이지수를 입력하세요: 500
페이지수: 500

종료 코드 0(으)로 완료된 프로세스

 

'Study > Java' 카테고리의 다른 글

[개념] for문과 while문  (4) 2025.05.30
[개념]If문과 Switch-case문  (0) 2025.05.30
[개념]배열(Array)  (0) 2025.05.29
[개념]연산자  (0) 2025.05.29
[개념]자료형과 형 변환  (1) 2025.05.28

배열 생성 및 데이터 입력

1차원 배열

1. 변수 a 선언

int[] a;

2. 저장공간 5개를 가지는 객체 생성

new int[5];

3. 생성된 객체를 변수에 연결(저장)

int[]a=new int[5];

*int 자료형의 5개 저장공간을 가지는 1차원 배열 'a'를 선언

*객체 생성 시 [ ] 안을 비워둘 수 없고 길이를 고정해야 함

4. 배열을 초기화 하는 법

int[]a={1,2,3,4,5};
int[]a=new int[]{1,2,3,4,5};

5. 반복문으로 배열에 데이터 넣고 출력

int []a=new int[5];

        for(int i=0;i<a.length;i++){
            a[i]=i+1;
            System.out.print("a"+"["+i+"]"+"="+a[i]+"\t");
        }
a[0]=1	a[1]=2	a[2]=3	a[3]=4	a[4]=5	
종료 코드 0(으)로 완료된 프로세스

2차원 배열

1. 1차원 배열 선언 및 객체 생성 후 변수에 연결하는 과정과 동일

int[][]a=new int[2][3]; //2행 3열 2차원 배열 생성

*a.length = 2

*a[0].length = 3

*a[1].lengh = 3

2. 데이터 넣고 출력해서 확인

int[][]c=new int[2][3];

        for(int i=0;i<c.length;i++){
            for(int j=0;j<c[i].length;j++){
                c[i][j]=j+1;
                System.out.print(c[i][j]);
            }
            System.out.println();
        }
123
123

종료 코드 0(으)로 완료된 프로세스

3. 서로 다른 열을 가진 가변 길이 배열도 만들 수 있음

String[][]d=new String[5][];
        d[0]=new String[1];
        d[1]=new String[2];
        d[2]=new String[3];
        d[3]=new String[4];
        d[4]=new String[5];

        for(int i=0;i<d.length;i++){
            for(int j=0;j<d[i].length;j++){
                d[i][j]="*";
                System.out.print(d[i][j]);
            }
            System.out.println();
        }
*
**
***
****
*****

종료 코드 0(으)로 완료된 프로세스

객체 배열

public class Book {
    public String title;
    public String company;
    public String author;
    public int page;
}

이런 Book 클래스가 있을 때,

1. 변수 b 선언

Book[]b=new Book[2];

2. 객체 생성

b[0]=new Book();
b[1]=new Book();

3. 데이터 넣고 출력해서 확인

b[0].author="Mr.Lee";
        b[0].title="java";
        b[0].company="muje";
        b[0].page=111;

        b[1].author="Mr.Kim";
        b[1].title="python";
        b[1].company="easy";
        b[1].page=351;

        for(int i=0;i<b.length;i++){
            System.out.println(b[i].author+"\t"+b[i].title+"\t"+b[i].company+"\t"+b[i].page);
        }
Mr.Lee	java	muje	111
Mr.Kim	python	easy	351	
종료 코드 0(으)로 완료된 프로세스

 

단항 연산자(증가, 감소)

연산자 해석
++a a의 값 1 증가 -> a의 값 사용
--a a의 값 1 감소 -> a의 값 사용
a++ a의 값 사용 -> a의 값 1 증가
a-- a의 값 사용 -> a의 값 1 감소

*예시

int a = 10;
        System.out.println(--a); // a=9 계산 후 9 출력
        System.out.println(a++); // 9 출력 후 a=10
        System.out.println(a--); // 10 출력 후 a=9
        System.out.println(++a); // a=10 계산 후 10 출력
        System.out.println(a);   // a=10

*결과

9
9
10
10
10

종료 코드 0(으)로 완료된 프로세스

삼항연산자

삼항 연산식 의미 예시(int a=-5)
(조건식) ? A : B 조건식이 참인 경우, 결과 값은 A a<0 ? - a : a -> 절대값 계산식
조건식이 거짓인 경우, 결과 값은 B a<b ? a : b -> 둘 중 작은 값 계산 식

*예시(정수 2개를 입력받고 최대값과 최솟값 출력)

Scanner scan=new Scanner(System.in);

        System.out.print("첫 번째 숫자를 입력하세요: ");
        int b=scan.nextInt();
        System.out.print("두 번째 숫자를 입력하세요: ");
        int c=scan.nextInt();
        int Max=(b<c)?c:b;
        int Min=(b<c)?b:c;
        System.out.println("Max = " + Max);
        System.out.println("Min = " + Min);

*결과

첫 번째 숫자를 입력하세요: 4
두 번째 숫자를 입력하세요: 1002354
Max = 1002354
Min = 4

종료 코드 0(으)로 완료된 프로세스

산술연산자

+, -, *, /(몫), %(나머지)

연산자 의미 정수 예시 실수 예시
/ 11/4=2 11.0/4.0=2.75
% 나머지 11%4=3 11.0%4.0=오류

*정수와 실수가 섞여 있을 경우

연산의 형태 결과 정수 예시
정수형과 정수형 정수형 5/2 = 정수형 2
실수형과 실수형 실수형 5.0/2.0 = 실수형 2.5
정수형과 실수형 실수형 5.0/2 = 실수형 2.5
5/2.0 = 실수형 2.5

*예시(자릿수 구하기)

 System.out.println("네자리수의 정수를 입력하세요: ");
        int digit=scan.nextInt();

        System.out.println("천의자리수는: "+ digit/1000%10);
        System.out.println("백의자리수는: "+ digit/100%10);
        System.out.println("십의자리수는: "+ digit/10%10);
        System.out.println("일의자리수는: "+ digit%10);
    }
}

*결과

네자리수의 정수를 입력하세요: 
4537
천의자리수는: 4
백의자리수는: 5
십의자리수는: 3
일의자리수는: 7

종료 코드 0(으)로 완료된 프로세스

복합 대입 연산자

복합 대입연산자 풀어쓰기
a += b a = a+b
a -= b a = a-b
a *= b a = a*b
a /= b a = a/b
a %= b a = a%b

*예시

int test=5;
        test+=1;  //6
        System.out.println("test = " + test);
        test-=1;  //5
        System.out.println("test = " + test);
        test*=2;  //10
        System.out.println("test = " + test);
        test/=2;  //5
        System.out.println("test = " + test);
        test%=2;  //1
        System.out.println("test = " + test);

*결과

test = 6
test = 5
test = 10
test = 5
test = 1

종료 코드 0(으)로 완료된 프로세스

관계,논리 연산자

관계연산자 해석
a == b a와 b가 같은가?
a != b a와 b가 다른가?
a < b a가 b보다 작은가?
a <= b a가 b보다 작거나 같은가?
a > b a가 b보다 큰가?
a >= b a가 b보다 크거나 같은가?

*연산 결과는 참 or 거짓

*조건문의 조건으로 주로 사용

논리 연산자 의미  해석
! a 논리부정(not 연산) a가 참이면 거짓, 거짓이면 참
a && b 논리곱(and 연산) a,b가 둘다 참이면 참, 거짓이면 거짓
a || b 논리합(or 연산) a,b중 하나라도 참이면 참, 모두 거짓이면 거짓

 

+ Recent posts