풀스택 웹🌐 개발자 지망생 🧑🏽💻
➕ 인공지능 관심 🤖
Categories
-
┣
▶ COMPUTER_SCIENCE
📂: 7 -
┣
▶ WEB
📂: 3 -
┣
▶ ETC
📂: 3-
┃
┣
ETCS
📄: 10 -
┃
┣
SUBBRAIN 개발기
📄: 5 -
┃
┗
YOS 개발기
📄: 1
-
┃
┣
-
┗
▶ AI
📂: 9-
┣
AITOOLS
📄: 3 -
┣
CV
📄: 2 -
┣
DEEP_LEARNING
📄: 1 -
┣
DATA_VIS
📄: 2 -
┣
GRAPH
📄: 1 -
┣
LIGHTWEIGHT
📄: 1 -
┣
MATH
📄: 1 -
┣
NLP
📄: 3 -
┗
STRUCTURED_DATA
📄: 2
-
┣
JAVA 기본-자바 언어 구조와 기본 문법
자바 언어 구조와 기본 문법
자바 프로그램 구조
자바 언어는 {}
로 범위(scope)를 구분하고, ;
으로 명령어를 끝마쳐야 한다.
클래스
.java
파일 하나당 하나의 변수와 메서드를 포함한 클래스 정의- 클래스는 자바 프로그램의 최소 구성 단위
public class FirstClass {
// public 한정자: class를 외부 공개,
//명령 작성 자바 주석문
// 잡담 목적 에러 코드 지우기 등
// 다중 주석은 /** */으로 가능
}
파일 명은 보통 파스칼케이스 임.
main()
함수
- 자바 프로그램은 바이트 코드로 번역 후 바로 실행 가능하다.
- 이때 무조건
main()
이란 메서드를 가지고 있어야하며, 이것을 시작함으로 프로그램이 실행됨
main()
함수 예시(JavaApp.java
파일)
String args[]
: 명령행 매개변수, 문자열의 배열을 순서대로 매개변수로 받아 프로그램 실행시 필요한 정보를 문자열로 전달System.out.println();
:java.io
패키지에 포함된 입출력 작업용 함수. 터미널에 전달받은 문자열 출력.
public class JavaApp{
public static void main(String args[]){ // 프로그램 시작해 특정작업 수행
// 실행될 프로그램 코드
System.out.println("첫번째로 작성한 자바 프로그램");
// print: 첫번째로 작성한 자바 프로그램
}
}
- 프로그램 실행 방법
javac 파일명.java
컴파일java 클래스이름 arg1 arg2 ...
공백으로 매개변수 구분패키지
자바의 각 폴더는 하나의 패키지로 간주하여 접근할 수 있다.
JAVA 기본-인터페이스와 커스텀 패키지 참조
자바 변수와 데이터 타입
- 변수는 프로그램에서 메모리 상의 데이터에 접근하기 위한 방법
- 변수는 한 가지 유형의 데이터 만을 저장
- 데이터 타입은 각 변수가 저장 가능한 데이터 유형.
변수
- 변수 선언은 데이터를 저장할 메모리 할당 요청 및 데이터 타입을 지정하는 것.
- 변수 초기화 : 변수의 초기값을 지정
- 안하면 0 또는 false(boolean의 경우), null(character의 경우) 등의 기본값으로 자동 초기화
// [데이터타입명] [변수명]; 형식으로 변수 선언
int var; //변수 선언 선언된 변수에 값을 대입
var = 25; // 변수 초기화
int age = 25; // 선언과 초기화를 동시에
- 변수의 값에 따른 변수 종류 구분
- 기본형 변수: 변수가 가르키는 메모리 주소에 값이 존재
- 참조형 변수: 변수가 가르키는 메모리 주소에 또 다른 메모리 주소가 존재
- 즉, 값이 아닌 값의 위치를 가르키는 변수
- 변수의 범위에 따른 변수 종류 구분
- 변수의 범위는 자신이 속한 범위(블록)을 벗어나면 사용 불가
- 전역 변수(global variable)
- 클래스 선언부 밑에 선언된 변수, 여러 메서드에서 공통적으로 사용 가능
- 지역 변수(local variable)
- 메서드 선언부 밑에 선언된 변수, 메서드 매개변수로 선언된 변수, 해당 변수가 선언된 메서드 내에서만 사용 가능
자바의 변수명, 함수명, 클래스명 등은 자바의 다음과 같은 식별자 규칙에 따라서만 지을 수 있다.
- 알파벳, _(언더스코어), $, 유니코드 문자로만 시작가능
- 특수 문자 사용 불가
- 대소문자를 구별하고 길이에 제한이 없음
- 예약어 포함은 가능하나 단독으로는 불가
- 예약어 : 데이터 타입이나 프로그램 정의를 위해 선점된 단어(if, class, for etc…)
- 숫자는 사용가능 하나 첫문자나 단독으로는 사용 불가
- 관례상 클래스 명은 파스칼 케이스, 메서드, 변수 명은 카멜 케이스, 상수는 모두 대문자
데이터 타입
변수의 데이터 의미를 정확하게 해석하기 위해 사용
int age; // 기본형인 int 형의 age 변수 선언 다른 형태 들어가면 오류
age = 25; //(O) age 변수에 값 할당, 초기화, 정상 사용
age = "hello"; //(X) int형이 아닌 값이 들어가므로 오류 발생
bit
: 데이터 표현의 가장 기본 단위, 0과 1만 표현 가능byte
: 보통 8개 비트 단위
| 표현 형태 | 데이터 타입 | 정의 |
| ———– | ———– | ———————————————————— |
| 논리값 | boolean
| 참(true), 거짓(false)을 나타내는 값, 1bit, int형 형변환 불가 |
| 단일 문자 | char
| 16bit의 유니코드 문자 데이터 2byte unsigned 형, 16비트 유니코드 |
| 1 byte
정수 | byte
| 부호 있는 8bit의 정수, 가장 범위가 좁음 |
| 2 byte
정수 | short
| 부호 있는 16bit의 정수, O : 8진수 표기 Ox: 16진수 표기 접두사 |
| 4 byte
정수 | int
| 부호 있는 32bit의 정수, 기본 default 형, |
| 8 byte
정수 | long
| 부호 있는 64bit의 정수, 가장 범위가 넓음, 접미사 L, l로 사용 가능 |
| 실수 | float
| 부호 있는 32bit의 부동소수점 실수, 4byte , 접미사 f, 또는 F, e로 지수 표현 |
| 접미사 D
, d
| double
| 부호 있는 64bit의 부동소수점 실수, 8byte 기본형 10.0 == double 형 |
String
형은 class 형으로 존재함- 모든 정수형들(
byte
,short
,int
,long
)은 첫번째 비트가 부호 비트이다. (2의 보수법) - 데이터 타입의 범위 초과시 컴파일시 오류 발생, 또는 연산 결과값이 이상해짐
자바 문자열에 특별한 특수문자를 쓰고 싶으면 아래 문자를 사용하면 된다.
특수문자 | 의미 |
---|---|
\n |
새 줄 |
\t |
탭 |
\b |
backspace |
\r |
carriage return (줄 덮어쓰기) |
\f |
form feed |
\\ |
backslach itself |
\' |
single quote 따옴표 |
\'' |
큰따옴표 |
형 변환(Type Casting)
-
변수의 타입을 다른 타입으로 변경하는 것
-
형변환 연산자의 사용 여부로 구분 가능한 두가지 방법으로 나뉜다.
- 형변환 연산자: 형 변환시 변환하려는 데이터 타입을 묶는 괄호
묵시적 형변환(promotion)
- 변환 시 데이터 손실 없는 경우 형변환 연사자 없이 자동 캐스팅
- 작은 데이터 타입에서 큰 타입으로, 자식 타입이 부모 타입으로 등
데이터 타입의 크기와 관계를 잘알아야 한다.
int age = 25; // char 형을 묵시적 형변환 하면 유니코드 값이 나옴
double avgAge= age; // double avagAGe = (double) age 와 같음
// 4 byte -> 8 byte 임으로 가능
명시적 형변환(demotion)
- 데이터 손실 우려가 있을 경우, 형변환 연산자로 타입을 명시하여 선언
- 더 작은 크기의 데이터 타입으로 변환되는 경우
double avgAge = 24.56;
int age = (int) avgAge; // 데이터 타입이 축소되도 변환된 후에도 해당 값을 표현할 수 있어야 함 안그러면 다른 값이 나옴
//age 값은 24
_articles/computer_science/PL/JAVA/JAVA 기본/자바 문법/JAVA 기본-자바 언어 구조와 기본 문법.md