인프런의 김영한님의 Java 기초를 보고 정리를 하였다.
추후에 복습에 편리함을 목적으로 이 포스팅으로 기록을 남긴다.
이 부분에 특히 메서드 부분하고 오버로딩을 잘 보자 !
변수 종류
// 정수: byte, short, int, long
int a = 10;
// 실수: float, double
double b = 20.4;
// 불리언: boolean
boolean c = true;
// 문자 char
char d = 'h';
// 문자열 String
String e = "jerry";
- 위에 쓰여있는 변수들은 자주 쓰이는 변수들이다.
실무에 거의 쓰지 않는 변수 타입
- byte, short
- float
- char
변수 선언 규칙
- 변수는 Camel case 사용 → ex) orderDetail
- 클래스는 첫글자를 대문자로 사용 → ex) OrderDetail
- 상수는 모두 대문자로 사용하고 언더바로 구분 → ex) USER_LIIMT
- 패키지는 모두 소문자를 사용 → ex) org.spring,boot
각각의 용도에 맞는 이름을 정하는게 엄청 중요하다 !
산술 연산자
a + b
a - b
a / b
a * b
a % b (나머지)
문자열 더하기
String a = "Hello";
String b = "World";
int c = 10 ;
HelloWorld10
- 문자열에 무엇을 더하든 문자열로 변경 됨
- integer가 String으로 업캐스팅
연산자 우선순위
- 상신선으로 생각하고 애매하면 괄호 사용
- 개발에서 가장 중요한 것은 단순함과 명확함 !
비교 연산자
a == b
a != b
a > b
a < b
a >= b
a <= b
논리 연산자
AND 연산 : &&
OR 연산 : ||
NOT 연산 : !
지역 변수
- 자신이 선언된 코드 블록 안에서만 생존
- 자신이 선언된 코드 블록을 벗어나면 제거
스코프가 필요한 이유
- 비효울적인 메모리 사용 제어
- 스코프를 정하면 필요없는 변수를 메모리에서 제거하여 효율적으로 메모리 사용 가능
- 코드 복잡성 감소
자동 형변환
- 작은 범위에서 큰 범위로는 문제 없음
- 자동 형변환
- Integer가 String, Float 형으로 가는거는 아무 문제 없음
명시적 형변환 (캐스팅)
double doubleValue = 1.5;
int intValue ;
intValue = (int) doubleValue;
System.out.println(intValue);
- 문제는 큰 범위에서 작은 범위 넣을 경우 문제
- 숫자가 손실되는 문제가 발생 (소수점 버림)
- int의 범위를 초과하면 오버플로우가 발생 (int가 표현하는 가장 작은 수)
- 오버플로우가 절대 발생하지 않도록 ...!!
double a= 3;
int b = 2 ;
System.out.println("result = " + (a/b));
- 서로 다른 타입의 계산은 큰 범위로 자동 형변환
좋은 프로그램은 무한한 자유가 있는 프로그램이 아니라 적절한 제약이 있는 프로그램이다 .
적절한 제약은 유지보수성을 높힘 !!
배열
int[n] student = new int[n]
- type 변수명 = new 클래스명( );
int[] student ;
student = new int[5] ;
int[] student ;
student = new int[]{1,2,3,4,5} ;
int[] student = {1,2,3,4,5} ;
- [ ] 사이에 배열의 크기를 넣어주면 된다.
기본형과 참조형
기본형으로는 변수에 사용할 값을 직접 넣을수 있는 타입
- int, long, double, boolean 등등
참조형은 참조(주소)를 저장하는 데이터 타입
- 배열, 객체, 클래스 등
향상된 For 문
int[] number = {1,2,3,4,5,6};
for(int i : number){
System.out.println("i = " + i);
}
- 배열의 인덱스를 사용하지 않고, 종료 조건을 주지 않아도 됨
- 단순히 배열의 처음부터 끝까지 탐색
메서드
- 변수명은 일반적으로 명사 → totalSum, customerName
- 메서드명은 일반적으로 동사로 시작 → printReport, getEmployeeCount
매서드 용어 정리
public static int add(int a,int b) {
return (a+b);
}
public static void main(String[] args) {
int sum1 = add(5,10);
}
매개변수, 인수, 파라미터, Argument(아규먼트) 맨날 헷갈린다...
인수 (Argument)
- add에서 5,10 처럼 넘기는 값을 의미한다.
- 한글로는 인수, 영어로는 아규먼트라 한다.
- Argument는 논쟁,근거라는 뜻으로 함수가 동작하려는 근거라는 의미로 전달되는 값을 Argument(인자)라고 부른다.
매개변수 (Parameter)
- add 함수에서 int a, int b 와 같이 선언된 변수를 매개변수 또는 파라미터라 한다.
- 매서드를 호출할 때 인수를 넘기면, 그 인수가 매개변수에 대입된다.
- 매개변수 → "중간에서 전달하는 변수"
- 매개변수는 앞으로 코딩하면서 정말 정말 많이 쓰는 말이니 헷갈리지도 말자 !
오버로딩 (OverLoading)
add(int a, int b)
add(int a, int b, int c)
add(double a, double b)
- 이렇게 이름이 같고 매개변수가 다른 메서드를 여러개 정의하는 것을 의미
- Over Loading는 과적, 과부화라는 뜻으로 하나의 메서드명에 여러개의 메서드를 과적 한 거라 생각하면 된다.
int add(int a, int b)
double add(int a, int b)
- 하지만 이렇게 반환형이 다른 경우 컴파일 오류 발생