Java/Java 문법

Java 문법 1 (기본 용어, 변수)

열심히 해 2024. 9. 2. 20:56

기본 용어 정리

  1. 데이터 : 컴퓨터가 정보를 담는 자료값
  2. 데이터 타입(자료형) : 데이터의 유형 ex. 정수 / 문자 / 부동소수(소숫점)
  3. 자료구조 : 데이터 여러 개를 분류해서 담을 수 있는 분류통
  4. 문맥 : 개발 언어로 표현한 프로그램의 동작 흐름. 가구 조립 설명서, 요리 레시피에 문맥이 있듯이 프로그램도 문맥을 가지고 있다.
  5. 메서드(~하다, 동사) : 데이터와 문맥의 묶음. // 물 2L(데이터)와 설탕 500g(데이터)을 섞는다(문맥).
  6. 공통 실행환경 : 여러 기기의 운영환경에서 실행할 수 있도록 판을 깔아주는 실행환경.
  7. 운영 체제 : 기기가 프로그램을 실행시키는 운영환경 (ex. Window, Android, iOS, Linux …)

Java

 

  • Java : 자바는 'a언어, b언어, c언어'의 기능을 포함하며, java 고유의 기능을 가지고 있는 언어. 여러 기기에서 실행 가능하도록 도와주는 공통 실행환경, 그리고 데이터와 메서드를 담는 클래스(바구니 틀)를 통해 객체(바구니)를 만들 수 있는 언어.
        자바의 특징
    1. 공통 실행환경이 있어서 여러 기기에서 실행 가능하다.
    2. 이해하기 쉽고 유지 보수가 쉽다.
    3. 안정성이 높아서 프로그래밍 오류를 방지하고 보안상 안전하다.
    4. 대규모 앱 개발이 가능하다.
    5. Java를 배우면 다양한 개발 도구와 라이브러리를 사용할 수 있다. // 많은 사람들이 사용하는 언어이므로

  • JVM(Java Virtual Machine, 자바 가상 머신) : 여러 가지의 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것. 객체 지향 언어.
  • 객체 : 모든 '것', 특징(속성, 변수)과 행동(메서드)을 가지고 있다.
  • Java 컴파일러(compiler) : 'java -> class'  Java 코드들(.java 파일)을 운영체제가 읽을 수 있는 바이트(byte) 코드(.class 파일)로 변환하는 장치.
  • 인터프리터 : 운영체제가 읽은 바이트 코드를 기기(기계)가 실행할 수 있는 기계어로 번역하는 해석기
  • JIT 컴파일러 : 인터프리터의 효율을 높여주는 서포터 해석기
  • 메모리 영역 : Java 데이터를 저장하는 영역, 운영체제로부터 JVM이 할당받은 메모리 영역.
  • 클래스 로더 : Java .class 바이트 코드를 메모리 영역에 담는 운반기
  • 가비지 컬렉터 : Java 쓰레기 청소기

  • JDK(Java Development Kit) : 자바 개발 키드. java를 class로 변환할 뿐만 아니라 JRE기능-class파일을 실행하는 기능 또한 가지고 있다. 또한 코드를 디버깅하는 jdb 등의 기능도 있다.
  • Java 프로그램(앱)은 제일 먼저 클래스의 main 메서드를 실행시킨다.
public class Main {
    public static void main(String[] args) {
        System.out.println("Our first project :)");
        }
}

위치에 따른 역할. '의미'
  public : (접근)제어자의 위치. '모두 접근 가능'

  static : 메서드 표기(?). '이 프로그램이 시작될 때 무조건 실행이 된다'

  void : 메서드의 출력값(아웃풋)의 데이터 타입. '아무 것도 없다'
  String[] args : 매개 변수의 자리. '인풋의 타입과 변수명(args, 임의의 변수명 가능)을 나타냈다'

 

public class Main {
    public static void main(String[] args) {
        System.out.println("Our first project :)");
        System.out.print("Our first");
        System.out.print("project :)");
        }
}
// 주석 달기, 유령 코드 `ctrl + /` 또는 `ctrl + shift + /` 를 통해 선택 범위 주석처리 가능

결과

print : 줄 바꿈 x

println : 줄 바꿈 o

ln : line 

public class Main {
    public static void main(String[] args) {
        System.out.println(7);
        System.out.println("3.14");
        System.out.println("JAVA");
        }
}

7 // 숫자

3.14 // 문자

JAVA // 문자

 

  • java 프로그램에서 값을 다루기 위해서는 값을 저장하는 저장 공간의 선언이 필요하다.
  • 저장 공간의 타입과 이름을 명시한다.
    int number;               // int(숫자)타입, number 라는 이름의 저장공간을 선언
    String name;            // String(문자열)타입, name 이라는 이름의 저장공간을 선언
  • Java 프로그램에서 저장 공간에 값을 저장(할당)하는 방법은 2가지
    1. 초기화 : 선언과 동시에 저장. ( int number = 10; )  
    2. 덮어쓰기 : 선언 이후 저장. ( int number; number = 11; )

  • 변수 : 변하는 저장 공간
  • 상수 : 변하지 않는 저장 공간, 저장을 해놓으면 변하지 않음.

