
📚 개요
자바 기본 개념 까먹었을 때 찾기 귀찮음
나만 보려는 생각으로 적었기에 누구나 보기에 좋진 않다.
1. 변수란?
변수란 말 그대로 변할 수 있는 수를 말한다.
이와 상반되는 개념으로 상수 (Const) 라는 개념이 있다.
변수와 상수 모두 비즈니스 로직이 동작하기 위해서 사용된다.
2. 변수 선언
아래는 변수 선언의 기본형과 실제 변수 선언의 코드이다.
TypeName VariableName (optional){ = initialValue};
public static void main(String[] args) {
int noInitialValueInt;
int initialValue = 0;
// System.out.println(noInitialValueInt); ==> error
System.out.println(initialValue);
}
initialValue 를 변수 선언시에 해주지 않았다면 사용이 불가능하다.
3. 변수 종류
변수의 종류에는 아래와 같은 것들이 있다.
- 기본형 변수
- 참조 변수
- 멤버 변수
- 클래스 변수
- 인스턴스 변수
- 지역 변수
- 매개 변수
4. 기본형 변수
위와 같이 사용한 변수가 기본형 변수에 해당한다.
TypeName VariableName (optional){ = initialValue};
TypeName 에 들어가는 타입 중 byte, short, char, int, long, float, double, boolean 총 8가지의 기본 타입이 있다.
기본형 타입의 특징이다.
- 모두 소문자로 시작된다
- 비객체 타입이므로 null 값을 가질 수 없다. (기본값이 정해져 있음)
- 변수의 선언과 동시에 메모리 생성
- 모든 값 타입은 메모리의 스택(stack)에 저장됨
- 저장공간에 실제 자료 값을 가진다
사용 예시
// 정수 타입
byte byteType = 10; // - 128 ~ 127
short shortType = 10; // -32768 ~ 32767
char charType = 'A'; // 0 ~ 65535
int intType = 100; // -2,147,483,648 ~ 2,147,483,647
long longType = 1000; // -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
// 실수 타입
float floatType = 1.1F; // (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값
double doubleType = 1.1; // (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값
// 논리 타입
boolean booleanType = false; // true or false
5. 참조 변수
byte, short, char, int, long, float, double, boolean 총 8가지의 기본 타입을 제외한 나머지 타입들을 말한다.
총 4가지 타입이 있다.
- 배열 타입
- 열거형 타입
- 클래스
- 인터페이스
참조형 타입의 특징이다.
- 기본형 과는 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장한다.
- 즉, 실제 값은 다른 곳에 있으며 값이 있는 주소를 가지고 있어서 나중에 그 주소를 참조해서 값을 가져온다.
- 메모리의 힙(heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장
- 참조형 변수는 null로 초기화 시킬 수 있다
배열 선언
//크기 할당 & 초기화 없이 배열 참조변수만 선언
int[] arr;
int arr[];
// 선언과 동시에 배열 크기 할당
int[] arr = new int[5];
String[] arr = new String[5];
// 기존 배열의 참조 변수에 초기화 할당하기
int[] arr;
arr = new int[5]; //5의 크기를 가지고 초기값 0으로 채워진 배열 생성
// 선언과 동시에 배열의 크기 지정 및 값 초기화
int[] arr = {1,2,3,4,5};
int[] arr = new int[] {1,3,5,2,4};
int[] odds = {1,3,5,7,9};
String[] weeks = {"월","화","수","목","금","토","일"};
// 2차원 배열 선언
int[][] arr = new int[4][3]; //3의 크기의 배열을 4개 가질 수 있는 2차원 배열 할당
int[][] arr9 = { {2, 5, 3}, {4, 4, 1}, {1, 7, 3}, {3, 4, 5}};
//arr[0] >> {2, 5, 3};
//arr[1] >> {4, 4, 1};
//arr[2] >> {1, 7, 3};
//arr[3] >> {3, 4, 5};
열거형 선언
public enum Weeks {
MONDAY("mon", 10),
TUESDAY("tue", 20),
WEDNESDAY("wed", 30),
THURSDAY("thu", 40),
FRIDAY("fri", 50),
STURDAY("sat", 60),
SUNDAY("sun", 70);
private final String name;
private final int value;
private Weeks(String name, int value) {
this.name = name;
this.value = value;
}
public String getName() {
return this.name;
}
public int getValue() {
return this.value;
}
}
public static void main(String[] args) {
for (Weeks week : Weeks.values()) { // mon, tue, wed, thu, fri, sat, sun
System.out.println(week.getName());
}
}
클래스
접근제어자 종류
- public
- private
- protect
위 세개에 대한 내용은 따로 빼겠다.
<< Fixed : 글 작성 링크 >>
사용 예시
package developer;
public class Developer {
private String name;
public String position;
public Developer () {}
public Developer (String name, String position) {
this.name = name;
this.position = position;
}
public String getName() {
return this.name;
}
public String getPosition() {
return this.position;
}
public void setPosition(String position) {
this.position = position;
}
}
이런식으로 클래스를 작성한 뒤
Developer dev = new Developer("An", "backend");
System.out.println(dev.getPosition()); // backend 출력
이런식으로 사용하면 된다.
인터페이스
접근제어자 interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
...
public abstract 메소드이름(매개변수목록);
...
}
모든 멤버변수는 public static final 이어야 하고
모든 멤버메소드는 public abstract 로 선언되어야한다.
클래스를 두고 인터페이스를 사용하는 이유
하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있습니다.
인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다.
사용 방법
public interface Developer {
public static final int speed = 30;
// public int speed = 30; 으로도 가능
public abstract void coding();
// public void coding(); 으로도 가능
default int getSpeed(int level) {
return level * speed;
};
}
인터페이스를 만들어줍니다. 이 인터페이스를 구현하는 클래스는 전부 인터페이스에 있는 메소드와 값을 가집니다.
클래스로 인터페이스의 내용을 구현합니다.
public class DeveloperImpl implements Developer {
private String name;
private int level;
private String position;
public DeveloperImpl() {}
public DeveloperImpl(String name, int level, String position) {
this.name = name;
this.level = level;
this.position = position;
}
public int getLevel () {
return this.level;
}
@Override
public void coding() {
// TODO Auto-generated method stub
System.out.println("열심히 코딩중...");
}
그리고 사용
public static void main(String[] args) {
DeveloperImpl dev = new DeveloperImpl("An", 50,"backend");
System.out.println(dev.getSpeed(dev.getLevel())); // 1500
dev.coding(); // 열심히 코딩중... 출력
System.out.println(dev.speed);
}
6. 변수 선언 규칙
일반적인 규칙
- 첫 문자가 문자나 '_', '$'의 특수문자로 시작되어야 한다. 숫자로 시작할 수 없다.
- 첫 문자가 아니라면, 문자나 '_', '$'의 특수문자 그리고 숫자로 구성될 수 있다.
- 자바의 예약어는 식별자로 사용할 수 없다.
- 자바의 식별자는 대소문자를 구분한다.
- 식별자 길이는 제한이 없고 공백은 포함할 수 없다.
변수 선언 예시
- 클래스 이름: ClassName
- 메서드 이름: getValue, get_Value
- 변수 이름: $value, variable_Value
- 상수이름: CONSTANT_VALUE
🔗 출처
클래스 구성 - http://www.tcpschool.com/java/java_class_declaration
'B4 Junior' 카테고리의 다른 글
📺 Centos7 설치, 초기 세팅 및 jdk 17 설치 (4) | 2023.04.07 |
---|---|
⚙️ CentOS7 GUI 에서 CLI 로 (0) | 2023.04.07 |
👀 Spring 용어 총 정리 1편 (0) | 2023.04.05 |
📃 PDF 파일 안 읽힘 ( 유형 - 알 수 없는 파일 ) (2) | 2023.03.10 |
Cloudfront - S3 - EC2 도입 ( FE 배포과정 ) (0) | 2023.03.01 |
백엔드는 못말려
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!