Sesac 7일차

SungMin·2022년 10월 13일
0

Sesac-Java/Spring

목록 보기
3/13

컬렉션 프레임워크

  • 프로그램 구현에 필요한 자료구조를 구현해놓음

  • 개발에 최적화된 알고리즘 사용 가능

  • 컬렉션은 크게 List와 Set, Map으로 나뉨

  • List : 순서가 있음. 중복 가능

  • Set : 배열순서 없음. 중복 불가

List 인터페이스

  • 배열 생성 후 크기 변경 불가
  • 데이터를 삭제해도 요소가 존재하는 것으로 처리
  • 자주 사용되는 메서드 : add(추가), remove(제거), size(개수)

Array_List

import java.util.ArrayList;

public class Ex02_ArrayList {

	public static void main(String[] args) {
		// 컬렉션 프레임워크 - ArrayList
		// 배열의 단점을 개선 : 크기 조절 가능
		// 순서가 있고, 중복이 허용된다.
		ArrayList<String> arrayList = new ArrayList<String>();
		
		// arrayList 배열변수에 값을 추가
		arrayList.add("1");
		arrayList.add("2");
		arrayList.add("3");
		arrayList.add("4");
		
		// arrayList 배열변수 값 확인
//		System.out.println(arrayList.get(0));
		
		// for문을 사용한 arrayList 전체 값 확인
		for(int i = 0; i< arrayList.size(); i++) {
			System.out.println(arrayList.get(i));
		}
		
		// arrayList 생성 및 값 추가, 데이터 확인
		// 1. 정수형 자료를 취급하는 intArrayList 변수 선언 하고
		ArrayList<Integer> intArrayList = new ArrayList<Integer>();
		// 2. 정수 추가 3개이상
		intArrayList.add(30);
		intArrayList.add(50);
		intArrayList.add(70);
		// 3. for문 사용해서 데이터 확인
		int sum = 0;
		for(int i = 0; i< intArrayList.size(); i++) {
			System.out.println(intArrayList.get(i));
			// 4. 각 항목의 합을 구하시오.
			sum += intArrayList.get(i);
		}	
		System.out.println(sum);

	}

}

Map

  • Map 인터페이스 : Key값, Value값으로 구성. 키 값은 중복불가

메서드

