6일차 반복문과 참조타입

while문

  • 무한 반복문 조건식이 true 일 때
  • for 문과 상호 호환되고 대체가 가능하다.
------------------------기본 while 문 ----------------------------

	// 1+2+3+.....10 = ???? 구하는 예제
	public static void main(String[] args) {
		 int i =1 ; 
		 int sum = 0;
		 while (i<=10) {
			
			 sum+=i;
			 
			 i++; // while문 증감식이 있다면 맨 밑에 적어주세요.
			 System.out.println(sum);
		 } //while 
	} // main
---------------------텍스트 기반 메뉴 구조를 만드는 while문 예제 ------------------

// 1+2+3+.....10 = ???? 구하는 예제
	public static void main(String[] args) {
		// 지역변수(Local Variables) : 특정 block({})안에서 선언된 변수.
		boolean run = true ;
		int speed =0; 
		int keyCode= 0;  // 우리가 키보드에서 특정키를 누르면, 
						 // 컴퓨터에 해당 문자의 코드값(== 키코드라 부름, 정수값)이 입력된다. 
						 // ASCII 테이블 키보드에 해당된 값을 정리해놓은 표
		        		 // UTF - 8 모든나라 모든민족 모든언어의 문자 집합의 기본 
		
		
		while(run) {
			
			if(keyCode!=13 && keyCode!=10) { //13도 10도 둘다 enter 키를 나타냅니다.
				
				System.out.println("-----------------------------" );       
				System.out.println(" 1.증속 | 2.감속 | 3.중지" );   
				System.out.println("-----------------------------" );   
				
			}// if
			
			
			// 콘솔로부터 사용자가 입력한 1개의 문자(=키코드값)를 읽음
			try {
				keyCode =  System.in.read();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} //try
			
			if(keyCode==49) { //1
				speed ++; 
				System.out.println("현재속도 =" + speed);
				
			}else  if (keyCode == 50) {//2
				speed--; 
				System.out.println("현재속도 = " + speed);
				
			} else if (keyCode ==51) {//3
				run =false;  // 무한루프 -> 탈출조건 반드시 고려하고 있어야함.
			} // if -else if-else 다중 if 문 
			
			
		} //while
		System.out.println("종료 되었습니다." );
		
	} // main

do while 문

-조건에 따라 반복 계속할지 결정 할 때 사용하는 것은 while문과 동일
-무조건 중괄호{} 블록을 한 번 실행한 후, 조건 검사해 반복 결정.

--------------do-while 문 -------------
// 사용자의 입력을 유도하는 메시지를 총칭해서, "프롬프트" 또는 "프롬프트 메시지"부름
	public static void main(String[] args) {
	
		System.out.println("메세지를 입력하세요");
		System.out.println("프로그램을 종료하려면 q를 입력하세요.");
		
		//  Scanner: 콘솔뷰에서  사용자가 입력한 한 행을 그대로 스캐닝 해서, 문자열로 만들어 줌 
		Scanner scanner = new Scanner(System.in);
		String inputString;
		
		do {
			System.out.print(">");
			
			// 위에서 "선언"만 되어었던, 지역변수의 "초기화" 수행 
			inputString = scanner.nextLine(); //사용자 입력 행을 스캐닝 -> 문자열로 만듦
			System.out.println(inputString);
		} while( ! inputString.equals("q") ); //do - while  ()소괄호 부분은 붙여주는게 관례임. 띄어쓰지마용.
		
		System.out.println();
		System.out.println("프로그램 종료");
	
	} // main

break 문

-for문 , while문 , do- while문 종료 (반복 취소)
-switch 문 종료
-대개 if문과 같이 사용 (조건식에 따라 for,while문 종료할 때 사용)
-바깥쪽 반복문까지 종료시키려면 반복문에 이름(label)을 붙이고 이름 사용

-------------------------- break 기본예제 ---------------------

public static void main(String[] args) {
		while(true) { // Infinite loop
			int from =1;
			int last = 6;
			int to = last-from +1;
			int num = (int)(Math.random()*to)+from;
			
			System.out.println(num);
			
			if(num==6) {
				break;
			}//if
			
			
		}// while

		System.out.println("프로그램 종료 ");
		
	}//main
-------------------------break 라벨사용--------------------------

