
타입과 관련된 예약어들(8개)
| 타입 | 설명 |
| byte | 8 bit 정수형 |
| short | 16 bit 정수형 |
| int | 32 bit 정수형 |
| long | 63 bit 정수형 |
| float | 32 bit 소수형 |
| double | 64 bit 소수형 |
| char | 0 ~ 65,535 범위를 갖는 정수형 |
| boolean | true, false 만 존재하는 타입 |
클래스, 메소드, 변수 선언, 객체 생성과 관련된 예약어들 (26개)
| 타입 | 설명 |
| package | 클래스의 패키지를 선언할 때 사용하며 코드 내에서 단 한 번만 지정 가능 |
| import | 다른 패키지에 있는 클래스 및 그 안에 선언된 요소들을 사용하려고 할 때 사용 |
| interface | 인터페이스 선언 |
| abstract | abstract 클래스 선언 |
| class | 클래스 선언 |
| enum | enum 선언 |
| implements | interface를 구현한다고 선언할 때 사용하며, 여러 개의 인터페이스를 구현할 경우에는 콤마로 구분하여 나열하면 됨 |
| extends | 클래스나 abstract 클래스를 확장할 때 사용하며, 하나의 클래스만 확장 가능 |
| private | 다른 클래스에서의 접근이 불가능하게 할 경우 사용 |
| protected | 같은 패키지 내에 있거나 상속받은 경우에만 접근하게 할 경우 사용 |
| public | 누구나 접근할 수 있도록 할 때 사용 |
| final | 변수에 사용할 경우 값을 변경하지 못하도록 선언하며, 클래스에 사용할 경우 확장을 못하도록 선언 |
| synchronized | 동시 접근 제어자 |
| void | 메소드에서 반환하는 값이 없음을 선언 |
| static | 하나의 인스턴스만 허용하는 제어자 |
| return | 메소드를 종료하고 값을 반환할 때 사용 |
| assert | 검증을 위한 로직 선언 |
| native | 다른 언어로 구현된 것을 선언 |
| new | 새로운 객체 생성을 선언 |
| null | 참조되고 있는 객체가 없다는 것을 선언 |
| strictfp | static 소수 값 제어자 |
| super | 상위 클래스 참조 |
| this | 현재 객체에 대한 참조를 명시적으로 나타낼 때 사용 |
| transient | Serializable 할 때 저장되거나 전송되지 않는 객체를 선언 |
| volatile | 하나의 변수를 여러 쓰레드가 참조할 때 동일한 값을 바라보도록 할 때 사용 |
| instanceof | 객체의 타입을 확인할 때 사용 |
조건 및 반복문과 관련 있는 예약어들 (10개)
| 타입 | 설명 |
| if | 데이터의 조건을 확인할 때 사용하며, if 괄호 안의 결과는 반드시 boolean 타입임 |
| else | if 조건에 부합하지 않는 경우를 선언 |
| switch | 정수형 및 String 문자열(JDK 7 이상)의 값에 따른 분기를 할 때 사용 |
| case | switch에서 선언한 변수의 값에 따른 작업을 선언 |
| default | switch에서 case 조건에 부합되는 값이 없을 때 기본적으로 수행되는 작업을 선언 |
| for | 조건에 따른 반복을 변수에 따라서 실행하고자 할 대 사용 |
| do | 한 번 수행 후 조건 반복을 하고자 할 때 사용 |
| while | 조건에 다른 반복만 수행하고자 할 때 사용 |
| continue | 반복 작업 시 조건 확인문으로 이동하고자 할 때 사용 |
| break | 반복 작업을 종료하고자 할 때 사용 |
예외 처리와 관련된 예약어들 (5개)
| 타입 | 설명 |
| try | 예외가 발생 가능한 코드의 범위 선언 |
| catch | try로 묶은 범위에서 예외가 발생할 때 처리 방법 선언 |
| finally | try~catch 수행 후 반드시 실행해야 하는 작업 선언 |
| throw | 예외를 발생 시키거나 호출한 클래스로 넘길 때 사용 |
| throws | 예외를 던질 수도 있다는 것을 선언할 때 사용 |
byte
데이터 정수형 타입 1byte = 8 bit
정수형: byte < short < int <long
short
데이터 정수형 타입 2byte
정수값을 저장하는데 사용됨
정수형: byte < short < int <long
int
데이터 정수형 4byte
제일 많이 쓰이는 기본 정수형이 아닐까 싶습니다.
정수형: byte < short < int <long
long
데이터 정수형 8byte
정수값을 저장하는 변수타입
정수형: byte < short < int <long
float
데이터 실수형 (변수) 타입 4byte
실수값 넣을때 사용됨
double
데이터 실수형 (변수) 타입 8byte
실수값을 넣을때 쓰임
char
데이터 문자형 (변수) 타입 2byte
ex)'A' 로 입력, 하나의 문자만 저장할수있음
boolean
논리형 참(true) 과 거짓(false)
default 값은 false
package
클래스들을 편리하게 관리하기 위해 묶어놓은것 (하나의 폴더라고 생각)
package 작성법: package 패키지명;
import 방법: import 패키지명.클래스명;
import
import 패키지명.클래스명;
import 패키지명.*; 을 사용하면
그 패키지 내에 모든 클래스를 가져올수있음.
java api, 외부클래스를 사용하고싶을때 쓰입니다.
단축키 : ctrl + shift + o
interface
일종의 추상클래스, 상속을 목적으로 만들어지며 다중상속가능
상수와 추상메소드만 가짐 (내용선언안함)
interface 인터페이스이름 { public static final 타입 이름 = 값 ;
public abstract 메소드이름(매개변수); }
상속은 implements 로 한다.
abstract
추상 클래스 또는 추상 메소드에 사용함
class
모든 코드는 클래스 안에 존재해야함
클래스 작성방법은 매우 간단함
class 클래스명{}
클래스 이름 첫글자는 '대문자'로 시작하는것이 좋음
ex) Pyh class
enum
final static String, int와 같이 문자열이나 숫자들을
나타내는 기본자료형의 값을 Enum으로 대체해서 사용 가능
생성자는 Public으로 할 경우 컴파일 에러가 발생하여 private로 생성
Enum은 고정된 상수들의 집합으로, 런타임이 아닌 컴파일타임에 모든 값에 대해 알아야 함
즉, 다른 패키지나 클래스에서 Enum 타입에 접근해서 동적으로 어떤 값을 정해줄 수 없음
implements
인터페이스 구현 할때 쓰임, 다중상속 가능
interface 는 메소드 선언만 되어있고
빈 껍데기 (내용이없음)
extends
클래스 상속에 쓰임
상속은 2가지 형태가 있음
1. extends - 부모의 모든권한을 가져오는것 (상속+내용까지모두)
클래스 한개만 상속가능.
2. implements - 인터페이스 (상속은 하지만, 내용은 비어있음, 추상)
다중 상속가능.
private
접근제한자 중 가장 높은보안수준(?)
같은 클래스 내에서만 접근 가능한것
순서: public > protected > default (아무것도 안적음) > private
protected
접근제한자 이며, 같은패키지와 상속받은 클래스에서 접근이 가능한것
순서: public > protected > default (아무것도 안적음) > private
public
접근제한자 중 가장 제한이 없는것
접근제한이 없기때문에 같은클래스,패키지,상속에 상관없이
누구나 이용할수있다.
final
변수에 사용할 경우 값을 변경하지 못하도록 선언하며,
클래스에 사용할 경우 확장을 못하도록 선언
synchronized
동시 접근 제한자, 쓰레드 동기화 를 위해 존재함
쓰레드2가 방(synchronized) 메소드에 들어가기위해선
열쇠(lock)이 필요한데 이 열쇠(lock) 가 딱 하나밖에없다.
쓰레드1이 방(synchronized)에 열쇠(lock)를 들고 들어갔으면
일을 마치고나와서 열쇠(lock) 를 반환할때까지
쓰레드2는 기다렸다가 쓰레드1이 방에서 일을 마치고 나오면
그 열쇠(lock) 를 받아서 방(synchronized)에 들어갈수가 있는것이다.
void
아무것도 리턴할것이 없다.
void 에 속한 메소드는 리턴할게 없어서
처리를 끝낸 후 메소드를 호출한곳으로 넘어가 제어를 함.
static
정적변수 혹은 클래스변수 라고 부르며
클래스 변수란 클래스 단위로 존재하며
클래스로부터 만들어진 모든 객체가 공유할수있는 변수를 의미
한번만 생성되고, 컴파일할때 만들기때문에 객체생성(인스턴스)이 불필요하다.
static 은 main함수 보다 먼저 실행된다 (단 한번 실행함)
static 에서는 this 와 super 를 사용할 수 없다.
return
메소드를 종료하거나 값을 반환할때 쓰임
assert
검증을 위한 로직 선언
native
자바 외 다른 프로그래밍 언어로 구현되었음을 알려줌
new
인스턴스,객체를 만들때 사용
객체를 생성하여 메모리공간을 만듬
null
ex) Box box1 = null
변수선언 하고 box1 의 값은 null로 초기화 시킨것
메모리에 할당 안된상태
숫자타입의 변수는 null을 넣을수없음
super
상위 클래스의 생성자를 호출할때 또는
상위 클래스의 멤버변수 또는 메소드에 접근할때 사용됨.
super 로 호출하기 위해선 해당 멤버변수,메소드 가 protected,public 이여야함.
호출방법
1. 상위 클래스의 생성자 호출 super(매개변수)
2. 상위 클래스의 멤버 변수 호출 super.변수명
3. 상위 클래스의 메소드 호출 super.메소드명(매개변수)
this
인스턴스가 '본인(자기자신)' 을 가르킬때 사용할 수 있다.
true
사전적의미 - 사실,참,진실
boolean 에서도 쓰임
false
사전적의미 - 틀린,사실이아닌
boolean 에서도 쓰임
instanceof
객체타입 검사시 사용됨
형변환이 가능한지 알고싶을때
true / false로 답을 얻을수있음
if
일반적으로 사용되는 조건문
1. if(조건) {실행내용}
2. if(조건) {실행내용} else {실행내용}
3. if(조건){실행내용} else if(조건){실행내용} else if(조건){실행내용} else{실행내용}
else
'사전적내용 - 또 다른 , 다른'
if~else 문에 쓰임
총 3가지 형식이 있음
1. if(조건) {실행내용}
2. if(조건) {실행내용} else {실행내용}
3. if(조건){실행내용} else if(조건){실행내용} else if(조건){실행내용} else{실행내용}
switch
조건문 중 하나
조건의 수가 많을때는 if문 보다 switch문을 사용하는것이 더 좋다.
switch(조건식) {
case 값1 : 내용 break;
case 값2 : 내용 break;
case 값3 : 내용 break;
case 값4 : 내용 break;
default : 내용
}
case
switch ~ case ~ default 를 많이 봤을것이다.
switch 조건문에서 사용함.
case 문에서는 리터럴과 상수만 허용
변수는 안됩니다~
break 를 만나면 switch 문을 빠져나옴
default
접근제어자 및 switch 문 에서 쓰임
접근제어자는 클래스,메소드,멤버변수 앞에 아무것도 선언을 안하면 default 가 됨.
switch 문에서 default 는 case 문을 돌다가
해당하는 case 가 없으면 default 로 와서 실행함.
for
반복문 중 하나
for(초기값;조건식;증가값){내용}
ex ) for(int i = 0 ; i <= 9; i++)
{
System.out.println(i);
}
0부터9까지 화면에 뿌려줌
do
do~while 문에서 쓰임
하지만 잘 쓰이지 않는 do~while 문
do { 반복 실행 내용 } while (조건문)
while
반복문 for문과 while문은 항상 서로 변환이 가능함.
while(조건식) { 조건식이 맞으면 수행할 내용 }
*주의점 초기값 위치는 while문 밖에해야한다.
while 문 내에 하면 무한루프에 빠진다.
continue
반복문, 루프돌때 현재 루프를 끝낸뒤,
뒤에 내용 무시하고
앞으로가서 다음 루프를 실행함
break
반복문 또는 Switch 문을 벗어나거나 멈출때 사용함
try
try~catch~finally문에서 사용됨
예외처리 할때 사용됩니다.
try { 예외가 발생할만한 코드 }
catch(Exception e){ 예외처리 방법 }
예외가 발생할만한 코드를 try {} 안에 넣고
예외가 발생하면 실행을 멈추고 catch{}안의 내용을 실행함
finally{ try~catch 끝난후 처리할내용 }
예외처리 순서
try 문 -> 예외발생 -> catch -> 예외확인/에러처리 -> finally 예외발생 유무상관없이 실행
catch
try~catch~finally문에서 사용됨
예외처리 할때 사용됩니다.
catch(){}
() 안에는 예외에 해당하는 인스턴스를 집어넣음
ex) catch(예외클래스 변수) // catch(Exception e)
{} 안에는
예외 처리 내용을 적어넣음
예외처리 순서
try 문 -> 예외발생 -> catch -> 예외확인/에러처리 -> finally 예외발생 유무상관없이 실행
finally
try~catch~finally 예외처리에 쓰임
switch 문의 default 처럼 쓰임
try { 예외가 발생할만한 코드 }
catch(Exception e){ 예외처리 방법 }
예외가 발생할만한 코드를 try {} 안에 넣고
예외가 발생하면 실행을 멈추고 catch{}안의 내용을 실행함
finally{ try~catch 끝난후 처리할내용 }
예외처리 순서
try 문 -> 예외발생 -> catch -> 예외확인/에러처리 -> finally 예외발생 유무상관없이 실행
throw / throws
둘다 예외를 던질때 사용
throw 사전적의미 '던지다'
throw 와 throws 의 차이점
throw는 메소드내에서 상위 블럭 으로 예외를 던짐
throw 는 현재 메소드에서 상위 메소드로 예외를 던짐
throw 는 일부러 예외를 발생시킬때 사용되기도 하지만
현재 메소드 에러를 처리한후 상위 메소드에 에러정보를 줌으로써
상위 메소드에서도 에러를 감지할수있음
'개념정리(JAVA)' 카테고리의 다른 글
| 자료구조 (0) | 2024.04.17 |
|---|---|
| 가비지 컬렉션(Garbage Collection) (0) | 2024.03.28 |
| JUnit에 관하여 (0) | 2024.03.28 |
| Test & TDD (0) | 2024.03.28 |
| 이진검색 (2) | 2024.03.27 |