final int number = 1; //  상수로 선언 (데이터 타입 앞에 final을 붙이면 된다.)
number = 2; //  변수의 값을 바꾸려고하면 에러가 난다.

 

 

변수

1. 기본형 변수. 

소문자로 시작하고, 값 자체를 저장.

  • 논리형 변수 : boolean
    boolean flag = true; // 1. 논리형 변수 boolean 으로 선언 및 True 값으로 초기화
    flag = false; // 2. False 값으로도 저장할 수 있다.
    // true(false)대신 1(0)이나  "true"("false")를 쓰면 안된다.

  • 문자형 변수 : char
    char alphabet = 'A'; // '3', 'c' 등과 같이 문자 하나를 저장. 1byte만 사용하는 하나의 문자 뿐이므로 문자 뒤에 \0(널문자)가 없다.

  • 정수형 변수 : byte, short, int, long
    • byte : -128 ~ 127 범위의 숫자만 저장 가능.
    • short (2byte)는 -32,768~32,767 범위의 숫자만 저장 가능.
    • int (4byte)는 -21억~21억 범위의 숫자만 저장 가능.
    • long (8byte)은 9백경 정도의 매우 큰 수를 저장 가능.
      long longNumber = 2147483647L; // long은 숫자뒤에 알파벳 L을 붙여서 표기하며 저장
  • 실수형 변수 : float, double
    • float (4byte) : 3.4 * -10^38 ~ 3.4 * 10^38(long 보다 큼) 범위의 숫자 저장이 가능.
    • double (8byte) : 1.7 * -10^308 ~ 1.7 * 10^308(long 보다 큼) 범위의 숫자 저장이 가능.
      float floatNumber = 0.123f; // float 는 4byte 로 3.4 * 10^38 범위를 표현하는 실수값
      double doubleNumber = 0.123123123; // double 은 8byte 로 1.7 * 10^308 범위를 표현하는 실수값

2. 참조형 변수(주소형 변수) : 값을 단일 공간에 저장할 수 없어서 별도의 공간에 저장하고, 그 주소값을 저장하는 변수. 대문자로 시작함.

  • 문자열 변수 : String
    String message = "Hello"; // 문자열을 저장, 몇 btye를 사용해야할지 특정할 수 없으므로 문장의 끝에 \0(널문자)가 함께 저장.
  • 그 외 : Object, Array, List …
    List<int> alphabet = [0,1,2,3]; // 기본형 변수 여러개를 저장

3. 래퍼 클래스 변수 : 기본형 변수를 감싸는 변수, Wrapper Class / 해당 메서드를 이용할 수 있다.

 

기본형 변수 래퍼 클래스 변수
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean

 

 

  • 아스키 코드 : Java가 문자를 저장하는 방식으로서 일종의 1대1 맵핑. 
  • 메모리 영역 : stack영역과 heap영역으로 나뉨
    stack 영역 : 기본형 변수(원본값) + 참조형 변수(주소값) , 정적으로 할당됨.
    heap 영역 : 참조형 변수(원본값) , 동적으로 할당됨.

  • 형변환 : 변수의 타입을 바꾸는 방법. 정수 ↔ 실수 ↔ 문자
float floatNumber = 10.101f;

int intNumber;
intNumber = (int)floatNumber;

 

마지막 줄에 주목. int intNumber을 통해 변수 intNumber가 정수 타입임을 선언. 그후  intNumber의 값을 ()에 변환될 타입을 넣고 floatNumber을 통해 저장. 이를 강제 형변환이라고 한다.

 

*자동 형변환 : 작은 크기의 타입 -> 큰 크기의 타입으로 형변환이 이루어질 때, () 변환될 타입을 넣지 않아도 자동으로 형변환이 이뤄진다. 또한 작은 크기의 타입이 큰 크기의 타입과 계산될 때 자동 형변환이 이루어진다.

byte, char (1) -> short (2) -> int (4) -> long(8) -> float (4) -> double(8)

 

public class Main {
    public static void main(String[] args){
        long longNumber = 100123456789L;
        float floatNumber = longNumber;
        System.out.println(floatNumber);
    }
}

결과값 : 1.0012346E11

 

E는 10의 지수를 나타냄. 따라서 1.0012346E11 = 1.00123456*10^11 . 

'Java > Java 문법' 카테고리의 다른 글

Java 문법6 (클래스)  (0) 2024.09.05
Java 문법 5(배열, 복사, 컬렉션)  (0) 2024.09.04
Java 문법 4(반복문)  (0) 2024.09.03
Java 문법 3 (조건문)  (1) 2024.09.03
Java 문법 2 (연산자)  (0) 2024.09.03