풀스택 웹🌐 개발자 지망생 🧑🏽‍💻
➕ 인공지능 관심 🤖


Categories


Recent views

  • 1
  • 2
  • 3
  • 4
  • 5

JAVA 기본-자바 언어 구조와 기본 문법

  1. 자바 프로그램 구조
  2. 자바 변수와 데이터 타입

자바 언어 구조와 기본 문법

자바 프로그램 구조

자바 언어는 {}로 범위(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: 첫번째로 작성한 자바 프로그램		
	} 
}	
  • 프로그램 실행 방법
    1. javac 파일명.java 컴파일
    2. 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