메서드 개괄

  • 작업을 수행하기 위한 명령문의 집합
  • 리턴타입 메서드이름 (매개변수선언) { <-순서대로 진행
    - 리턴타입 : int, void 등
    - 메서드이름 : main, nothing 등

오버로딩

  • 동일한 이름을 가진 메서드를 만드는 행위
  • 매개변수의 타입, 갯수, 순서 중 하나라도 달라야 오버로딩 성립
public class Ex04_method {

	// 메서드 (기능 구현)
	public static void main(String[] args) {
		// 반환값(return)이 없는 메서드 사용 : 타입이 void
		add();
		// 반환값(return)이 있는 메서드 사용 : 변수를 생성하여 호출한다.
		int result = add2();
		System.out.println(result);
		// 반환값(return)이 없고, 매개변수(parameter)는 있는 메서드 사용
		// 타입은 void, 매개변수의 타입과 순서에 맞춰서 작성
		add3(2, 3);
		// 반환값(return)이 있고, 매개변수(parameter)도 있는 메서드 사용
		int result2 = add4(2, 7);
		System.out.println(result2);
		printStar(3, '●'); // printStar메서드 호출(사용)
		
		// 메서드 오버로딩 : 같은 이름의 메서드를 생성
		// 대표적인 예시 : system.out. println();
		System.out.println(); // 같은 이름의 메서드를 매개변수의 타입, 갯수, 순서가 다르면 생성가능.
		
		String str1 = strAdd("a", "b");
		System.out.println(str1);
		String str2 = strAdd("a", "b", "c");
		System.out.println(str2);
		strAdd("z");
	}
	
	// 반환값(return)이 없고, 매개변수(parameter)도 없는 메서드 생성
	static void add() { // 반환값이 없는 add함수 생성
		System.out.println(1+2);
	}
	
	// 반환값(return)이 있고, 매개변수(parameter)가 없는 메서드 생성
	static int add2( ) { // 반환값이 정수인 add2함수 생성
		return 1+2; // 반환값ㅅ이 1+2이니까 결과적으로 3을 반환해줄 예정
	}
	
	// 반환값(return)이 없고, 매개변수(parameter)는 있는 메서드 생성
	static void add3(int a, int b) { // 반환값이 없고, 정수타입 매개변수 a,b를 가지는 add3함수
		System.out.println("add3 메서드 사용 : "+(a+b));
	}
	
	// 반환값(return)이 있고, 매개변수(parameter)도 있는 메서드 생성
	static int add4(int a, int b) { //반환값이 정수이고, 정수타입 매개변수 a, b를 가지는 add4함수
		return a + b;
	}
	
	// 메서드 오버로딩(같은 이름의 메서드 생성해보기)
	static String strAdd(String a, String b) {
		return a + b;
	}
	
	static String strAdd(String a, String b, String c) {
		return a + b + c;
	}
	
	static void strAdd(String a) { // 메서드의 반환타입은 상관이 없다.
		System.out.println(a+"입니다.");
		
	}
	
	public static void printStar(int count, char ch) {
		for (int i = 1; i <= count; i++) { // count가 5이면 1에서 5까지 반복
			for (int j = 1; j <= i; j++) { // i가 2면 j는 1에서 2까지 반복
				System.out.print(ch);
			}
			System.out.println();
		}
	}

}

Return문

  • 메서드의 실행 종료
  • 반환값이 없는 메서드면 실행 중 강제 종료(반환)
  • 메서드를 이용한 구구단 출력
import java.util.Scanner;

public class Ex04_methodTest {

	public static void main(String[] args) {
		System.out.println("출력을 원하는 숫자를 입력하세요.");
		System.out.println("첫 번째 숫자 : ");
		Scanner scan = new Scanner(System.in);
		int start = scan.nextInt();
		System.out.println("두 번째 숫자 : ");
		int end = scan.nextInt();
		// 구구단 메서드 1 호출
//		gugudan1();
//		// 구구단 메서드 2 호출
//		gugudan2(3, 5);
		// 구구단 메서드 3 호출
		// \t : tab키
		String result = gugudan3(start, end);
		System.out.println(result);
	}
//		for(int i = 2; i < 10; i++) {
//			System.out.println("====="+i+"단=====");
//			for(int x = 1; x < 10; x++) {
//				System.out.println(i + "x" + x + "=" + i*x);
//			}
//
//		}
		
		// 구구단 메서드1 생성 (반환값 x, 매개변수 x)
	static void gugudan1() {
		for(int i = 2; i < 10; i++) {
			System.out.println("====="+i+"단=====");
			for(int x = 1; x < 10; x++) {
				System.out.println(i + "x" + x + "=" + i*x);
			}

		}			
		
	}
	
	// 구구단 메서드2 생성 (반환값 x, 매개변수는 두 개)
	// 첫 번째 매개변수는 시작할 3단, 두 번째 매개변수는 끝날 5단
	static void gugudan2(int start, int end) {
		for(int i = start; i <= end; i++) {
			System.out.println("====="+i+"단=====");
			for(int x = 1; x <= 9; x++) {
				System.out.println(i + "x" + x + "=" + i*x);
			}

		}			
		
	}
	
	// 구구단 메서드3 생성
	// 반환값 : 구구단 결과 문자열
	// 첫 번째 매개변수는 시작할 4단, 두 번째 매개변수는 끝날 7단
	static String gugudan3(int start, int end) {
		String result = "";
		for(int i = start; i <= end; i++) {
			result += "====="+i+"단====="+"\n";
			for(int x = 1; x <= 9; x++) {
				result += i + "x" + x + "=" + (i*x) + "\n";
			}
		}
		return result;
		
	}

}

변수의 유효범위

  • 큰 블럭에서 선언된 건 내부 작은 블럭에도 적용된다.
  • 내부 블럭에서 선언된 건 외부 블럭에 적용되지 않는다.
public class Ex05_scope {
	// 변수의 유효범위
	int a = 1; // 전역변수이기 때문에 해당 클래스 scope내에서 사용이 가능
	static int b = 2;
	void scopeTest() {
		int b = 1; // 지역변수이기 때문에 해당 메소드를 벗어나면 사용이 불가능(변수가 소멸)
		System.out.println(a + b);
	}
	public static void main(String[] args) {
		// main메서드는 static으로 작성이 되어 있어서 
		// main메서드 안에서 변수나 다른 메서드를 사용하려면
		// 해당 변수, 다른 메서드들도 static으로 생성 해줘야한다.
		b = 3;
	}

}

클래스

객체

  • 자바는 객체 지향 프로그래밍. 객체들이 모여서 만들어짐.
  • 객체는 필드(변수, 속성)와 메서드(동작)으로 이루어짐.
package kr.ac.sesac.exam05;

public class Human {
	// 속성(필드) 생성
	String name = "";
	
	int age = 0;
	
	String job = "";
	
	String living = "";
	
	// 동작(메서드) 생성
	void eat () {
		System.out.println("밥을 먹는다.");
	}
	
	void sleep() {
		System.out.println("잠을 잔다.");
	}
	
	void drink () {
		System.out.println("물을 마신다.");
	}

}

package kr.ac.sesac.exam05;

public class HumanMain {

	public static void main(String[] args) {
		// 휴먼 객체 생성
		Human sik = new Human();
		sik.name = "박영식";
		sik.age = 10;
		sik.job = "프로그래머";
		sik.living = "서울";
		System.out.println("이름 : "+sik.name);
		System.out.println("나이 : "+sik.age);
		System.out.println("직업 : "+sik.job);
		System.out.println("거주지 : "+sik.living);
		sik.eat();
		sik.sleep();
		sik.drink();
		System.out.println(sik);
		
		System.out.println("==========");
		
		Human sik2 = new Human();
//		Human sik2 = sik;
		sik2.name = "영식";
		sik2.age = 20;
		sik2.job = "나는솔로다 출연자";
		sik2.living = "부산";
		System.out.println("이름 : "+sik2.name);
		System.out.println("나이 : "+sik2.age);
		System.out.println("직업 : "+sik2.job);
		System.out.println("거주지 : "+sik2.living);
		
		System.out.println("sik의 이름 : "+sik2.name);
		sik2.eat();
		sik2.sleep();
		sik2.drink();
		System.out.println(sik2);

	}

}

클래스 선언과 컴파일

  • 소스 파일 생성 : 클래스이름.java (대소문자주의)
  • 소스 파일 하나당 하나의 클래스를 선언하는것이 관례(두 개 이상도 가능)

객체 생성

  • 클래스 변수 = new 클래스();
profile
초보 개발자의 학습 저장용 블로그

0개의 댓글