**변수명 지정할 때는 의미전달이 잘 되는 것으로(이후 팀프로젝트를 고려하여)
while 문
반복문 합계 구하기 관련 이해하기 표
i |
sum + i |
sum = sum + i |
1 |
(0)+1 |
1 |
2 |
(0+1)+2 |
3 |
3 |
(0+1+2)+3 |
6 |
4 |
(0+1+2+3)+4 |
10 |
5 |
(0+1+2+3+4)+5 |
15 |
while문 : 단순한 상황에 유리한 반복문
for문 : 복잡한 상황에 유리한 반복문, 난전에 강하다. 반복문이 3중,4중으로 중첩될 때 강하다.
for문
for문
초기,조건,증감문을 한번에 선언 가능
가장 보편적인 반복문으로 가독성이 높다.
for문의 문법
초기, 조건, 증감문은 일부 또는 전부를 생략 가능하다.
for(초기문;조건문;증감문){ 실행문; } |
![]() |
초기문->조건문->실행문->증감문->조건문->실행문->증감문->조건문->실행문->조건문…..
변형식?변형문법
for문은 변형문법이 있어서 편리하다?
흐름제어문 (반복문 내에서 사용됨)
break문 -> 직역:깨다,탈출하다 => 반복문을 탈출
반복문이 실행되고 있는 시점에서 가장 근접한 반복문(루프) 탈출
여러 개의 루프가 중첩된 경우 현재 위치한 루프 하나만 탈출
continue문 ->
반복도중 처리를 중단하고 반복문의 시작 위치로 이동
정밀한 제어 구조를 만들 때 사용
인벤트=들여쓰기
무한루프
반복 횟수가 미리 정해져 있지 않고 무한히 반복되는 루프
무한루프 생성 코드
for문
for( ; ; ){ 실행문; }
while문
while(true){ 실행문; }
이중반복문 연습문제 -> 스타워즈
switch문 -> 경우의 수를 나누는 문법
하나의 변수값에 따라 개별적인 처리가 가능한 다중 선택문.
전체적인 메뉴 구성 시 보편적으로 사용.
한 case가 끝날 때마다 break;를 꼭 넣어줘야함
default는 어차피 제일 마지막에 보는 경우이기 때문에 break를 넣어도 안넣어도 상관없음
String a =”A”; 스트링상수(String Literal) : 리터럴값을 직접 스트링에 넣은 것
String b =”A” // String Constant pool에서 “A”가 있는지 찾아보고, 있으면 똑같은 주소를 저장한다.
--->그러므로 System.out.println(a==b);를 실행하면 true가 출력된다. = 내부적으로 String Constant pool을 공유해서 같은 번지를 공유하기 때문에 true가 되는 것(단순히 문자가 같아서가 아님)
String c = new String(“A”);
String d= new String(“A”);
new의 역할 : heap memory(String Constant pool이 아닌 그냥 heap에다가)에 데이터를 만들어 달라는 역할 -> instance라는 매개체를 만들고, instance를 통해 String Constant pool을 봄.
System.out.println(b==c); ---> 결과 : false
System.out.println(c==d); ---> 결과 : false
다 똑같은 1000번지 A를 보고 있지만, c와 d는 new를 통해 인스턴스(매개체)를 만들어서 인스턴스의 주소를 갖고 있기 때문에 저장하고있는 주소가 다름-> 인스턴스를 통해 1000번지를 보고 있음.
stack |
a(1000번지주소) b(1000번지주소) c(2000번지주소) d(3000번지주소) |
heap |
힙메모리내 영역 String Constant pool ->(문자열 상수들이 모이는 울타리) = Shared memory 1000번지 : “A” 2000번지 : 인스턴스(매개체) ---> 1000번지를 봄 3000번지 : 인스턴스 (매개체) ---> 1000번지를 봄 |
data |
|
text |
결론 :
JAVA에서 문자열간 비교를 위해서 ==을 쓰지 않는다. Why? 의도한 비교가 아니게됨. 문자열의 비교가 아닌 메모리 안의 주소를 비교하게 됨.
변수가 저장하고 있는 주소를 비교하고 싶은게 아니라, 문자열 자체를 비교하고 싶은 것
System.out.println(a.contentEquals(b));
'자바 프로그래밍 > 이론' 카테고리의 다른 글
예외처리, 난수(Random Number) (0) | 2020.02.10 |
---|---|
기본입력 예외관련, 제어문(if문, while문) (0) | 2020.02.10 |
자료형, 자료형 진급(Promotion), 형변환 문법(Casting), 연산자, 예외처리, 예외전가, 기본입력 (0) | 2020.02.10 |
프로그래밍의 역사, JAVA 설치, 이클립스 설치, 클래스만들기, JAVA란?, 코딩 컨벤션, 변수및 연산자, 자료형 (0) | 2020.02.10 |
Comment