SeSAC 8일차(2023-07-26)
자바 기초(조건문, 반복문, 클래스)
조건문
- 비교 연산자
==, !=, <, >, <=, >=
- 논리 연산(bool연산)
&&, ||, !, ^(두 조건이 같으면 false)
- if 문
if문 ( )에 true가 오면 { } 안의 코드 실행
( )에 false가 오면 else 문의 { } 실행
ex)
int score = 85;
if (score>=90) {
sout(“합격”);
} else {
sout(“불합격”);
}
- 중첩 if 문
if 문 안에 또다른 if 문 사용 가능
else 문 안에 또 다른 if 문 사용가능
else 안에 중첩된 if 문은 else if 문으로 대체
ex)
if (score >= 100) {
sout(“만점”);
} else if (score >= 80) {
sout(“합격”);
} else {
sout(“불합격”);
}
- switch 문
( ) 안의 결과와 case 문의 값과 비교
case의 비교 값과 일치하면 해당 case의 실행문장 수행
break를 만나면 switch 문을 벗어남, 없으면 다음 case 문 실행
case의 비교 값과 일치하는 것이 없으면 default 문 실행(생략 가능)
ex)
Scanner scanner = new Scanner(System.in);
String rat = scanner.next();
switch (rat) {
case “vvip”:{
sout(“태블릿 사은품 증정”);
break;
// vvip는 태블릿만 증정
}
case “vip”:{
sout(“키보드 사은품 증정”);
// vip는 키보드, 마우스, 수건 증정
}
case “gold”:{
sout(“마우스 사은품 증정”);
}
default:{
sout(“수건 사은품 증정”);
}
}
scanner.close();
- 문자열 비교
자바에서 문자열은 레퍼런스 타입이기 때문에 일반적인 비교연산자 사용 불가
문자열 간의 일치 조건을 판단하기 위해 equals() 사용
ex)
Scanner scanner = new Scanner(System.in);
String rat = scanner.next();
if (rat.equals(“vvip”)) {
sout(“태블릿 사은품 증정”);
} else if (rat.equals(“vip”)) {
sout(“키보드 사은품 증정”)’
} else if (rat.equals(“gold”)) {
sout(“마우스 사은품 증정”);
} else {
sout(“수건 사은품 증정”);
}
scanner.close();
반복문
반복문의 종류:
for 문, while 문, do-while 문, for-each 문
- 대입 연산자
기존 변수에 연산작업을 진행하고 결과 값을 기존 변수에 재할당
+=, -=, *=, /=
- 증감 연산자
1값에 대한 누적 더하기와 누적 빼기에 대한 연산자
++, --
- for 문
기본 형태)
for(변수초기화; 조건; 변수변화식) {
반복실행코드
}
for 문은 조건이 true이면 { } 영역 코드를 실행
변수는 for 문의 { } 영역 내부에서 사용 가능
한번의 { } 영역 코드 실행이 끝나면 변수 변화식 실행
조건이 false가 될때까지 반복
ex1)
for(int i =0; i<=10; i++) {
sout(i);
}
ex2)
int a;
for(a=1; a<10; a*=2) {
sout(a);
}
- while 문
while 문의 ( ) 안의 값이 true이면 반복, false이면 반복 중지
먼저 ( )의 조건을 보고 반복 결정하여 { } 영역 코드 실행
ex1)
// 코드 무한 반복
while (true) {
Code
}
ex2)
int i = 0;
while(i < 10) {
sout(i);
i++;
}
- do-while 문
do { } 영역 코드를 실행하고 while ( )의 조건을 보고 다음 반복 결정
적어도 한번은 실행
ex1)
// 코드를 무한반복
do{
Code
}
while (true)
ex2)
int i = 0;
do {
sout(i);
i++;
} while (i<10);
- 반복문 다루기
break:
반복문을 중단시킴
continue:
반복문을 다음순서로 바로 진행시킴
반복문 내에서 continue 명령어가 나오면 다음 코드를 실행시키지 않고 다음 반복의 시작점으로 점프
ex)
for(int i=0; i<=10; i++) {
// i가 3일 때 출력없이 건너뜀
if (i == 3) {
continue;
}
// i가 6일 때 반복 중지
if (i == 7) {
break;
}
sout(i);
}
=> 123456 출력
- 중첩 반복문
반복문 안에 반복문이 중첩되어 작성
(for문안에 또다른 for문, while문안에 for문)
- for-each 문
기본 형태)
for (변수정의: 자료구조) {
실행코드
}
자료 구조안의 데이터 개수만큼 반복
자료구조 안의 데이터가 순서대로 변수에 할당
ex)
int nums[] = {1, 2, 3, 4, 5};
for(int n: nums) {
// 배열 내부 데이터 하나씩 출력
sout(n);
}
객체 지향 자바1
- 클래스(class)
클래스의 목적:
복잡한 데이터의 구조와 기능을 하나의 캡슐화하여 인터페이스로 사용
코드의 가시성을 높여주고 유지보수성을 높여준다,
클래스의 특징:
기본적으로 필드와 메소드를 포함
메모리의 힙 영역에서 더 이상 쓸모 없을 때까지 계속 존재(가비지 컬렉터)
메모리에 생성(초기화)된 클래스는 인스턴스
- 클래스와 인스턴스
코드 상태인 클래스, 실체가 존재하는 인스턴스
코드로 정의한 클래스:
Class MyClass{
Code
}
클래스가 생성(초기화)되어 메모리에 존재하는 인스턴스:
new MyClass();
ex)
붕어빵 틀(클래스)-> 붕어빵(인스턴스)
자동차 설계도(클래스)-> 자동차(인스턴스)
- 클래스 기본구조
// 클래스 정의
접근지정자 class 클래스이름{
// 필드 정의
접근지정자 변수정의;
// 생성자 정의
접근지정자 클래스이름(초기화인자) {
초기화코드
}
// 메소드 정의
접근지정자 반환타입 메소드이름(인자) {
기능코드
}
}
ex)
public class Member {
// 필드 정의
public int id;
private String name;
// 생성자 정의
public Member(int id, String name) {
this.id = id;
}
// 메소드 정의
public String getName() {
return this.name;
}
}
- 접근 지정자
클래스 내부에 정의된 요소의 접근 범위를 지정
public: 모든 외부 클래스에서 접근 가능
protected: 동일 패키지와 자식 클래스에서 접근 가능
생략(default): 동일 패키지 내에서만 접근 가능
private: 요소가 생성된 클래스 내부에서만 접근 가능
- 필드
클래스 내부에서 정의되는 변수
인스턴스로 생성될 때 초기화
정의에서 데이터 할당을 생략하면 null 값으로 초기화
ex)
// 필드 정의(인스턴스 생성시 초기화)
public int id;
private String name;
private int point = 0;
- static
인스턴스가 생성이 안돼도 접근 가능한 필드 또는 메서드 생성
특정 메모리공간에 미리 초기화
ex)
// static 필드 정의 (미리 초기화)
public static int meta = 2342;
- this
클래스 내부에 속한 멤버를 명시적으로 가져올 때 사용
객체 자신에 대한 레퍼런스, this.멤버
this는 사용한 위치에 속한 레퍼런스로 가져오기 때문에 내부클래스나 익명클래스 사용시 주의
this의 활용:
메소드 내부의 로컬변수와 필드변수 이름이 같아 구별할 때
다른 메소드 호출 시 객체 자신의 레퍼런스를 전달할 때
메소드가 객체 자신의 레퍼런스를 반환할 때
오늘의 실습 코드: https://github.com/yubin-im/SeSAC/tree/70824d99509fce2e956827f73f694834377df7a1/20230726
'교육 (Today I Learned) > SeSAC' 카테고리의 다른 글
SeSAC 10일차 / 자바 기초(오버라이딩, 인터페이스) (0) | 2023.07.29 |
---|---|
SeSAC 9일차 / 자바 기초(클래스, 상속) (0) | 2023.07.28 |
SeSAC 7일차 / 자바 기초(변수, 연산) (0) | 2023.07.26 |
SeSAC 6일차 / SQL 기본(SQL 문-5) (0) | 2023.07.25 |
SeSAC 5일차 / SQL 기본(SQL 문-4) (0) | 2023.07.22 |