본문 바로가기

아옳옳의 코딩공부/아옳옳 자바코딩공부

2021-02-20 자바공부 (시스템 입출력 ,배열 , 열거타입)

반응형

사실 전에 배운 내용이지만 블로그 시작하면서 전에 배운 내용이 생략되어있다 ㅜ ㅜ 

현재 배우는 내용을 실시간으로 작성하기 때문에 날짜가 맞지만 전에 배운 내용들은 시간나는대로 올릴거기 때문에 

좀 복잡하더라도 알아서 찾아보도록!! ㅋㅋ 

 

시스템 입출력장치 (System.out.pirtln & System.out.pirt & System.out.pirtf) 

 

출력

예전에 해본것이라 크게 문제될 것은 없다

System.out.print & System.out.println 자주 사용하던 출력 방식

System.out.printf 는 주로 c언어에서 사용하던 방식이나 자바에서도 지원해준다

이 클래스는 object를 상속받아져 있다. 자식에게 toString이 있는지 먼저 찾고 그것을 실행해준다 그래서 주소값이 아닌 toString 메소드를 실행함

 

이스케이프 시퀀스 

\n 개행 

\t 탭 

\" 큰 따옴표 

\\ 역슬래시 

등이 대표적인 이스케이프 시퀀스 이다 

 

입력

Scanner sc = new Scanner(); 형식으로 사용됨

표를 보고 참조하자~~

Scanner 클래스의 주요 메소드 


배열

배열은 아무리 많은 수의 별수라도 하나의 문장으로 선언 가능하다는 장점이 있다 . 

변수 생성 간략화

이렇게 한번에 많은 변수를 만들어야 할 때 사용되며 , 반복문을 이용하여 순차적으로 접근하여 

값을 넣어주는것도 가능해서 사용하는거에요~ 

 

배열의 생성 방법 

 

배열의 기초 생성 방법

기본적인 생성 방법이지만 다른 방법으로 배열을 만들수도 있다 .

 

배열의 선언과 동시에 초기화

int intArray[] = {4, 3 ,2 ,1 0};

float floatArray[] = { 0.1, 0.2 };

이렇게 되면 생성과 동시에 값이 입력된다 

 

2차원 배열  

배열을 동시에 2개를 생성해서 사용 하는 방법이라고 생각하면 된다

설명보다 이미지보고 이해하는게 더 좋을듯.....

2차원 배열 접근방법

배열복사 

System.arrayCopy 메소드를 이용하여 배열을 복사할수 있다 

for-each문 많이 사용되니 잘 기억하자

 

for-each(enhanced _ for)

배열의 일부가 아닌 배열의 전체를 참조할 필요가 있을 때 사용된다

반복문 사용 배열참조

이러한 방식으로 for문을 이용하여 배열을 참조 할 수가 있었는데

for-each문 사용 배열 참조 

여기에서는 int e 에 참조변수 arr의 값이 e에 들어감 순차적으로 하나씩 배열의 끝까지 값이 들어감

이런 식으로 for-each문을 사용하면 보다 편하게 참조를 할수 있다

 

#for-each문을 통한 값의변경은 실제배열에 반영되지 않고 값 참조만 가능함 

그리고 for-each문은 일부는 참조못하고 전체를 참조할 때만 사용 한다 

 

최근에 배운 배열숙제 2차원 배열을 이용하여 구구단을 만들어보아라 ! 집에서 혼자 한것을 올렸당 

package quiz;

public class 배열구구단 {

	public static void main(String[] args) {

		int[] a = new int[9];
		int[] b = new int[9];

		for (int i = 0; i < a.length; i++) {
			a[i] = i + 1;
			b[i] = i + 1;
		}

		for (int j = 0; j < a.length; j++) {
			for (int q = 1; q < b.length; q++) {
				int t = a[j] * b[q];
				System.out.printf("%dX%d=%2d ", a[q], b[j], t);

			}
			System.out.println();
		}

		int[][] o = new int[2][9]; 
		;

		for (int i = 0; i < o[0].length; i++) {
			o[0][i] = i+1;
			o[1][i] = i+1;
		
		}
		for (int j = 0; j < o[1].length; j++) {
			for (int q = 1; q < o[1].length; q++) {

				int t = o[0][j] * o[1][q];
				System.out.printf("%dX%d=%2d ", o[1][q], o[0][j], t);
			}
			System.out.println();
		}
		

	}

}

