728x90
반응형

📂 JAVA 개념
📌 특징
- C++ 문법과 구문 + Small talk의 객체지향
- 메모리 해제 (garbage collector)
- 포인터 없음
✔ 구조
1) 운영체제
2) JVM (Java Virtual Machine)
3) Java API (클래스 라이브러리)
4) Java 언어
✔ java 실행과정
- 확장자 : *.java
- java ➡ class ➡ JVM 실행
✔ JVM과 JDK(자바 개발 키트) 설치
- JDK 구성
- java 프로그램 개발 도구 (컴파일러)
- JRE -> JVM + 여러 표준 클래스
- JDK 다운로드
✔ java 프로그래밍 툴
- 이클립스(eclipse) 사용
- 이클립스 다운로드
📌 표준 출력
✔ 프로그램 구조
public class 클래스명{ (1)
public static void main(String[] args) (2)
{
System.out.println("기본구조"); (3)
}
}
(1) java의 기본 클래스, 클래스명
(2) 프로그램의 진입점
(3) java 프로그래밍
- 클래스 앞에 public 붙는 경우 : 파일명 = 클래스명
- 1개의 file에는 1개의 class만 사용
✔ 표준 출력
- 출력
- System.out.println("A : " + n);
- System.out.pirnt(n);
- System.out.printf("A : %d", n);
- java.lang 패키지 안에 있는 클래스
- Object : 최상위 클래스
- System
📌 연산자
✔ 상수
- 숫자 상수 + 문자 상수
- 사용하는 모든 불변의 값
✔ 데이터형
- 기본형
- boolean (1 byte)
- char (2 byte)
- byte (1 byte)
- short (2 byte)
- int (4 byte)
- long (8 byte)
- float (4byte)
- 참조형 (메모지 주소를 저장하는 데이터형)
- 클래스
- 배열
- 인터페이스
✔ 변수
- 데이터형 변수명;
- 상수를 저장하는 메모리 공간
✔ 연산자
- 산술 연산, 비교 연산 등 키워드
- 증감 연산자 : ++, --
- 산술 연산자 : +, -, *, /, %
- 비교 연산자 : <, <=, >, >=, ==, !=
- 시프트 연산자 : <<, >>
- 비트 연산자 : &, |, ^, ~
- 논리 연산자 : &&, ||, !
- 조건 연산자 : (조건) ? (참) : (거짓)
- 대입 연산자 : =, +=, -=, *=, /=, %=
📌 문법
✔ 반복문
1) for문 (초기화; 조건식; 증감)
for (int i = 0; i < 10; i++) {
}
2) while문 (조건식)
while(i != 0) {
}
3) do ~ while문 (조건식)
do {
}
while (i != 0) {
}
✔ 선택문
1) if ~ else문 (조건식)
if (i != 0)
명령어;
else if (i >= 10)
명령어;
2) switch문 (표현식)
switch(n) // 정수형 타입
{
case 1:
break;
case 2:
break;
default:
break;
}
✔ break와 continue
- break
- 가장 가까운 반복문을 빠져나감 (goto 기능과 유사)
- 기본 기능 + 라벨(label)
OUT : while(true)
{
while(true)
{
i++;
if (i == 3)
{
break OUT;
}
}
}
📂 JAVA 데이터형
📌 배열
- 같은 변수명 + 같은 데이터형 + 다수의 변수
//참조형 배열변수
int nArray[]; 또는 int[] nArray;
//객체
nArray = new int[10];
✔ 일차원 배열
1) 배열 선언 형식
- 참조형 배열변수
- 데이터형 배열변수명[];
- 데이터형[] 배열변수명;
2) 배열 생성
- 배열변수명 = new 데이터형[개수];
- 데이터형[] 배열변수 = new 데이터형[개수];
3) 초기화
- 기본값
- char형 : null
- boolean형 : false
- int형 : 0
- float형 : 0.0
- 선언과 동시에 초기화 하는 형식
//배열 선언
int nArray[];
int[] nArray;
// 배열 생성
nArray = new int[7];
int[] nArray = new int[7];
//초기화
int[] nArray = {1, 2, 3};
✔ 이차원 배열
1) 배열 선언 형식
- 참조형 배열변수
- 데이터형 배열변수명[][];
- 데이터형[][] 배열변수명;
2) 배열 생성
- 행/열 같은 배열 생성
- 배열변수명 = new 데이터형[행개수][열개수];
- 데이터형[][] 배열변수 = new 데이터형[행개수][열개수];
- 행/열 다른 배열 생성
- 배열변수명 = new 데이터형[행개수][];
배열변수명[행번호] = new 데이터형[열개수];
- 배열변수명 = new 데이터형[행개수][];
3) 초기화
- 행과 열 단위로 초기화
- 선언과 동시에 초기화
//배열 선언
int nArray[][];
int[][] nArray;
//배열 생성
nArray = new int[2][2];
int[][] nArray = new int[2][2];
int[][] nArray;
nArray = new int[3][];
nArray[0] = new int[2];
nArray[1] = new int[3];
nArray[2] = new int[5];
//초기화
int[][] nArray = new int[2][2];
nArray[0][0] = 1;
nArray[0][1] = 2;
nArray[1][0] = 3;
nArray[1][1] = 4;
int[][] nArray1 = {{1, 2}, {3, 4}};
int[][] nArray2 = {{1, 2}, {3, 4, 5, 6}};
📂 JAVA 클래스
📌 클래스
✔ 개념
1) 형식
- 멤버변수 (필드) : 클래스 안에 선언된 변수
- 공용 변수 (전역 변수와 유사)
- 클래스 안에서 사용
- 메소드 (method) : 클래스 안에 선언된 함수
- 일반 함수와 동일
class 클래스명 {
// field, constructor, and
// method declarations
}
✔ 객체 생성과 사용
1) new
- 멤버변수와 메소드에 접근
public static void main(String[] args)
{
Book JavaBook = new Book();
JavaBook.SetTitle("Java Programming");
System.out.println("Book Title" + JavaBook.GetTitle());
}
✔ 접근 제어자
- private : 클래스 안에서만 접근 가능
- public : 전체 접근 가능
- protected : 같은 클래스와 패키지 + 하위 클래스에서 접근 가능
- friendly or 생략 : 같은 클래스와 패키지 안에서만 접근 가능
public int m_nVar;
private int GetVar()
{
return m_nVar;
}
✔ 오버로딩
- 중복되는 메소드명을 클래스 안에서 정의 가능
- 같은 함수명으로 다양한 값을 받아 처리
✔ 생성자
- 객체가 생성될 때 1번 호출되는 메소드 (자동 호출)
- 리턴형이 없고, 클래스명=함수명
- public 필수
class MyClass
{
public MyClass() {
}
public MyClass(int nVar1, int nVar2) {
}
}
✔ this, this()
- 객체 자신을 참조하는 참조형 클래스변수/키워드
- this.멤버변수
- this.메소드()
- this
- this 사용 전에 객체 생성이 되어야함
- this()
- 생성자에서 또 다른 생성자 호출 (첫 줄에서 호출)
class A
{
public int m_nVar;
public float m_fVar = 0.5f;
public void SetPrint(int nVar)
{
this.m_nVar = nVar;
this.Print();
}
//this()
public A()
{
this(3.14f); //float 생성자 호출
m_nVar = 12;
}
public A(float fVar)
{
m_fVar = fVar;
}
}
✔ static
1) 형식
- 접근제어자 static 데이터형 멤버변수명;
- 접근제어자 static 리턴형 메소드명(...);
2) 특징
- 멤버변수는 생성되는 모든 객체에서 전역변수로 사용
- static 멤버변수와 메소드 공통점
- 객체가 생성되기 이전에 멤버변수와 메소드 사용 가능
3) 사용규칙
- static 메소드 안에서 멤버 변수를 사용할 때 항상 static 선언
- static 메소드는 같은 메소드 안의 메소드만 호출 가능
- static 메소드 안에서는 this 사용 불가
- static 메소드는 오버라이딩 불가
✔ package와 import
1) package 개념
- 자주 사용되는 클래스를 모아둔 폴더
- package 패키지명; (소문자)
- package mypackage.utility;
2) import 개념
- 클래스를 포함하고자 할 경우 (#include 역할)
- import 패키지명.클래스명;
- import 패키지명.*;
📌 상속
✔ 멤버 상속
1) 개념
- 객체를 연관시키고 계층구조를 만들어 코드 재사용함
- 오직 한 클래스만 상속 가능
- 종류
- 부모 클래스 (= 상위 클래스, super 클래스)
- 자식 클래스 (= 하위 클래스, sub 클래스)
2) 상속 형식
- class 클래스명 (자식) extends 상속 클래스명 (부모)
- 최상위 부모 클래스 : Object
- 상위 클래스의 접근지정자에 따라 접근이 제한
3) 멤버 상속
- 상위 클래스에 지정된 private 멤버
- 해당 클래스에서만 사용O
- 하위 클래스는 사용X
- 상위 클래스에 지정된 public
- 해당 클래스와 하위 클래스에서 사용O
- 외부에서도 사용O
- 상위 클래스에 지정된 protected
- 같은 패키지일 경우는 public 멤버처럼 사용O
- 다른 패키지인 경우는 상위 멤버를 하위 클래스 안에서만 사용O, 외부는 사용X
- 상위 클래스에 지정된 default
- 같은 패키지일 경우는 public 멤버처럼 사용O
- 다른 패키지일 경우는 하위 클래스에서 상위 클래스 default 멤버 사용X, 외부에서도 사용X
private | 사용 가능 | 사용 불가 | 사용 불가 |
public | 사용 가능 | 사용 가능 | 사용 가능 |
protected | 사용 가능 | 사용 가능 | (같은 패키지) 사용 가능, (다른 패키지) 사용 불가 |
friendly | 사용 가능 | (같은 패키지) 사용 가능, (다른 패키지) 사용 불가 | (같은 패키지) 사용 가능, (다른 패키지) 사용 불가 |
class A
{
public int m_nVar1 = 11;
public void PrintA() {
System.out.println("A Class" + m_nVar1);
}
}
class B extends A // A 상속 받음
{
public void Printc() {
PrintA();
System.out.println(m_nVar1);
}
}
✔ 오버라이딩
- 부모 클래스의 메소드를 자식 클래스에서 다시 재정의하는 것
- 주의 사항
- 함수명이 같아야 함
- 함수의 매개변수가 같아야 함
- 리턴형이 같아야 함
✔ final
1) final이 클래스와 메소드에 붙는 경우
- 상속과 오버라이딩 불가
- 클래스와 메소드 맨 앞쪽에 위치
2) final이 변수에 붙는 경우
- 변수의 값 수정 불가
final class A
{
final void Print() {System.out.println("");}
}
class B extends A // 에러 (상속 불가)
{
static final float m_nVar = 3.14f;
public void Print() {System.out.println("");} // 에러 (오버라이딩 불가)
public static void main (String[] args) {
m_nVar = 0.5f; // 에러 (수정 불가)
}
}
✔ 상속관계에서 생성자 호출 순서
1) 상위 클래스 생성자 ➡ 하위 클래스 생성자 호출
2) 생성자에 매개변수가 있는 경우 자동호출X (super 키워드 사용)
✔ super
- 하위 클래스에서 상위 클래스를 참조하여 접근할 때 사용 (상위 클래스의 참조변수 대신)
- super.멤버변수명
- super.메소드명(매개변수)
- 사용
- 하위 클래스에서 상위 클래스의 메소드/변수를 호출할 때 사용
- 하위 클래스에서 상위 클래스의 생성자를 호출할 때 super(매개변수)/super() 처럼 사용
✔ 참조변수를 이용한 형 변환과 호출
- 캐스트 연산자 사용 ()
- 형 변환의 규칙
- 하위 클래스에서 상위 클래스로 형 변환 가능
- 생성된 하위 클래스에서 상위 클래스 형 변환을 통해 하위 클래스의 멤버에 접근X
- 상위 클래스의 메소드가 하위 클래스에 오버라이딩(재정의)된 경우, 상위 클래스 참조변수에서 오버라이딩된 메소드를 호출하면 하위 클래스의 메소드 실행
📌 추상 클래스
✔ 개념
- 하위에서 구현할 메소드의 원형을 가진 상위 클래스 (상위 클래스만 존재)
- 자체를 객체로 생성할 수 없음
abstract class 클래스명 {
일반 멤버 변수;
메소드;
생성자;
abstact 반환명 메소드명();
}
- extends 키워드를 이용하여 추상 클래스를 상속
- 추상 메소드를 하위에서 모두 구현할 필요X
728x90
반응형
'BE > Java' 카테고리의 다른 글
자료구조 - 리스트, 연결리스트, 해쉬 (0) | 2025.04.10 |
---|---|
JAVA 개념 (0) | 2025.04.10 |
이재환의 자바 프로그래밍 입문 (0) | 2025.04.10 |
JAVA 개념 (1) | 2025.04.10 |