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);
Author And Source
이 문제에 관하여(6일차 반복문과 참조타입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@koo9b9h/6일차-반복문과-참조타입저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)