프로그램 구현에 필요한 자료구조를 구현해놓음
개발에 최적화된 알고리즘 사용 가능
컬렉션은 크게 List와 Set, Map으로 나뉨
List : 순서가 있음. 중복 가능
Set : 배열순서 없음. 중복 불가
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);
}
}
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();
}
}
}
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);
}
}