public static void main(String[] args) {
		
		Outter: // 옆에 붙어있든 위에있든 상관없다. 위에 있는 것이 가독성좋음. 
		for(char upper='A'; upper<='Z'; upper++) {
			
			for(char lower='a'; lower<='z'; lower++) {
				System.out.println(upper + "-" + lower);
				
				if(lower=='g') {
					break Outter; // label 사용
				}// if
			}//inner- for
		}// outer -for
		System.out.println("프로그램 종료 ");
		
	}//main

continue문

-for,while do-while 문에서 사용
-for문: 증감식으로 이동
-while문, do-while문: 조건식으로 이동

----------------------------continue 예제----------------------------

public static void main(String[] args) {
		
		for(int i=1; i<=10; i++) {
		
			if(i%2 != 0) {  //  나누는 수를 잿수 나눔을 당하는 수는 피잿수/ 2의 배수가 아니다.
				continue; // skip 처리
			} //if
			
			System.out.println(i);
		}// for 

	} // main 

MS949 윈도우 운영체제의 기본 문자집합의 이름
----> 자바언어에서의 공식 명칭 CP949
소스의 문자 집합이 어떤 것으로 되어 있는지 확인해야 글자가 안깨짐
UTF - 8 모든나라 모든민족 모든언어의 문자 집합의 기본(현재의 공식적인)


참조타입

-참조타입은 객체의 주소를 보관한다.
-객체 (object) : 눈에 보이든 보이지 않든 모든 사물이 객체
고유의 속성과 기능을 가지고 있다.
-JVM 안에 메모리 영역이 있다 이 안에 자바객체들이 생성된다.
-자바의 객체들의 주소를 알아야 다른 객체들과의 상호작용이 가능하다.
-객체의 주소를 담고 있는 것이 참조타입 변수다

1.데이터 타입 분류

-변수의 메모리 사용
기본 타입 변수 - 실제 값
참조 타입 변수 - 주소를 통해 객체 참조

2.JVM이 사용하는 메모리 영역

OS에서 할당 받은 메모리 영역(Runtime Data Area) 을 세영역으로 구분한다 .

(1) method 영역
클래스파일의 바이트 코드가 로드 되는 곳이다.
JVM이 실행되기 전에 메인메소드에 사용되는 클래스와 Static변수가 저장 .

(2) stack 영역
메서드가 실행되면 실제로 사용되고 참조를 하는 영역

(3) heap 영역
참조타입이 사용할 객체의 주소가 저장 되어있는 영역

3. 참조 타입 변수의 == , != 연산

-변수의 값이 같은지 다른지 비교
기본 타입: byte, char, short. int,long,float,double,boolean
의미: 변수의 값이 같은지 다른지 조사

-참조 타입 : 배열 ,열거, 클래스, 인터페스
의미: 동일한 객체를 참조하는지 다른 객체를 참조하는지 조사

4. null

-변수가 참조하는 객체가 없을 경우 초기값으로 사용.
-참조 타입의 변수에만 저장가능
-null로 초기화된 참조 변수는 스택 영역 생성

5.String 타입

-문자열 리터럴 동일하다면 String 객체 공유
-new 연산자를 이용한 String 객체 생성

  • 힙 영역에 새로운 String 객체 생성
  • String 객체를 생성한 후 주소 리턴

6. 배열 타입

배열이란?
-같은 타입의 데이터를 (메모리)연속된 공간에 저장하는 자료구조
-각 데이터 저장 위치는 인덱스 부여해 접근

-------------------배열 기본 예제 ---------------------------


		// 1.원소의 타입이 기본타입 int인 배열 객체를 생성
		int[] scores = {83, 90, 87};
		
		
//		----
		
		scores[0] +=5;
		scores[1] +=5;
		scores[2] +=5;
		
//		----------------
		// 2. 배열 안의 각 원소를 사용해보자! 수단: 인덱스 번호(0부터 시작)
		System.out.println("scores[0] :" + scores[0]);
		System.out.println("scores[1] :" + scores[1]);
		System.out.println("scores[2] :" + scores[2]);
//		-----------------
		
		
		int sum = 0; // 배열의 모든 원소의 총합을 저장할 변수정의 
		
		
		for(int i=0; i<3; i++) {  // 카운터 변수를 인덱스 번호로 활용
			sum+= scores[i];
		} //for 
		
		System.out.println("총합:" + sum);
		double avr = (double) sum /3 ; 
		System.out.println("평균:" + avr);

좋은 웹페이지 즐겨찾기