728x90
네이밍 컨벤션
- Camel Case 권장
- 문자열 사이를 대문자로 구분하는 방법
- 클래스명은 대문자로 쓴다.
- 패키지명은 소문자로 쓴다.
- 변수명의 시작은 숫자로 쓰는 건 불가능하다.
- 변수명의 특수문자에는
$
와_
만 가능하다. - 변수명 뒤에 숫자를 쓰는 건 권장되는 방법은 아니다.
⭐ 변수 네이밍의 목적은 프로그래밍 중의 용도에 맞고 가독성을 높이는 것이다!
- 변수, 함수의 명명은 축약형으로 쓰는 것보다 명시적으로 쓰는 게 좋다!
int ns; // worst
int numberOfStudent; // best
- indexing variable 같은 경우는 간단한 형태로 표현해도 좋다!
- Ex:
i
,j
- Ex:
정수
bite
: 바이트 단위의 데이터 핸들링 시 이용 (음악, 동영상, 실행 파일 등), input / outputshort
: C / C++ 의 라이브러리를 사용할 때 보통 사용int
: 기본 정수 자료형- 리터럴(프로그램상의 모든 숫자)은
int
로 저장 - 프로그램 내에서 어떤 정수를 로드할 때는 무조건
int
를 통해 로드
-> 변수에 숫자 할당시, 프로그램 내부에 있는 리터릴 숫자를 가져옴 long
: 리터럴 자체가 4byte로 잡히므로 숫자 뒤에L
또는l
을 써서long
형임을 명시적으로 표현함
⭐ 보통은L
을 써서 혼란을 피한다!
- 리터럴(프로그램상의 모든 숫자)은
public class VariableTest {
public static void main(String[] args) {
byte bnum = -128;
System.out.println(bnum);
//int num = 12345678900; // error
//long lNum = 12345678900; // error
long lNum = 12345678900L; // OK
System.out.println(lNum);
}
}
실수
- 기본 실수 표현형 :
double
public class DoubleTest {
public static void main(String[] args) {
double dnum = 3.14;
float fnum = 3.14F;
/*
java의 기본 실수형의 리터럴은 double이므로 float를 이용하기 위해서는
리터럴 뒤에 명시적 식별자 'F'를 추가한다.
*/
}
}
⭐ 웬만해서는 double
을 써서 오류는 피하는 게 좋다!
부동소수점 방식
$(-1)^S * M * 2^E$
- 부동소수점 방식은 자릿수가 제한되어, 표현 가능한 실수의 범위와 정밀도가 제한적이기에 잘 사용되지 않는다.
- 부동 소수점 방식으로 표현하더라도 오차가 발생한다.
- 컴퓨터에서는 실수를 근사값으로 리턴하기 때문이다.
- 지수부가
0
을 표현할 수 없기에 - 부동 소수점 표현 방식의 오차를 해결하기 위해 자바에서는
BigDecimal
클래스를 이용한다.
문자
- utf-16 인코딩 사용 (모든 문자 2byte)
- 💡 오버헤드 방지를 위해 일반적으로는 utf-8을 사용한다.
public class CharacterTest {
public static void main(String[] args) {
char ch1 = 'A';
System.out.println(ch1);
System.out.println((int)ch1);
char ch2 = 66;
System.out.println(ch2);
System.out.println((char)ch2);
}
}
public class CharacterTest {
public static void main(String[] args) {
char ch1 = 'A';
System.out.println(ch1);
System.out.println((int)ch1);
char ch2 = 66;
System.out.println(ch2);
System.out.println((char)ch2);
int ch3 = 67;
System.out.println(ch3);
System.out.println((char)ch3);
// char ch = -66; // 음수 X
// char ch = 12345678 // 2byte 내에서 핸들링 불가능한 문자 X
char han = '한';
char ch = '\uD55C'; // unicode로 표현
System.out.println(han);
System.out.println(ch);
}
Local variable type inference
Java 10
부터 지원- 지역 변수 자료형 추론 : 지역 변수에서 자료형을 명시하지 않아도 사용 가능
- 한번 선언하여 추론된 변수는 다른 타입의 값을 대입할 수 없음
- 스크립트 언어가 아닌 컴파일 언어여서 컴파일 당시에 자료형 결정
public class LocalVariableInter {
public static void main(String[] args) {
var i = 10;
var j = 10.0;
var str = "test";
System.out.println(i);
System.out.println(j);
System.out.println(str);
var str2 = str;
System.out.println(str2);
str = "hello";
// str = 3; // error
}
}
상수
final
- 상수같은 경우는 다른 변수와의 차별점을 두기 위해 대문자로 주로 표현
- 상수를 사용하면 변하지 않는 값을 반복하여 사용할 때 의미있는 문자로 인식하기 쉽고 변하더라도 선언부만 변경하면 됨
public class ConstantTest {
public static void main(String[] args) {
final int MAX_NUM = 100;
final int MIN_NUM;
MIN_NUM = 0;
// MAX_NUM = 20; // error
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
}
}
리터럴
- 프로그램에서 사용하는 숫자, 문자, 논리값
- 리터럴은 상수 풀(constant pool)에 존재 _ data area
- 프로그램 실행이 모두 끝난
캐스팅
public class TypeConversionTest {
public static void main(String[] args) {
int iNum = 255;
byte bNum = (byte)iNum;
System.out.println(bNum); // 자료형의 유실로 인한 dummy값 발생
double dNum = 3.14;
int inum = (int)dNum;
System.out.println(inum);
double dNum1 = 1.2;
float fNum1 = 0.9F;
int iNum1 = (int)dNum1 + (int)fNum1;
int iNum2 = (int)(dNum1 + fNum1);
// 강제 캐스팅 진행했지만 결과값 상이
System.out.println(iNum1);
System.out.println(iNum2);
}
}
Reference
728x90
'🧑💻 Language > Java' 카테고리의 다른 글
[Java] 객체 지향 프로그래밍 (1) (0) | 2022.04.07 |
---|---|
[Java] Basic Java (2) (0) | 2022.04.04 |
[Java] 멀티스레드 (0) | 2021.10.18 |
[Java] 14. 스윙 (0) | 2021.06.05 |
[Java] 13. GUI (0) | 2021.06.01 |