- 인터프리터(Interpreter) 방식의 언어 : 전체를 한 번에 컴파일하지 않고 명령어 하나하나를 컴퓨터가 알 수 있는 코드로 그 즉시 변환하여 실행하는 방식.
- 컴파일(Compile) 언어 : 미리 컴파일하여 컴퓨터가 알 수 있는 코드로 변환한 후 실행하는 언어.
*컴파일 Compile : 소스코드 파일이 실행 가능한 코드로 변환되는 과정.
- 객체지향 프로그래밍(OOP ; Object-Oriented Programming)
: 여러 개의 독립된 객체들을 만들고 객체 단위로 개발함.
: 개체 간의 특성에 따라 처리하고자 하는 특정 업무를 처리하고 결과를 데이터 객체로 넘겨주며, 객체 간 소통이 가능해짐.
: 객체마다 유연하게 프로그램이하여 시스템의 확장, 변경에 쉽게 대응할 수 있고, 안정적인 유지 보수가 가능함.
: 장점 - 직관적 분석 가능 / 코드 재사용이 용이함
: 단점 - 처리 속도가 상대적으로 느림 / 설계 시 많은 시간과 노력이 필요함
-빌드 Build : 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정, 혹은 그에 대한 결과물.
1. 패키지 Pakcage
: Java 파일의 최상단에 위치함.
: 객체 간의 접근 시에 기준이 되는 정보.
2. 클래스 Class
(1) 필드 = 멤버 변수 Field
-클래스 내에 위치.
: 클래스를 생성하지 않고 바로 사용할 수 있는 변수 > 클래스 변수
+) static 키워드를 사용하여 만든 변수도 클래스 변수에 속함.
ex) static final int ONE = 1;
++) static block을 이용하여 초깃값을 정의할 수 있음.- 메모리에 올라가면서 호출되기 때문에 생성자보다 먼저 실행됨.
static final int ONE;
static final int TWO;
static final int THREE;
static {
System.out.println("static block 호출");
ONE = 1;
TWO = 2;
THREE = 3;
}
: new 키워드를 사용해서 인스턴스를 생성한 뒤 사용할 수 있는 변수 > 인스턴스 변수
-클래스 변수, 인스턴스 변수 예제
public class Sample{
public static void main(String[] args){
//인스턴스 변수를 사용할 때는 new키워드로 인스턴스 생성 후 이용 가능
VO vo = new VO();
vo.name = "example";
vo.age = 21;
System.out.println(vo.name+" "+vo.age); //인스턴스 생성 후 사용 > 인스턴스 변수
System.out.println(VO.ONE+" "+VO.TWO); //별도의 인스턴스 생성 없이 사용 > 클래스 변수
}
public Class VO{
//필드
String name; //인스턴스 변수
int age; //인스턴스 변수
static final int ONE = 1; //클래스변수
static final int TWO = 2; //클래스변수
}
}
(2) 메서드 Method
: 함수의 작은 개념.
+) ∵ 함수는 독립적으로 사용할 수 있으나, 메서드는 클래스에 종속되어 사용되기 때문.
- 어떤 문제를 처리하기위한 단위를 메서드의 형태로 구현함.
- 메서드명은 보통 소문자로 시작하고 주로 동사형으로 작성함.
- 메서드 구조
[접근 제어자] [반환될 자료형] [메서드명](매개변수 . .. ) {
처리문
return 반환될 자료형의 리터럴;
}
- 메서드 구조 예제
publi void doPause(int param) {
처리할 명령문
//return 타입이 void이기 때문에 따로 return문이 필요하지 않음.
}
- 지역 변수 Local variable : 메서드 내의 변수.
- 매개변수 Parameter : 메서드에서 전달받은 변수.
- 인자 Argument : 메서드 호출 시 전달하는 변수.
- this
: 인스턴스 자신을 가리키는 참조 변수.
: 생성자나 메서드에서 사용 - 멤버 변수 선택시에 주로 사용하며, 특히 매개변수와 변수명이 동일할 경우 구별 목적으로 사용됨.
+) ∵ 매개변수와 멤버 변수명이 동일할 경우, 메서드 내에서는 매개변수가 우선순위가 됨. > 매개변수 값에 매개변수 값을 넣는 것이 되기 때문에, 변숫값에 대한 할당은 영향을 미치지 않게 됨(The assignment to variable value has no effect)
: 사용 > this.멤버 변수
- 오버로딩 Overloading
: 메서드명은 같으나 매개변수의 자료형이나 수를 다르게 구성하여 다양한 유형을 처리하기 위한 기술.
--예시
public class Compute {
int result;
void setValue(int value){
result += value;
}
void setValue(int value, int value2){
result += value + value2;
}
//setValue라는 동일한 이름을 가지는 메서드가 존재하나, 매개변수에 따라 다른 메서드가 실행됨.
}
- 가변인자 Variable arguments
: 똑같은 자료형이 계속 반복될 경우, 현재의 자료형이 계속해서 반복된다는 의미로 마침표 3개를 연속으로 입력하여 표현하는 것.
--구성
[접근 제어자] [메서드명] (자료형... 변수명) {
명령문
}
--예시
public class Samle{
public static int total = 0;
public static void main(String[] args){
System.out.println(sum(1, 2, 3)); //결과 : 1+2+3 = 6
System.out.println(sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); //결과 : 6(result값)+1..10 = 6+55 = 61
}
public static int sum(int... a){
for(int i : a){
total +=i;
}
}
}
-- 단, 일반 인자와 함께 사용할 경우, 가변 인자가 맨 뒤에 위치해야 하며, 무조건 1개만 들어가야 함.
---예시
public void run(int a, int...b) //예시 1
public int ages(int c, int d, int...e) //예시 2
- 재귀함수 Recursive Function
: 메서드 내에서 스스로를 반복적으로 호출하여 처리하는 방식.
- 반복의 끝이 반드시 존재한다는 조건이 필요함.
- 일정한 패턴의 형태로 처리되는 구조일 때 주로 사용.
--예시
public class Sample{
static int sum;
public static void main(String[] args){
System.out.println(sum(10)); // 실행 시 55가 나옴
}
public static int sum(int a){
sum += a;
if(a == 0){
return sum; //자기자신을 호출함
} else{
a--;
return sum(a); //자기 자신을 호출함
}
}
}
'개인공부' 카테고리의 다른 글
빵형 자바 10일차 ; 생성자 (0) | 2024.03.19 |
---|---|
빵형 자바 8일차; 조건문 (0) | 2024.03.05 |
빵형 자바 7일차 ; 반복문 (0) | 2024.03.03 |
빵형 자바 6일차 ; Arrays 메서드(2) (0) | 2024.03.02 |
빵형 자바 5일차 ; 3차원 배열, Arrays 클래스와 메소드(1) (0) | 2024.02.28 |