01. 자바프로그래밍
#자바 가상기계(JVM)
바이트 코드를 해석하고, 실행할 수 있는 가상의 운영체제 역할을 수행
JVM은 OS와 자바프로그램의 중간다리 역할 수행
자바 가상기계 자체는 각 플랫폼에 맞게 포팅되야 하므로 플랫폼 종속적
자바 가상기계는 서로 다른 플랫폼에서 동일한 자바 실행환경을 제공
02. 변수와 자료형
# 변수의 이름 제약사항
변수의 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수문자 중에도‘$, _’ 만
사용할 수 있다.
변수 이름은 숫자로 시작할 수 없다.
자바에서 이미 사용 중인 예약어는 사용할 수 없다.
# print 출력문
*print = System.out.print();
*println = System.out.println();
*printf = System.out.printf();
단순출력만 해주므로 추가기능을 하지 않음
- println
Enter 기능이 포함된 출력문
- printf
서식을 지정하여 출력함
* 서식
자료형 바이트 크기범위
정수자료형 byte1-2^7 ~ 2^7-1
short2-2^15 ~ 2^15-1
int4-2^31 ~ 2^31-1
long8-2^63 ~ 2^63-1
문자자료형 float4-2^31 ~ 2^31-1
double8-2^63 ~ 2^63-1
실수자료형 char2
논리자료형 boolean1 ture, false
# 변수
# 변수의 이름 지을 때 규칙
변수의 이름은 영문자 (대문자, 소문자)나 숫자를 사용할 수 있고 (단 변수명이 숫자로 시작해선 안됨)
자바에서 이미 사용 중인 예약어(키워드)는 사용할 수 없다.
특수문자는 $, _ 만 사용 가능
# 변수명 잘못 사용된 예
- int char; // 예약어(키워드)를 변수명으로 사용 못함.
- int 1bc // 숫자로 시작할 수 없음
- int b#@ // 특수문자는 $, _ 만 가능
# 자료형
- int형 : 정수 사용 시 가장 많이 사용됨(자바에서 정수형은 디폴트가 int이다.) ※default : 시스템이 미리 정해진 값이나 조건을 자동으로 적용시키는 것
- long형 : java에서 정수를 표현하는 가장 큰 단위
Long형에 int 자료형 최대범위 초과 수를 long에 대입할 때 숫자 뒤에 L 또는 l를 붙인다.
예시) long num=2000; long num=12345678900L;
int 자료형은 값은 1,5,10,12 등의 정수만 가능하다.
String 자료형의 값은 "z" "korea" 등의 문자나 문자열만 가능하다.
#정수 자료형
자료형이 다른 정수끼리 더할 때?
- 프로그램이 실행되어 정수값을 연산할 때 4바이트를 기본단위로 사용.
- 두 수를 연산하기 전 두 정수는 int형으로 저장됨.
- int형: 정수를 사용할 때가 가장 많이 사용.
- long형: 자바에서 정수를 표현하는 가장 큰 단위
long num=12345678900L;
long num=1000;
- ‘Long‘형에 ‘int‘자료형 최대범위 초과수를 long에 대입할 때 숫자 뒤에 ‘L‘이나 ‘l‘를붙인다
03. 자바의 여러 가지 연산자
# 연산자 : 연산에 사용하는 기호
# 기본 연산자
- 대입 연산자
*왼쪽 변수 = 오른쪽 변수 (또는 식)
부호 연산자
*+,-연산자로 이항연산자, 단항연상자로 사용
산술 연산자
*사칙 연산에서 사용하는 연산자 (+ - * / %)
증감 연산자
* 단항 연산자로 연산자 앞, 뒤에 사용하여 1만큼 늘리거나 줄인다.
관계 연산자
*항이 두 개이며, 두 개의 항 중에 어느 것이 더 큰지 작은지 같은지 여부를 검사
논리 연산자
*두 가지 명제 가 모두 참이면 논리 곱 = 참 하나만 참이면 논리 함 = 참
복합 대입 연산자
*대입 연산자와 다른 연산자를 조합해 하나의 연산자처럼 사용하는 연산자
조건 연산자
*세 개의 항을 이용해 조건연산이 참인 경우와 거짓인 경우에 다른 결괏값이 나온다.
#비트 연산자
-비트논리 연산자 : 비트 단위로 & | ^ ~ 연산이 이루어짐
*& = 두 개의 비트값이 모두 참일 때 1
*| = “ 하나라도 1이면 1
*^ = 연산자가 =면 0 ≠ 1
*~ = 0을 1로 1을 0으로
04. 제어흐름 이해허기
# 조건문
- if : 조건식에는 true 또는 false 값을 나타내는 연산식이나 boolean 변수가 올 수 있다.
if문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.
*if / else if → 각 조건식이 true이면 각 if와 else if의 블록을 실행한다.
*else → 조건식이 false이면 else 블록이 실행
*구조
if (조건) {
실행할코드
}
if else (조건) {
실행할코드
}
else {
위의 모든 조건이 거짓일 때 실행할코드
}
- switch-case : 입력변수의 값과 일치하는 case 입력값(입력값 1, 입력값 2,...)이 있다면 해당 case문에 속한 문장들이 실행된다. case문마다 break라는 문장이 있는데 해당 case문을 실행 한 뒤 switch문을 빠져나가기 위한 것이다.
*구조
switch(입력변수) {
case 입력값1: ...
break;
case 입력값2: ...
break;
default: ...
break; }
# 반복문
- while : 조건에 따라 반복할지 말지 결정할 때 사용
* 조건식이 트루면 반복 펄스면 반복응 멈춘다.
*구조
while (조건) {
반복할 실행문;
}
- for : 특정한 코드를 반복하기 위해 사용
* for 뒤에 소괄호 안에, 초기화값; 조건식; 증감식 순서대로 입력한다.
*구조
for(초기화식;조건식;증감식){
반복할 실행문
}
- continue문
* 반복문에서 실행되면 증감식(for) 또는 조건식(while/do-while)으로 이동한다
05. 클래스와 객체
# 클래스
객체의 속성과 기능을 코드로 구현한 것
클래스 이름은 대문자로 시작 (개발자들 사이의 규칙, 코딩 컨벤션)
패키지 이름은 소문자
멤버변수 (클래스 속성을 구현)
! 구조접근제한자
# 메서드 : 클래스 기능을 구현
# 패키지 : 클래스 파일의 묶음
- StudentView클래스
- 전체이름 : domain.student.view.StudentView
- 같은 이름의 클래스라도 다른 패키지에 속해 있으면 서로 연관이 없음
# 카멜 케이스 명명 규칙(Camel Case naming conventions)
- 이름에 여러 단어들을 혼합하여 사용한다면 첫 번째 단어는 소문자, 두 번째 단어부터는 대문자로 시작 예) luckySeven, myHouse, firstName 등
- 이름을 지을 때 숫자를 먼저 입력 불가
- 대소문자 구분
# 장점
- 가독성을 높일 수 있다.
- 다른 개발자들이 이해하기 쉬움
- 유지보수
권장사항, 회사 내부규칙 우선
06. 클래스와 객체 2
# this 참조변수와 생성자
this 참조변수 : 인스턴스가 바로 자신을 참조하는 데 사용하는 변수
→ 객체 내부에 있는 인스턴스 멤버에 접근하기 위한 변수
클래스 내에 변수가 많아지는 것을 막기 위해 사용
07. 배열과 ArrayList
# 배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
* 인덱스(index)는 0부터 시작
*구조
# 다차원 배열 : 배열이 여러 개로 되어 있는 형태
*구조
# ArrayList : 배열에서 많은 조작이 필요할 때유용하게 사용되는 클래스
* Generic을 사용해 자료형을 선언 (Generic = 자료형을 일반화시키는 것! 구조
* 배열은 항상 한 가지의 타입만을 요소로 가질 수 있지만, 상속을 통해 상속하는 모든 것을 요소로 넣을 수 있다.! 구조
08. 상속과 다형성
# 상속 : 하나의 클래스가 또 다른 클래스를 선택해 그 클래스의 정보들을 물려받는 것
*상속받을 때는 ’ 접근 제어자‘가 private인 것은 불가능하고, 패키지가 다를 때는 default인 경우에도 상속이 불가능함
* 다중상속이 불가능 → 여러 ’(자식) 클래스‘가 하나의 ’(부모) 클래스‘로부터 정보를 물려받는 것은 가능하지만, 한 ’(자식)클래스‘가 여러 ’(부모)클래스‘로부터 정보를 물려받는 것은 불가능
*구조
# 메서드 오버라이딩
# 다형성 ; 하나의 클래스가 여러 가지 모습을 할 수 있도록 만드는 것
* 상속이나 인터페이스라는 개념을 이용하는 이유는 바로 다형성을 구현하기 위해서임
# 다운 캐스트 & instanceof
*다운캐스트 = 하위 클래스로 형 변환하는 과정
*instanceof = 다운캐스팅을 하기 전에 상위클래스로 형 변환된 인스턴스의 원래 자료형을 확인하는 예약어로 오류를 막기 위해 사용
09. 추상클래스
# 추상클래스 : 여러 클래스의 내용 중 공통적인 부분만을 추출해 만들어진 클래스
*추상 클래스에는 하나 이상의 추상 메서드를 포함. 추상 메소드가 없어도 ㄱㅊ
* 선언만 있고, 본체는 없는 메소드
* 추상 클래스를 상속받는 클래스가 선언만 되어 있는 메서드의 내용을 채운다.
*추상 클래스와 추상 메서드를 선언할 때는 abstract을 쓴다
*각 클래스들에 존재하는 공통된 필드와 메소드를 뽑아내어 이름을 통일하기 위해 사용
# 템플릿 메서드 : 로직 흐름을 정의하는 역할
# final 예약어 : 더 이상 수정핫 수 없다
* 변수 = 상수 / 메서드 = 하위클래스에서 재정의할 수 없음 / 클래스 = 상속할 수 없음
10. 인터페이스
#인터페이스 란?(interface)
• 모든 메서드가 추상 메서드( abstract method)로 이루어진 클래스
• 형식적인 선언만 있고 구현은 없음
! 구조
• 인터페이스에 선언된 모든 메서드는 public abstract로 추상 메서드
• 인터페이스에 선언된 모든 변수는 public static final로 상수
'2022 > JAVA 자바' 카테고리의 다른 글
| [JAVA]SWING 예제 (0) | 2022.09.15 |
|---|---|
| [JAVA] 자바 정리 (0) | 2022.09.15 |
| [JAVA] 기초 (0) | 2022.04.09 |