배열을 이용한 구구단 & 2차원 배열을 이용한 구구단 

 


열거타입 (enum)

#한정된 값만 갖는 데이터 타입

#쉽게 내가 만드는 변수타입으로 생각

고로 상수의 이름 자체가 중요하다고 생각될때 사용한다  (대문자로작성) 

 

사용방법 

 

열거타입    변수          =    열거타입.열거상수;

Week        today;       =    Week.SUNDAY;

#열거타입은 인스턴스화없이 static처럼 사용이 가능하다 

#참조타입이므로 null값 저장가능

열거타입은 기본자료형이 아니라서 그냥 사용 불가능 하고 열거 타입열거 상수화 해주어야함

 

 

열거타입은 따로 만들어서 사용도 가능하고 메인클래스에 정의 하여 사용가능하다 아래 이미지 참조 

따로 만들었다 
따로 만드는법 
메인클래스위에 정의

package enumeration;

import java.util.Calendar;

public class EnumWeek_Ex {

	public static void main(String[] args) {
		
		Week today = null;
		Calendar cal = Calendar.getInstance();
		int week = cal.get(Calendar.DAY_OF_WEEK);
		
		switch(week) {
		case 1: 
			today = Week.SUNDAY;
			break;
		case 2: 
			today = Week.MONDAY;
			break;
		case 3: 
			today = Week.TUESDAY;
			break;
		case 4: 
			today = Week.WEDNESDAY;
			break;
		case 5: 
			today = Week.THURSDAY;
			break;
		case 6: 
			today = Week.FRIDAY;
			break;
		case 7: 
			today = Week.SATURDAY;
			break;	
		}
		System.out.println("오늘요일 : " + today);

		if (today==Week.SUNDAY) {
			System.out.println("일요일 기릿");
		}else {
			System.out.println("공부 기릿");
		}
	}

}

열거타입을 사용하면 위 코드처럼 된다 

열거타입은 단순히 보면 그 글씨를 적어낸다

위는 calender를 사용하여 스위치 문을 작동시켰다

 

더욱 들어가면 사실 열거형 값은 인스턴스이다!

object 클래스를 상속한다 그래서 toString 먼저 찾아서 전달한다 

 

열거체 메소드 

열거체의 메소드 

아래코드를 보고 메소드가 어떻게 사용되는 참조하자 

package enumeration;

public class Enummethod_Ex {

	public static void main(String[] args) {
		
		//열거객체의 문자열을 리턴 
		Week today = Week.SUNDAY;
		String name = today.name();
		System.out.println(name);
		// 열거 객체의 순번(0부터 시작)을 리턴
		int ordinal = today.ordinal();
		System.out.println(ordinal);

		Week day1 = Week.MONDAY;
		Week day2 = Week.WEDNESDAY;
		//열거 객체를 비교해서 순번 차이를 리턴 
		int resrult1 = day1.compareTo(day2);
		int resrult2 = day2.compareTo(day1);
		System.out.println(resrult1);
		System.out.println(resrult2);
		//주어진 문자열의 역거 객체를 리턴 
		Week weekday = Week.valueOf("SUNDAY");
		if (weekday == Week.SUNDAY || weekday == Week.SATURDAY) {
			System.out.println("주말기릿");
		} else {
			System.out.println("평일기릿");
		}
		//모든 열거 객체들을 배열로 리턴 %for-each문 사용함 
		Week[] days = Week.values();
		for (Week day : days) {
			System.out.println(day + " ");
		}

	}
}

 

대략 이정도로 생각하면 된다~~ 

 

오늘은 토욜이라 그전에 배운것들 정리하다보니까 하루에 많은양이 들어간거 같지만 사실 이해하면 그렇게 많은 양도 아니다~~ 전부다 마스터 할때까지 열공!!! 수고했다옳옳옳!!!!!!

 

 

(21-03-10 복습 1회)

반응형