일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- memory
- Overloading
- Class
- aduino
- sensor
- Barcode
- wpf
- Read
- public
- length
- Binary
- SERIAL
- mfc
- java
- digitalRead
- Contour
- UNO
- inheritance
- APP
- parameter
- preprocessing
- Unity
- flutter
- stream
- atmega328
- Encapusulation
- Android
- compare
- file access
- Pointer
- Today
- Total
목록교육 관련/JAVA (16)
폴크(FOLC)
# 접근 제어자 > 정보의 은닉을 위해서 이용, 최소한의 정보만으로 클래스를 운용 > 총 4가지 ( private, public, protected, default ) - private : 클래스 멤버는 외부로 공개되지 않음. ( 외부 접근 불가 ) - public : 클래스 멤버는 외부로 공개 됨 ( 외부 접근 가능 ) - protected : 상속받은 클래스 멤버는 접근 가능, 같은 패키지 접근 가능 ( 외부 접근 불가 ) - default : 같은 패키지에 속하는 멤버에서만 접근 가능 ( 기본값 ) > 접근 범위 - public > protected > default > private 순서 # 기타 제어자 > 특징 - 클래스에 final 과 abstract 를 같이 쓸 수 없다. - 메소드에 sta..
# 오버로딩 ( overloading ) > 함수의 이름을 동일(중복)하게 정의 하는것 ( 객체지향 - 다형성 ) > 함수의 이름은 1개만 선언 가능하지만 시그니처가 다르면 가능 - 시그니처 : 함수 선언부에 명시되어 있는 매개변수 리스트 -> 함수 이름의 종류를 최소화 하여 생성 가능 -> 함수 호출시에 매개변수나 타입을 신경쓰지 않고 호출 가능 # 조건 > 함수 이름이 같아야 한다. > 매개변수 개수와 타입이 달라야 한다. - 반환 타입이 다르더라도 시그니처가 같다면 정의 할 수 없다. # 소스 코드 public class TEST { public int SUM(int a, int b) { return (a + b); } public float SUM(float a, float b) { return ..
# 생성자 ( constructor ) # 동적 할당으로 객체를 생성하게 되면 독립된 메모리 공간에서 data를 관리 > 객체 내부에 존재하는 data 들에 대한 초기화를 별도로 진행하지 않으면 자동 초기화 수행 - 0 또는 null, false > 외부에서 일반적인 초기화 과정을 진행하지 못함 - 내부 data 에 접근하지 못하는 (private) 경우 때문에 -> 필요 : 객체 생성 후 필드를 초기화 하기 위한 접근 가능한 public 함수 > 객체의 생성과 동시에 data 초기화 해주는 함수 : constructor > 객체의 이름과 동일하며 () 함수 형태를 갖는다. # 특징 > 매개변수를 전달해서 초기화 진행 가능 - 필드 자체적으로 초기화 진행 가능 ( default constructor ) ..
# 메소드(행동)와 필드(상태)를 포함한 확장된 구조체 형태 > 객체 지향 개념의 중심 ( 행동과 상태 ) > 사용자 정의 타입 ( class 키워드 이용 ) > 추상화, 갭슐화, 은닉화, 상속성, 다형성 등의 특징을 갖음 > 객체 : 사용자 정의 타입을 설계해 놓은 상태 ( 선언 하지 않은 상태 ) > 인스턴스 : 사용자 정의 타입의 객체를 선언하여 메모리에 올려놓은 상태 - 메모리에 독립된 공간에서 관리됨 # 접근 제어 지시자 > private : 해당 객체 내에서만 접근 가능한 변수 / 함수 > protected : 해당 객체를 상속한 하위(파생) 클래스에서만 접근 가능한 변수 / 함수 > public : 모든 객체에서 접근 가능한 변수 / 함수 # 기본 형태 접근 제어 지시자 class 객체이름 ..
# 기본 기능 > 클래스 내부에서 호출된다. > 클래스 외부에서도 호출이 가능하다. > 함수의 이름이 곳 포인터가 된다. ( 시작 주소 ) # 함수 디폴트 파라미터 > 함수에 파라미터를 전달하는 기본값을 설정 ( Varargs, ... 등 이용) > 우선 순위 위치 순서대로만 지정할 수 있다. ( 우->좌 ) # 함수 오버로딩 ( 다형성 ) > 함수 이름은 동일하고 파라미터 개수와 리턴값이 다름 ( 시그니처 ) # 함수 오버라이딩 ( 다형성 - 상속 관련 ) > 함수 이름과 파라미터 개수와 리턴값이 같음 ( 재정의 ) > 부모의 함수와 동일한 이름을 갖는 함수이지만 내용이 다름 # 예제 소스 class TEST_Car { private String _Name; private int _Year; TEST_..
# 파일 종류 > text file : 문자열의 모임으로 바로 확인 가능 ( TxT 뷰어 이용 ) > binary file : 0, 1의 이진 형식으로 바로 확인 불가능 ( 별도 뷰어 필요 ) # 파일은 stream(임시 메모리 공간)를 통해서 접근 > InputStream / PrintStream ( 파일 연동 ) > setin / setout 으로 사용자 데이터 송신, 수신 # 파일 연동 > HDD 에 저장되는 정보, 연속적인 byte 의 모임 > 메소드 이용 - canRead() : 파일을 읽을 수 있는 파일인지 확인 - canWrite() : 파일이 쓸수 있는 파일인지 확인 - exists() : 파일이 존재하는지 확인 # 예제 소스 public static main(String [] args) ..
# 입력과 출력 > 스트림 ( stream ) : 실제 입/출력으로 데이터의 흐름 ( 운영체에와의 약속 ) - 입력 스트림 : InputStream, 출력 스트림 : OutputStream # 문자 입력 > read : 입력 스트림으로 BYTE 입력, 파일도 가능 > 더이상 스트림에 데이터가 없는 경우에는 -1 을 반환 # 문자 출력 > write : 출력 스트림으로 BYTE 출력, 파일도 가능 # 파일 연동 > RandomAccessFile 또는 File 을 이용하여 파일의 데이터 연동 가능 > 'r' : 읽기 전용, 'rw' : 읽고 쓰기 > getFilePointer() 로 현재 파일 위치를 확인 > seek() 로 파일 위치 변경 가능 # 문자열 > 연속된 문자들의 모임, 배열과 연관이 깊음 > ..
# JAVA 프로그램은 JVM(가상머신)을 통해서 실행 > JVM 은 운영체제(OS) 에게 프로그램을 수행하기 위해서 메모리 공간을 할당 받는다. > 메소드 영역 : 클래스와 변수들이 저장되는 공간 - .class 파일을 load 해서 관련 정보를 갖고 있는다. > 스택 영역 : 메소드들의 스택 프레임이 저장되는 공간 - 메소드가 호출되는 시점에 지역 변수와 매개 변수의 정보를 갖고 있는다. - 푸시로 데이터를 쌓고 팝으로 데이터를 꺼내온다. ( 후입선출 - LIFO ) > 힙 영역 : 인스턴스 변수가 저장되는 공간 ( 생성/삭제 ) - new 키워드를 이용해서 확보됨. # 메모리 할당 > User 에 의해서 힙 영역에 특정 공간을 관리하기 위한 요청이 발생 > new 명령어를 이용해서 할당 받고 del..
# Pointer 의 개념이 없다. 하지만, 주소 또는 참조의 개념은 있다. > '*' 문자를 사용하지 않음. > 람다식을 이용 # 널 ( null ) > 모든 상태의 기본값 > 아무것도 가르키지 않는 상태값 ( 값이 없는 상태 ) > 정의 되지 않은 상태 ( 초기화 되지 않은 상태 ) # 값에 의한 전달 ( call by value ) > 클래스가 아닌 자료형 > 전달하는 변수의 값을 호출되는 함수의 매개변수에 복사(copy) > 메모리 영역이 공유되지 않음. # 참조에 의한 전달 ( call by reference ) > 클래스 > 전달하는 변수를 호출되는 함수의 매개변수에 주소 복사(memory address) > 메모리 영역이 공유
# 배열 # 같은 타입(자료형)의 변수들의 모임 > 1차원 ~ N차원 까지 사용 가능 ( 메모리를 넘지 않는 상황 ) > 보통 1차원 ~ 2차원 까지를 가장 많이 이용 # 특징 > 배열을 선언할때 길이는 상수 이어야 한다. > 첫번째 번호는 0번 부터 시작 > 컴파일러는 배열의 길이가 아닌 배열의 주소값을 이용하여 접근한다. > 배열 초기화 시점에 {} 중괄호 를 이용해서 초기화 가능 # N차원 배열 > 2차원 이상의 배열 > 배열의 각 요소가 배열이 될 수 있다. # 1차원 배열 > 구조1 : 자료형[] 이름 = new 자료형[ 길이 ]; - 생성될때 초기화 하지 않았으므로 주의해서 사용 > 구조2 : 자료형[] 이름 = new 자료형[ ] = { 요소1, 요소2, ... }; - 자료형과 요소의 타입..
# 함수 # 함수는 특별한 목적을 수행하기 위해서 설계된 명령문들의 모임 > 표준 함수, 사용자 정의 함수 > 반복적인 작성을 피할 수 있고 반복적인 수행이 가능 > 기능별 호출이 용이하며 모듈화가 가능하여 가독성이 높아진다. # 정의 > void functionName(X, Y) { } > 반환값 ( void ) : 모든 작업을 마치고 결과를 반환하는 값 ( 0개 or 1개 이하 ) > 함수명 ( functionName ) : 호출하기 위한 이름 > 전달인자 ( X, Y ) : 호출할때 전달되는 값 ( N개 ) > 함수 몸체 { } : 명령문들의 모임 # 특징 > 함수를 사용하기 위해서는 함수를 클래스 내부에 그대로 작성 한다. # 재귀호출 > 함수 내에서 자기 자신의 함수를 재 호출하는것 > 함수를 ..
# 조건문 : 조건식에 따라서 명령문을 선택적으로 수행하는 구문 > if 문 - 조건식의 결과가 참(true) 이면 { } 안의 명령문을 수행하고 거짓(false) 이면 PASS > if / else 문 - 삼항 연산자와 동일한 형태 - 조건식의 결과가 참(true) 이면 { X } 안의 명령문을 수행하고 거짓(false) 이면 { Y } 안의 명령문을 수행 > if / else if / else 문 - 조건식의 결과가 참(true) 이면 { X } 안의 명령문을 수행하고 다음 조건식의 결과가 참(true) 이면 { Y } 안의 명령문을 수행하고 모두 거짓(false) 이면 { Z } 안의 명령문을 수행 > switch 문 - 조건식의 결과가 참(true) 이면 조건 값과 연결된 { } 안의 명령문을 수..
# 기본 타입 # 기본적으로 미리 정의 해놓고 제공하는 타입 > 문자형, 정수형, 실수형, boolean 형 > 지수형태로 표현 가능 # 문자형 타입 > 부호가 있다. 소수 부분을 제외한 수 > 문자(아스키코드 - ASCII code) 하나를 표현 - 영문 대/소문자를 사용하는 비트 인코딩 방법 ( 128개 문자 표현 가능 ) - UNICODE로 문자 표현 > 범위 - char 2 바이트 0 ~ 65535 # 정수형 타입 > 부호가 있다. 소수 부분을 제외한 수 > 범위 - byte 1 바이트 -128 ~ 127 - short 2 바이트 -32,768 ~ 32,767 - int 4 바이트 -2,147,483,648 ~ 2,147,483,647 - long 8 바이트 -9,223,372,036,854,77..
# 변수 # 데이터를 조작하기 위해서 프로그램에서 생성하는 이름 > 할당받는 메모리(물리적인) 공간 - 실제 물리적인 공간을 직접 접근하지 않고 O/S 에서 맵핑 시켜놓은 주소(address)에 접근 > 문자형, 정수형, 실수형등의 자료형을 제공 # 변수와 메모리 > 변수를 선언하게 되면 memory 공간에 자료형의 크기만큼 공간을 생성 > 생성된 변수는 주소(address)와 공간(크기) 정보를 갖으며, 프로그램 상에서 이름으로 접근 가능 # 생성 규칙 > 데이터를 조작하기 위한 의미를 부여하여 작성 ( 자유롭게 작성 가능 ) > 영문자, 숫자, " _ ", " $ " 로만 구성 가능 > 숫자로 시작 불가 > 공백은 포함 불가 > 미리 정의되어 있는 키워드는 중복 사용 불가 # 미리 정의된 키워드 > ..
# 프로그램과 사용자간의 정보를 교환하는 방법 > 입출력 함수 또는 I/O 함수 > java.lang 패키지에 system 클래스 에 포함 # 서식을 작성할때 유용한 표현 [ 서식지정자 : % ] > %c 하나의 문자 > %d 부호 있는 10진 정수 > %f 고정 소수점 실수 ( 소수점 이하 6자리 ) > %s 문자열 > %o 부호 없는 8진 정수 > %x 부호 없는 16진 정수 # 서식을 작성할때 유용한 표현 [ 이스케이프 : \ ] > \" 큰 따움표 > \n 줄 바꿈 > \t 수평으로 탭 간격 이동 # 출력 함수 > System.out > 서식을 작성할때 유용한 표현 [ 서식지정자 : % ] > 서식을 작성할때 유용한 표현 [ 이스케이프 : \ ] > System.out.println(출력 데이터)..
# 기본 # 특징 : 객체 지향 언어로 가상 머신( JVM : Java Virtual Machine )에서 동작 > 장점 - 운영체제와 독립적으로 실행 가능 ( JVM 덕분 ) - 필요한 기능만 제공하여 단순하고 배우기 쉽다. - 자동 메모리 관리가 되어서 안정성이 높다. - 연산자 Overloading 금지 - 제네릭 기능을 제공하여 가독성이 높다. > 단점 - JVM 환경에서만 실행되기에 속도가 조금 느리다. - 예외처리 관련하여 User 의 작업이 필요하다. - 코드 작성 길이가 조금 더 길다. # 구조 > class main() { 영역 > int AAA = 0; 영역 > public static void main(String[] args) { System.out.println(""); } } 영..