자바를 다시 배우게 되었다!
한참 파이썬만 쓰다가 자바를 다시 쓰려니 머리가 벌써 아파오는 기분...ㅠㅠㅠㅠ
그래도 배웠던게 있으니 수월하겠지!
일단 기본 개념부터 정리해보려고 한다!
**final
키워드를 자료형 앞에 붙여서 선언한다.**1) +
2) -
3) *
4) /
5) %
1) 대소비교
>
, <
, <=
, >=
2) 동등비교
==
, !=
값이 같다 라는 의미를 나타내기 위해서 등호를 ==
와 같이 두 개로 작성해주어야 하며, =
는 변수에 값을 대입한는 작업을 수행한다는 점을 주의해야 합니다. 추가로, 문자열의 값이 같은지의 대한 여부는 ==
연산자로 확인할 수 없습니다. 변수에 담긴 것이 문자열 값 그 자체가 아닌 메모리의 주소이기 때문이지요. 문자열 값에 대한 비교는 equals()
로 수행할 수 있습니다.1) &&
- AND
true
여야만 true
를 반환하며, 그렇지 않은 경우 모두 false
를 반환2) ||
- OR
true
여도 true
를 반환1) if () {...}
if
뒤에 이어지는 괄호 안에 조건을 넣고 이 조건이 true
이면 중괄호 안의 소스를 실행하게 됩니다.2) if () {...}
… else {...}
else
블록을 활용합니다. if
조건이 false
인 경우 else
블록 내의 소스를 실행합니다.3) if () {...}
… else if () {...}
… else {...}
else if
블록을 활용합니다. 주의해야할 점은 조건을 만족한 최초의 if
혹은 else if
블록만 실행하고 그 이후 코드는 무시한다는 것입니다.1) while () {...}
괄호 안의 조건이 true
경우 블록 내부의 소스를 실행합니다. 만약 조건이 true
에서 false
바뀌지 않는다면 해당 반복문은 무한루프(Infinite Loop)에 빠지게 되어 막대한 자원을 소모케 하고 결국 시스템에 큰 악영향을 미칩니다.
반복문을 사용할 때에는 반드시 조건을 false
로 반환할 수 있도록 하는 장치가 필요하며, 사전에 코드를 설계할 때에도 꼼꼼한 검토와 테스트가 필요합니다.
2) `for (초기화; 조건식; 증감식) {...}`
while
문과 같이 true
이면 블록 내부 코드를 실행합니다.++
, --
이외의 다양한 연산을 활용할 수 있습니다.최초 선언 시, 자료형 뒤에 []
를 붙여주면 해당 자료형의 배열을 선언할 수 있습니다.
{}
로 감싼 값들을 배열로 선언된 변수에 대입할 수 있습니다.
배열의 요소는 순서를 의미하는 인덱스값을 가지며 0
부터 순서를 셉니다.
전체 배열의 크기, 즉 요소의 갯수는 length
함수를 사용하여 확인할 수 있습니다.
특정 인덱스(순서)의 값을 가져오기 위해서는 배열 변수 뒤에 [인덱스]
를 작성하면 됩니다.
일반적으로 배열의 모든 요소에 대한 반복문을 적용할 때에는 for (int i = 0; i < 배열변수.length; i++)
와 같이 조건을 설정합니다. 인덱스가 0
부터 시작한다는 점을 활용한 것이죠
System.out.println(배열변수)
와 같이 직접 배열 변수를 함수에게 전달하면 우리가 예상한 것과는 전혀 다른 내용이 출력됩니다. [I@1b0375b3
, [Ljava.lang.String;@2f7c7260
와 같이 자료형과 뭔지 모를 문자들의 조합이 출력되죠. 이는 기본형 외의 자료형을 담는 변수가 값 자체가 아닌 주소를 가진다는 것을 드러냅니다.
배열변수[인덱스] = 값
의 형태로 기존 요소의 값을 덮어쓸 수 있습니다.
add()
함수를 통해 요소를 추가할 수 있습니다.size()
함수를 사용합니다.ArrayList변수.get(인덱스)
와 같이 작성합니다.맵은 키와 값을 쌍으로 하는 데이터의 모음입니다. 순서를 따지지 않는다는 점이 리스트와 구분됩니다. 또한 키의 경우 중복을 허용하지 않지만 값은 중복을 허용한다는 특징을 가지고 있습니다. 리스트와 마찬가지로 Java에서 제공하는 구현체가 있으며, 이 중 활용도가 높은 HashMap에 대하여 살펴보겠습니다.
HashMap변수.put(키) = 값
과 같으며, 값을 불러오기 위해서는 HashMap변수.get(키)
와 같이 작성하면 됩니다.HashMap<String, String>
와 같은 형식으로 변수를 선언하면 입력되는 데이터의 자료형을 제한할 수 있습니다.예로 들어 100을 입력하고자 할 때, String(문자열)로 입력받고 싶으면 next() 나 nextLine() 을, int(정수)로 입력받고 싶다면 nextInt() 를 사용하여 입력받으면 알아서 해당 타입으로 입력된다.
자바에서 쓰이는 대부분의 클래스는 lang 패키지가 아니라면 import 을 통해 호출해주어야 한다.
Scanner 의 경우는 java.util 패키지에 있다.
Scanner 의 입력 메소드들은 대부분 공백과 개행(' ', '\t', '\r', '\n' 등등..)을 기준으로 읽는다. 이 덕분에 사용자의 편의에 따라 쉽게 입력을 받을 수 있다.
Scanner in = new Scanner(System.in); // Scanner 객체 생성
주의할 것은 Scanner 을 생성할 때 System.in 이 들어간다는 점이다.
System.in 은 사용자로부터 입력을 받기 위한 입력 스트림이다.
그렇기 때문에 Scanner 뿐만 아니라 다른 입력 방식들도 사용자로부터 입력을 받기 위해서는 System.in 이 들어간다.
일련의 코드를 단순화 한다.
일반적으로 입력에 따른 결과값을 반환한다.
void타입의 메소드는 리턴값이 존재하지 않는다.
더욱 편리한 프로그래밍을 가능케 한다.
반환값은 메소드를 호출했던 해당 위치로 반환한다.
void타입은 리턴값이 없다.
return;으로 메소드를 끝내거나, return이라는 키워드를 생략할 수 있다.
파라미터가 없는 메소드: 괄호 사이에 아무것도 입력되지 않는 메소드,파라미터가 없는 메소드
//파라미터가 없는 메소드 호출 예
int a = getTen();
//파라미터가 없는 메소드 정의 예
public static int getTen() {
return 10;
}