2020. 10. 29. 10:39ㆍWeb_Back-end/Java SE
◎ 중첩 for문 쉽게 이해하기
위와 같은 값을 출력해보기
▼ 출력방법은 아래와 같다 ▼
for(int i=0; i<=4; i++) {
//i는 0부터 시작하여 3까지 반복
//j는i보다 1만큼 큰 값으로 시작하여 4까지 반복
for(int j=i+1; j<=4; j++) {
System.out.print(i + " " + j + " ");
}
System.out.println("");
}
※ 코드를 짤 때 먼저 문제를 쉽게 이해해보기
for (초기값; 조건식; 증.감소식)
i | j | i | j | i | j | i | j |
0 | 1 | 0 | 2 | 0 | 3 | 0 | 4 |
1 | 2 | 1 | 3 | 1 | 4 | ||
2 | 3 | 2 | 4 | ||||
3 | 4 |
표를 보면 i는 0부터 시작하여(초기값) 3까지 반복(조건식)
j는 i보다 1만큼 큰 값으로 시작하여(초기값) 4까지 반복(조건식)
이렇게 풀어서 생각하면 코드를 짜기 쉽다.
◎ 한번 더 해보기
for(int i=0; i<=3; i++) {
for(int j=0; j<=i; j++) {
System.out.print(i + " " + j + " ");
}
System.out.println("");
}
i는 0에서 시작, 3까지 반복
j는 0에서 시작, i와 같은 값까지 반복
◎ 무한 loop(infinite loop)
- 끝나지 않는 프로그램을 만들어야 할 때(OS, 시계, 서버,,,)
- 초기값, 조건식, 증.감소식을 작성하지 않을 때
- == 증가하는 값을 알 수 없다
- for( ; ; ){
- }
- 조건식만 생략하여 작성할 때
- == 증가하는 값을 알 수 있다
- for(초기값; ; 증.감소식){
- }
※ break; //switch~case, for, while, do~while을 빠져나갈 때
※ 만약 아래처럼 작성하면 코드는 실행되지 않는다. error
for( ; ; ){
}
코드
☆ 이유 : 무한루프 다음 작성된 코드는 실행되지 않는다 따라서 에러가 발생함
◎ 개선된 for문 _ for each
- 인덱스를 사용할 수 없고,
- 입력된 배열 또는 Collection (List.Set) 의 처음 방부터 끝방까지 출력하는 일
- 기존의 for보다 처리되는 속도가 느리다
- Java SE 5 (JDK 1.5) 에서부터 지원하는 문법
- 문법)
- for(데이터형 변수명: 배열명){
- 변수명; //방의 값을 사용할 수 있다
- }
- 배열명에는 List명, Set명 올 수 있다
◎ 시작과 끝을 알 수 없을 때 사용하는 반복문 => while, do~while
while | do~while |
최소 0번 수행에 최대 조건까지 수행 | 최소 1번 수행에 최대 조건까지 수행 |
문법) 초기값; while ( 조건식 ) { 반복수행문장; 증.감소식; } ==> for문과 같이 사용한 것 (아직 많이 배우지 않아서 이렇게 쓸 예정) while(조건식){ 반복수행문장; } ==> 보통 이렇게 사용 |
문법) 초기값; do{ 반복수행문장들; 증.감소식; } while (조건식); 조건식의 결과가 true이면 do로 올라가서 실행 false이면 반복문 빠져나옴 ==> 조건식이 참이든, 거짓이든 do의 반복수행문장이 적어도 한번은 실행됨 |
조건식 : 관계연산자, 일을 하는 method | |
무한루프) while(true){ 반복수행문장; } |
무한루프) do{ 반복수행문장들; 증.감소식; }while(true); |
continue | |
-반복문의 수행을 건너 뛸 때 사용 -continue를 반복문의 제일 마지막 줄에 기술하지 않는다 -조건식에 넣어서 사용(ex: if문) |
|
for(int i=0; i<10; i++){ continue; //정의된 아랫줄을 실행하지 않는다 System.out.println("반복수행문장"); ==> error } for(int i=0; i<10; i++){ if(조건식){ continue; //정의된 아랫줄을 실행하지 않는다 } System.out.println("반복수행문장"); } |
◎ 특수문자 Escape Character
- 문자열안에 사용하면서 정해진 기능을 수행하는 문자들
- \문자 (\뒤에 나오는 하나의 문자로 정해진 기능이 수행된다)
- 특수문자는 정해져있다
- 형식
- "\문자"
특수문자 | 기능 |
\n | 개행 - 줄 바꿈 |
\r | 커서를 그 줄에 가장 앞으로 이동 (Windows에만 존재) windows는 커서를 앞으로 옮기고 줄을 변경해주므로 코드값이 \r\n으로 형성된다 |
\t | Tab - tab |
\\ | \를 사용할 때 (windows의 경로표현) |
\" | "를 사용할 때 |
\' | '를 사용할 때 (\없이도 사용가능_간섭이 일어나지 않기 때문에) |
\b | backspace의 기능 |
※ white space : spacebar 나 tab key , enter key를 눌러서 생기는 공백
◎ 클래스와 변수
- 변수(Variable)
- 목적 : 프로그램에서 사용할 값을 메모리에 일시적으로 저장하기 위해
- java에서는 istance variable, static variable, local variable 3가지 종류를 제공한다
- 변수를 선언하는 위치에 따라 다른 변수가 만들어진다
- 각각의 변수는 생명주기와 사용범위, 사용방법이 다르다
변수종류 | instance(member)variable | ||
특징 | class field 에 선언한다 | ||
객체화하여 사용하는 변수 | |||
class를 객체화하면 객체마다 변수 생성 | |||
자동초기화 (개발자가 초기화값을 넣지 않아도 된다) |
|||
객체가 Garbage Collector 에 의해 사라질 때 메모리에서 사라진다 | |||
JVM 의 heap 메모리에 생성된다 | |||
static 영역에서는 instance 영역에 직접 접근할 수 없다 =사용방법=> 객체화 | |||
생성되는 객체마다 변수의 값을 따로 저장하고 사용해야할 때 사용(class 배울때 다시배움) | |||
작성법 | access modifier (접근지정자, 접근제한자, 접근수정자 _ 다 사용하는 용어) access modifier data type variable name = default value; 접근지정자 데이터형 변수명 = 초기화값; |
||
사용방법 | class Test{ int i; //instance 영역에 선언된 instance변수 public static void main(String[] args){ //static 영역 Test t = new Test(); //객체화 : 클래스명 객체명 = new 클래스명(); System.out.println( t.i ); //변수의 사용 : 객체명.변수명 Test t1 = new Test(); System.out.println( t1.i ); } } |
||
Java Test |
|||
instance 변수의 초기화 값 |
- instance변수를 선언하고, 필요한 곳에서 객체를 생성하면(객체화)
|
★ 접근지정자
변수의 접근지정자 | ||
폴더개념 | public | 클래스 외부에서 사용가능 |
protected | 패키지가 다르면 상속관계의 자식클래스에서 사용가능 패키지가 같다면 같은패키지, 다른 클래스에서 사용가능 |
|
private | 클래스 안에서만 가용가능 | |
default | 변수앞에 아무것도 선언하지 않은것 패키지가 다르면 사용불가 같은패키지, 다른 클래스에서 사용가능 |
|
메모리개념 | static | 공용메모리에 생성 |
final | 값 변경 불가 | |
transient | 직렬화 방지키워드(IO Stream을 타고 나가지 못하도록 막는 일) |
★ 데이터형
- 기본형 데이터형, 참조형 데이터형 사용가능
★ 변수명
- 소문자로 시작한다
- 여러개의 단어로 변수명이 구성되면 낙타체_첫단어는 모두 소문자+나머지 단어는 첫글자만 대문자
- 변수명에 특수문자를 포함하지 않는다 (underbar 정도만 사용 예: int user_Value=0;)
▼ instance 변수에 설정된 접근지정자와 사용가능 범위 ▼
접근 지정자 | 클래스 | 패키지 | 자식 클래스 | 전체 세계(project) |
public | o | o | o | o |
protected | o | o | o | × |
無 (default) | o | o | × | × |
private | o | × | × | × |
▼아래 글 참고▼_접근지정자
2020/09/10 - [개발/JAVA] - DAY+11 클래스와 메소드 심화(1)/ getter,setter,생성자
DAY+11 클래스와 메소드 심화(1)/ getter,setter,생성자
◎ 접근제어 접근 지정자 클래스 패키지 자식 클래스 전체 세계(project) public o o o o protected o o o × 無 (default) o o × × private o × × × 클래스에 있는 변수나 메소드에 마음대로 접근하는 것을..
jjiny-bbany.tistory.com
2020/09/03 - [개발/JAVA] - DAY+10 메소드 (method)
DAY+10 메소드 (method)
◎ 메소드(method) 메소스 : 입력을 받아서 처리결과를 반환하는 상자 각 메소드는 하나의 작업만 하도록 작성 (권장함) 각 메소드는 이름을 가지고 있다 (이름을 통해 호출//무명함수는 제외) 구조
jjiny-bbany.tistory.com
'Web_Back-end > Java SE' 카테고리의 다른 글
[Java] 2020.10.30. day_8 객체화, static변수, method(intstance, static), 반환(return) (0) | 2020.10.30 |
---|---|
[Java] 2020.10.29. day_7 Tip(자바 JDK 버전바꾸기, 저장시 자동컴파일) (0) | 2020.10.29 |
[Java] 2020.10.28. day_6 package, for문, eclipse (0) | 2020.10.28 |
[Java] 2020.10.27. day_5 제어문_if, if else, else if, switch~case, break (0) | 2020.10.27 |
[Java] 2020.10.26. day_4 연산자 (0) | 2020.10.26 |