변수 / 자료형 / 할당
변수(Variable) : 데이터를 저장하는 메모리 공간의 이름 (symbol)
자료형(Datatype) : 변수의 크기와 어떤 종류의 데이터를 저장할 것인지를 결정하는 것
할당(Assign) : 변수에 데이터를 저장하는 것
쉽게 말하자면 변수 - 데이터를 담는 그릇이라고 볼 수 있다.
클래스란 JAVA 에서 객체를 생성하기 위한 설계도 클래스명은 반드시 소스 파일명과 일치해야 하며,
public 접근 지정자가 지정된 클래스는 반드시 클래스 파일 내, 하나의 클래스만 존재할 수 있다.
클래스 구성은 필드 , 생성자, 메서드, 내부 클래스가 있다.
필드 - 객체의 데이터를 저장
생성자 - 생성된 객체를 초기화 메서드 - 객체의 동작을 실행 내부
클래스 - 클래스나 인터페이스의 내부에 선언
변수를 만들 때 고려되는 것?
크기와 데이터의 종류 자료형에 대해서는 어느정도의 크기로 만들것인지, 변수에 어떤 종류의 데이터를 넣을것인지에 다른 자료형의 종류를 알아야한다. 기본 자료형 : byte,short,int,long, float, char, boolean (java에서 기본적으로 제공해주는 자료) 변수를 만들려면 ( 메모리에 기억공간을 만들려면?) → 선언을 해야한다. 선언 : 자료형과 변수가 만나야한다.
Q. CarTest라는 클래스를 선언, 관련 변수들을 선언해보자.
public class CarTest {
public static void main(String[] args) {
//Q. 자동차의 정보를 저장하는 변수를 만들어보자
String model = "BMW528i"; // -> 문자열 데이터가 필요
long distance = 100000l;
/*long으로 선언 시, 숫자 끝에 l를 기입하여 크기를 지정해준다.
그냥 숫자를 기입하면 int형으로 인식하는데, long은 8byte int 4byte이기 때문에
데이터의 크기를 잘 보고 l을 붙여주어야한다.*/
int price = 9000000;
String company = "BMW";
char type = 'A';
boolean auto = ture;
int year = 2000;
float gasmi = 12.5f;
/*float로 선언 시 , 실수를 담고자 하는데 기본으로 double를 인식하며 실수는 정밀도를 위해 선언하니
소수점 아래 숫자가 00000...으로 많이 쪼개져야하는데, 그냥 12.5는 double로 인식되기 때문에 4 byte인
float엔 담길 수 없어 값 마지막에 f를 붙여주어서 float 형임을 명시해주어야한다.*/
}
}
변수 선언과 할당 및 초기화
변수 선언 : 자료형과 변수가 만나는 것 → 변수(기억공간)가 메모리에 만들어진다.
할당 : 변수에 지정된 데이터 타입에 맞게 데이터를 저장(대입)하는 행위 → 대입연산자
L-Value = R-Value; → 왼쪽 value에는 변수가 들어가고, 오른쪽 value에는 변수, 상수, 연산식, 메서드 호출문 등 다양한 데이터가 입력될 수 있다.
초기화 : 변수를 만들고 난 후 연산을 하기 전에 값을 저장하는 행위
ex) int a; a는 초기화가 안된 상태고 기억 공간은 만들어져있지만, 아무런 값도 들어가있지 않다 (쓰레기 값이 들어가있으며, 연산이 불가능하다.) 만약 해당 상황에서 a = a+1;의 연산을 하게되면 a라는 기억공간엔 쓰레기 값이 들어있기 때문에, 해당 연산을 실행하면 에러가 발생하게 된다. a=0; 이런 식으로 꼭 초기화를 해주어야 함
변수와 심볼테이블(symbol table) / 자료형(Data Type)
Symbol table이란 ? 변수가 만들어지면 변수를 관리하는 테이블에 변수 정보가 저장된다.
메모리는 adress를 갖게되는데 해당 주소로 해당 변수를 찾아가는 것 a의 값을 찾으려면 a의 변수 위치를 먼저 찾아간 후, a의 번지(Value)를 불러오는 것
만들어서 사용할 수 있는 자료형 = CLASS
사용자가 정의하여 쓰는 자료형들은 java에서 제공하는 기본 자료형이 아닌 객체자료(정수나 실수로 표현할 수 없는)를 변수에 저장하기 위해 만들어진다. ex) 책이라는 데이터를 변수에 저장하기 위해선 제목, 저자, 가격, 출판사 ,페이지 수 등의 속성들로 구성되어 있는데, 이를 객체자료라고 하며, 하나의 변수로서 정의할 수 없다. 각각의 기억공간들 (변수들)을 하나로 묶어서 책이라는 구조를 만들어야하는데, 이를 CLASS라는 객체지향 도구로 만들 수 있다.
Java 내부 API
변수 앞에는 자료형이 오는데 자료형은 크게 기본 자료형 , 사용자 정의 자료형으로 나뉜다. ex) mybook b; -> 이와 같이 사용자가 임의로 선언한 변수의 경우 java가 가지고 있는 API에서 불러올 수 없는 자료형이기 때문에 바로 에러가 발생한다.
public class FindAPI {
public static void main(String[] args) {
int a; //단순한 변수 선언
a = 10;
System.out.println(a);
//"APPLE" 라는 문자열을 저장하고 출력해보자
String s = "APPLE";
System.out.println("s = " + s);
System.out.println(s.length());
//String에는 길이를 구하는 동작 , 대-소문자 구분하는 것, 동작을 구분하는 기능을 함
java는 자료형을 사용하게 되면 컴파일러가 기본적으로 가지고 있는 자료형이 아닐 때, java에서 제공해주는 API를 찾아가게 되는데, API는 클래스들의 집합체이다.
컴파일러가 알고 있는 API 위치로 이동하게 되는데, External Library폴더 내에 가지고 있다. 컴파일러가 API를 하나하나 찾게 되면 너무 오래걸리기 때문에, String을 입력하면 String 앞에는java.lang.String이 생략되어 String으로 적히게 되는것이다.
여기서 java.lang은 package이며, 쉽게 설명하면 폴더라고 생각하면 된다.경로로 치면 java -> lang -> String으로 이동하여 String 자료형을 불러와 주는 것.
'[ BACKEND] > JAVA_Basic' 카테고리의 다른 글
[JAVA] Java의 조건문 (If / else / else if) (0) | 2023.06.08 |
---|---|
[JAVA] JAVA에서 쓰이는 연산자 (0) | 2023.06.07 |
[JAVA] 데이터를 이동해보자 ( 배열 : Array) (0) | 2023.06.05 |
[JAVA] 기본자료형(PDT) ? (0) | 2023.06.02 |
[JAVA] JAVA란 무엇인가 ? (0) | 2023.05.31 |