반응형
SMALL
[1] 변수 = Variable
(1) 변수 정의 : 변하는 수
- 하나의 값을 저장할수 있는 저장공간
- 프로그램에서 항상 변하는 값을 명하는 말
- 데이터를 저장한 메모리 공간에 이름을 붙인 것이 변수이다.
- 표현하려는 수에 맞는 데이타 타입(자료형)을 이용하여 변수를 선언한다 = 변수타입 변수명 int num
- 표현하려는 자료가 숫자, 문자, 문자열 등 다양할수 있어 그에 맞는 자료형을 사용한다
- (성적, 합계, 레벨, 주소 등)
- 데이터를 사용하기 위해 명령을 할때 데이터를 담고있는 변수명이란 명칭을 부르고 명령을 하기 위해 지시하는 도구로 사용된다
int num = 5;
num = 3;
System.out.println(num); // 3 출력
(2) 변수와 메모리
변수를 선언하면 해당되는 자료형의 크기만큼 메모리에 할당된다
할당된 메모리를 가리키는 이름이 변수이다
[2] 변수 선언
(1) 변수 선언의 구성
int age , count ;
age =10;
String level = "100" ;
char chr ='A';
age와 count는 int 타입을 가진 자료형이다. age의 값은 10이 대입된다
자료형 | int String char |
변수 | age count level chr |
대입연산자 | = |
데이터 | 10 100 A |
[2] 변수명 작성 규칙
(1) 첫 문자는 소문자
int apple = 100 (0)
(2) 첫 문자는 _$ 가능하다
int _apple = 100 (0)
int $apple = 100 (0)
(3) 첫 문자는 숫자가 오면 안된다
int 2apple = 100 (x)
(4) 예약된 변수명은 사용 불가
int true = 100 (x)
(5) 용도에 맞는 이름 사용
용도에 맞는 가독성이 좋은 명칭을 사용한다
축약 x ( studentName 을 SN으로 줄이면 본인 외에 알아볼수 없다)
[3] 변수 표기법 종류
(1) 카멜 표기법 = 낙타표기법
변수 , 매서드 사용
myName
(2) 파스칼표기법
클래스 사용
MyName
(3) 스네이크표기법
파이썬 사용
my_name
[4] 변수 종류
(1) 클래스변수
- 멤버변수 중 static이 붙은 것이 클래스 변수이다
- 클래스 영역에 선언된다
- 클래스가 메모리에 올라갈때(프로그램 시작시) 클래스 변수가 생성되고 프로그램 종료시 메모리에 해체될때 소멸된다
- 모든 인스턴스 객체가 1개의 저장공간을 공유하기 때문에 공통적인 값을 유지해야하는 속성의 경우 선언한다
- 전역에서 사용 가능하다
- ex) 캐릭터가 전사 , 힐러 , 마법사으로 구분되어있을때 소비자가 선택한 성향이 전사라면 전사 속성만 가지고 적용된다
- private이 아니면 클래스 이름으로 다른 클래스에서 사용가능하다
- 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 차지한다면 할당하는것은 좋지 않음
- 클래스변수의 값을 수정하면 공통 속성이기 때문에 전부 바뀐다
- 초기화 필수아님
- 클래스 변수cv가 먼저 초기화 된 후 인스턴스 변수 iv가 초기화된다
(2) 인스턴스 변수
- 멤버변수 중 static이 붙지 않은것이 인스턴스 변수이다
- 클래스 영역에 선언된다
- 인스턴스가 생성되었을때 인스턴스 변수가 생성된다. 이후 참조하지 않으면 가비지컬렉터가 소멸시킨다
- 각각의 인스턴스 변수에 각각의 개별 속성을 부여하기 위해 사용한다
- 초기화 필수아님
(3) 지역변수
멤버변수를 제외한 나머지 변수들이다
변수 선언문이 수행되었을때 지역변수가 생성된다
메서드가 종료되면 소멸되어 사용할수 없다
메서드 내에 선언된 변수
- 로컬변수
- 함수 내부에서 사용하는 변수
- 스택 메모리에 올라간 변수
- 반드시 초기화해야한다
- 메소드나 생성자 내부에 변수를 선언한다
- 중괄호 안에 변수를 선언한것으로 그 함수 내에서만 사용가능하다
- 함수가 호출될때 생성되고 함수가 끝나면 소멸한다
메서드 change를 통해 문자열을 연산했다
change 메서드가 가르키고 있던 abc 메모리가 아닌 abcdef 메모리를 가르키게 된다
- Local variable type inference 지역변수 자료형 없이 사용하기
var str = "hello";
Systerm.out.println(str) ; // String 선언하지 않아도 추론이 가능하다
str = " test " ; //이미 선언된 변수는 같은 타입의 자료형의 값이 변경이 가능하다
(4) 멤버변수 = 인스턴스 변수
- 클래스 내부에의 메서드에서 사용하는 변수
- 값의 할당이 없다면 기본값으로 초기화한다
- 클래스의 속성, 특성
- private 아니면 참조변수로 다른 클래스에서 사용가능하다
- 인스턴스가 생성될때 힙메모리에 생성되고 , 가비지 컬렉터가 메모리를 수거할때 소멸된다
- 멤버변수가 너무 많으면 인스턴스 생성시 쓸대없는 메모리가 할당된다
- 사용자 정의 타입으로 클래스에 정의하여 사용해야한다
- 멤버변수는 인스턴스변수와 static 클래스변수를 모두 이야기한다
(5)초기화 순서
1. 각 타입의 기본값
2. 명시적 초기화
3. 초기화 블럭
4. 생성자
// 1. 명시적 초기화
class Car {
int door =4; //기본형 변수 초기화
Engine e = new Engine(); //참조형 변수 초기화
}
//2. 클래스 초기화 블럭
static{
System.out.println("static{}");
}
// 3. 인스턴스 초기화 블럭
{
System.out.println("static{}");
}
[5] 상수 constant
(1) 상수 : 변하지 않는 값
- 값을 저장하면 변경할수 없다
- 상수값을 선언할때는 final 예약어를 사용한다
- 초기화를 반드시 해야한다
- 상수명은 구분을 위해 대문자로 표현한다
- 가독성을 위해 사용한다 : 선언한 상수값만 변경가능하면 여러부분을 수정할 필요가 없다
public class Define {
public static final int MIN = 1;
public static final int MAX = 999999;
public static final double PI = 3.14;
public static final String GREETING = "Good Morning!";
public static final int MATH_CODE = 1001;
public static final int CHEMISTRY_CODE = 1002;
}
[6] 리터럴 literal
- 변수에 대입되는 데이터 값
- 숫자, 문자 , 논리값
- 리터럴은 상수 풀 constant pool에 있다
- 리터럴의 타입 : 정수 리터럴은 int , 실수 리터럴은 double 로 저장된다
- 리터럴의 접미사 : 16진수는 0x , 8진수는 0 , float 타입은 F , double 은 D를 붙인다
String MyName = "kim"
kim은 String 타입을 가진 리터럴이다
반응형
LIST
'🌈 백엔드 > JAVA_기초' 카테고리의 다른 글
JAVA 개념_조건문 (0) | 2023.02.16 |
---|---|
JAVA 개념_ 반복문 (0) | 2023.02.13 |
JAVA 개념_ 자료형 (0) | 2023.02.13 |
JAVA 개념_연산자 (0) | 2023.02.13 |
JAVA _프로그래밍 언어 (0) | 2023.02.03 |