public class Basic {
public int plus(int a, int b) {
return a + b;
}
}
public class Hello {
public static void main(String[] args) {
String message = "Hello World";
System.out.println("message");
}
}
- 클래스, 변수, 메소드 등에 붙이는 이름
- 대소문자를 구별 (cat과 Cat은 다른 식별자이다.)
- 한글 사용 가능 (테스트 코드를 제외하면 한글 사용X)
- 숫자 사용 가능 (첫 글자로 사용X, 숫자로만 구성X)
- 특수문자 2가지( _ , $ ) 사용 가능 ($는 거의 사용X)
- 길이 제한 없다.
- 자바에서 사용 중인 키워드 사용 불가
가능한 식별자 | 불가능한 식별자 |
---|---|
name | 1block 숫자로 시작 |
section2 | one% 사용할 수 없는 특수문자(%) |
super_man | my home 사용할 수 없는 특수문자(공백) |
true 이미 사용중인 키워드 |
각 단어의 첫 글자는 대문자, 나머지는 소문자로 표기
클래스 이름 규칙
ex. MyHome, MyProject 등
각 단어의 가장 첫글자는 소문자, 이후에는 Upper Camel Case와 동일
변수, 메소드 이름 규칙
ex. myHome, myProject 등
모두 대문자, 각 단어를 밑줄(_)로 연결
상수 이름 규칙
ex. MY_HOME, MY_PROJECT 등
- 배열 (Array)
배열을 이용해서 여러 개의 데이터를 한 번에 나타낸다.
예시 : int[] points = new int[10];
- 클래스 (Class)
각종 클래스를 이용해서 객체를 나타낸다.
예시 : String message = "안녕하세요";
- String 클래스를 이용해서 문자열을 표현
- 인터페이스 (Interface)
각종 인터페이스를 이용해서 구현 클래스를 표현한다.
예시 : List<String> hobbies = new ArrayList<>();
- List 인터페이스를 이용해서 ArrayList 클래스를 표현
- 프로그램에서 사용하는 값을 저장하기 위한 공간
- 데이터 타입 다음에 변수 이름을 작성해서 변수를 선언(declare)한 뒤 사용할 수 있다.
- 변수에 저장된 값은 언제든지 다른 값으로 바꿀 수 있다.
- 변수의 선언만 하고, 나중에 변수를 초기화하는 방법
int a, b, c;
,String str;
- 변수의 선언과 동시에 초기화하는 방법
- 데이터타입 변수이름 = 초기값;
int price = 5000;
,char name = "L"
boolean isGood = true;
boolean isAlive = false;
char ch1 = 'A';
char ch2 = '홍';
char ch3 = '\n'; // 라인 피드 - 줄바꿈
char ch4 = '\t'; // 탭
char ch5 = '\''; // 작은 따옴표
char ch6 = '\"'; // 큰 따옴표
int score = 100;
long view = 123456789000L;
Long 타입 선언할 때 주의사항
4Byte 넘어가는 타입의 값은 마지막에 "L" 또는 "l"을 추가해야 한다.
이유는 자바는 기본적으로 모든 숫자를 4Byte에 넣는데, 4Byte가 초과하는 경우 "L" 식별자를 통해 Long 타입으로 인식한다.
double discount = 0.5;
double pi = 3.1415926535;
String country = "korea"; // 자바가 쉬운 사용법을 지원
String name = new String("자바");
기본 타입(Primitive type)은 아니지만, 자주 사용하기 때문에 기본 타입처럼 사용할 수 있도록 자바가 지원한다.
- final 키워드를 추가한 변수
- 변수 선언과 동시에 반드시 초기값을 지정해야 한다.
- 실행 중 저장된 값을 변경하는 것이 불가능하다.
- 변수와 구분하기 위해 대문자를 이용한 Snake Case 방식의 Naming 사용
- 상수선언 데이터타입 상수이름 = 초기값;
예시 :final double PI = 3.141592;
, (PI = 1.5;
는 오류 발생!)
소스 코드 내에서 실제 입력된 값
- 소수점이 없고, 10진수
리터럴 :25
-100
, 예시 :int n = 25;
int n = -100;
- 0 으로 시작, 8진수
리터럴 :025
-02
, 예시 :int n = 025;
int n = -02;
- 0x 로 시작하며, 0 ~ 9 또는 A ~ F 또는 a ~ f 로 구성, 16진수
리터럴 :0x25
0xAC5
, 예시 :int n = 0x25;
int n = 0xAC5;
- 0b 로 시작하며, 2진수
리터럴 :0b1010
, 예시 :int n = 0b1010;
- long 타입 리터럴은 숫자 뒤에 L 또는 l 을 붙여 표시한다.
리터럴 :25L
, 예시 :long n = 25L;
- 소수점이 있고, 10진수
- double 타입
리터럴 :3.14
-0.21
, 예시 :double n = 3.14;
double n = -0.21;
- float 타입
리터럴 :3.14F
, 예시 :float n = 3.14F;
작은 따옴표 ( ' ' ) 로 묶은 하나의 문자
리터럴 :'a'
'가'
, 예시 :char ch = 'a';
char ch = '가';
- 이스케이프(Escape)
백슬래시(\, \) 뒤에 한 문자가 오는 조합으로 단일 문자로 인식 (문자열 인식도 가능)
- 리터럴로 생성되는 문자열은 JVM이 관리
- 동일한 문자열이 발생되면 JVM이 기존에 생성한 문자열을 재사용
- 큰 따옴표( " " )로 문자열 표현
- 문자열 리터럴 내부에서도 이스케이프 문자를 사용할 수 있다.
리터럴 :"apple"
, 예시 :String fruit = "apple";
public class StringLiteral {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "hello";
System.out.println(str1 == str2);
} // JVM에 의해서 생성된 문자열 "hello"를 공유하므로 true 반환
}
리터럴 :
true
false
, 예시 :boolean isNum = true;
- String 에서 사용 가능
리터럴 :null
, 예시 :String message = null;
상수와 리터럴 둘 다, 변하지 않는 값(데이터)를 의미한다.
좀 더 자세히 말하면 상수는 변하지 않는 변수를 뜻한다.
리터럴은 실제값, 즉 변수에 넣는 변하지 않는 데이터를 의미한다.
int a = 10;
int 앞에 final를 붙이면, a는 상수가 된다. 여기서의 리터럴은 10이다. 즉, 10과 같이 변하지 않는 데이터가(boolean, char, int, long, double 등) 리터럴(literal)이다.
- 메모리는 1바이트마다 고유의 주소값을 가지는데 이것을 참조(Reference)라고 한다.
- 참조 타입은 값을 저장하지 않고 메모리의 주소값을 저장한다.
(C/C++의 포인터 개념)- 참조값은 16진수로 구성되어 있다.
- 참조 타입의 값은 임의로 수정할 수 없다.
- 데이터타입 변수이름 = 값;
예시 :String name = "tom";