본문 바로가기

Java/문법

[Java] 핵심 기본편 - 문자열, 제어문, 배열, 아스키 코드(ASCII)

1. 문자열

문자열

  • 문자열: 여러 문자들의 집합
  • String s = "I like Java";
문자열의 기능 설명 예시 결과
length 길이 s.length();
I like Java(띄어쓰기 포함)
11
toUpperCase 대문자로 s.toUpperCase(); I LIKE JAVA
toLowerCase 소문자로 s.toLowerCase(); i like java
contains 포함 여부 s.contains("Java");
I like Java
True
indexOf 위치 정보 s.indexOf("Java");
I like Java
7
lastIndexOf 마지막 위치 정보 s.lastIndexOf("a");
I like Java
10
startsWith 문자열로 시작하는가? s.startWith("I like");
I like Java
True
endsWith 문자열로 끝나는가? s.endsWith(".");
I like Java
False
replace 문자열 변환 s.replace("like", "love"); I love Java
substring 문자열 자르기 s.substring(7);
I like Java
7번 인덱스부터 끝까지
Java
trim 앞뒤 공백 제거 s.trim(); I like Java
concat 문자열 결합 s.concat(" and Python"); I like Java and Python

 

문자열 비교

  • 문자열 비교: 정수 비교와는 다른 방식으로 해야 오류가 안 남
    • 문자열 비교 2: new를 써서 변수를 선언하면 s1과 s2가 각각 다른 곳에 저장한 Java를 참조하기에 s1 == s2는 False
  • equals: 문자열 내용이 같은지 비교할 수 있는 함수
// 정수 비교
int num1 = 3;
int num2 = 3;
System.out.println(num1 == num2); // True

// 문자열 비교 1
String s1 = "Java";
String s2 = "Java";
System.out.println(s1 == s2); // True

// 문자열 비교 2
String s1 = new String("Java");
String s2 = new String("Java");
System.out.println(s1 == s2); // False

// 문자열 비교 3
String s1 = new String("Java");
String s2 = new String("Java");
System.out.println(s1.equals(s2)); // True


특수 문자

  • 특수 문자: 특별한 기능을 수행하는 문자
특수 문자의 종류 설명 예시 결과
\n 줄 바꿈 System.out.println("A\nB"); A
B
\t System.out.println("A\tB"); A        B
\\ 역슬래시 System.out.println("C:\\Java"); C:\Java
\" 큰 따옴표 System.out.println("A\"B\"C"); A"B"C
\' 작은 따옴표 System.out.println("A\'B\'C"); A'B'C

 

2. 제어문

If & Else

  • If: 조건에 따른 분기
  • Else: 어떤 조건을 만족하지 않는 경우 실행
// 수행할 명령문이 한 줄일 때
if (조건)
	명령문
else
	명령문
    
// 수행할 명령문이 여러 줄일 때
if (조건) {
    명령문1...
} else {
    명령문2...
}

// 예제
int num = 3;
if (num>0 && num<5)
	System.out.println("num은 0보다 크고 5보다 작아요");
else
	System.out.println("num은 0보다 작거나 5보다 커요");
    
if (num>0 || num<5)
	System.out.println("num은 0보다 크거나 5보다 작아요");

 

Else If

  • Else If: If문에서 다른 조건을 추가하기 위함, 여러 번 사용 가능
    • Else: 사용하지 않거나, 마지막에 한번만 사용함
// 조건1을 만족하지 않는 경우, 조건2를 만족하는지 확인(즉, 분기 추가)
if (조건1)
	명령문
else if (조건2)
	명령문;
    
// 명령문이 여러 줄일 때는 중괄호 속에 명령문을 넣어야 함
if (조건1) {
	명령문...
} else if (조건2) {
	명령문...
}

// 예제
int num = 3;
if (num < 3)
	System.out.println("num은 3보다 작아요");
else if (num > 3)
	System.out.println("num은 3보다 커요");
else
	System.out.println("num은 3이에요");

 

Switch Case

  • Switch Case: 케이스(경우)에 따른 분기
    • break: 케이스문을 수행한 이후에는 빠져나오도록, 생략 가능
    • default: 기본 값, 생략 가능
switch (조건) {
	case 값1: 명령문
    	break;
    case 값2: 명령문
    	break;
    ...
    default: 명령문 // 모든 case에 해당하지 않을 때 실행되는 기본 값
}

// 예제
int menu = 2; // 게임 메뉴: 시작(1), 설정(2)
switch (menu) {
	case 1: System.out.println("시작");
    	break;
    case 2: System.out.println("설정");
    	break;
    default: System.out.println("잘못된 메뉴");
}

 

For

  • For: 반복문
    • 변수선언: 정수형 변수 i를 선언 및 0으로 초기화
    • 조건: i가 5보다 작다는 조건을 만족하는 동안 반복문 내 명령문 실행
    • 증감: 반복 회차가 끝나고 나서 i 값을 1 증가
// 명령문이 한 줄인 경우
for (변수선언; 조건; 증감) // 변수, 조건을 만족하는 동안 명령문 실행, 매 회차마다 어떠한 값을 증가 or 감소
	명령문;
    
// 명령문이 여러 줄인 경우
for (변수선언; 조건; 증감) {
	명령문1
    명령문2
    ...
}

// 예제
for (int i = 0; i < 5, i++) {
	System.out.println("안녕?");
}
/* 실행결과:
안녕?
안녕?
안녕?
안녕?
안녕?
*/

 

While

  • While: 다른 형태의 반복문
    • 조건: i가 5보다 작다는 조건을 만족하는 동안 반복문 내 명령문 실행
    • 변수선언: For문과 다르게  선언이 필요한 경우, While문 밖에 정수형 변수 i를 선언 및 초기화
    • 증감: i의 값을 증가
// 조건이 하나일 때
while (조건)
	명령문;
    
// 조건이 여러 개일 때
while (조건) {
	명령문1
    명령문2
    ...
}

// 예제
int i = 0;
while (i < 5) {
	System.out.println("안녕?");
    i++;
}
/* 실행결과:
안녕?
안녕?
안녕?
안녕?
안녕?
*/

 

Do While

  • Do While: 또 다른 형태의 반복문
    • While vs Do While 차이점: Do While은 한 번은 무조건 실행
// do while 명령문 - 1개일 때
do
	명령문
while (조건);

// do while 명령문 - 2개 이상
do {
    명령문1,
    명령문2
    ...
} while (조건);

 

이중 반복문

  • 이중 반복문: 반복문의 중첩
    • 첫번째 for문: i가 0, 1일때 총 2회에 걸쳐 명령문 반복 실행
    • 두번째 for문: j가 0, 1, 2일때 총 3회에 걸쳐 명령문 반복 실행
    • 2회 * 3회 = 6회
for (int i = 0; i<2; i++) {
	for (int j = 0; j<3; j++) {
    	System.out.println("안녕?");
    }
}

/* 실행결과:
안녕?
안녕?
안녕?
안녕?
안녕?
안녕?
*/

 

Break

  • Break: 반복문 탈출
for (int i = 0; i < 5; i++) {
	if (i == 3) // i가 3일때 break문을 실행하여 반복문 탈출
    	break;
    System.out.println("안녕?");
}

/* 실행결과:
안녕?
안녕?
안녕?
*/

 

Continue

  • Continue: 반복문 건너뛰기
for (int i = 0; i < 5; i++) {
	if (i == 2) // i가 2일 때 continue문을 실행하여 다음 회차로 건너뛰기
    	continue;
    System.out.println("안녕?");
}

/* 실행결과:
안녕?
안녕?
안녕?
안녕?
*/

 

3. 배열

배열

  • 배열: 같은 자료형의 값 여러 개를 저장하는 연속된 공간
  • 자료형[] 변수명 = new 자료형[크기 or 길이];
  • 자료형 변수명[] = new 자료형[크기 or 길이];
    • 자료형 혹은 변수명 뒤에 [] 대괄호를 쓰면 됨 
    • int[] numbers = new int[5];
    • int numbers[] = new int[5];
    • String[] names = new String[3];
    • String names[] = new String[3];
  • 변수명[인덱스] = 값;
    • 배열의 특정 위치에 값을 넣는 것
    • int[] numbers = new int[5]; // 인덱스: 0 1 2 3 4
    • numbers[0] = 1; // 인덱스는 항상 0부터 시작함
    • numbers[1] = 5;
    • numbers[2] = 10;
    • ...
  • 자료형[] 변수명 = new 자료형[] {값1, 값2, ...};
  • 자료형[] 변수명 = new 자료형[] {값1, 값2, ...}; (생략 가능)
    • 배열을 만들면서 동시에 값을 초기화 하는 방법
    • new 자료형 뒤 [] 대괄호에 따로 크기를 명시하지 않음
    • why? {} 안의 값이 두 개라면 2, 세 개라면 3이 될 것이기 때문
    • int[] numbers = new int[] {1, 2, 3, 4, 5};
    • int[] numbers = {1, 2, 3, 4, 5};
    • String names[] = new String[] {"A", "B", "C"};
    • String names[] = {"A", "B", "C"};

 

배열 순회

  • 배열 순회: 반복문을 이용하여 배열의 각 요소에 접근하는 것
// 배열 순회1
for (int i = 0; i < 배열.length; i++) {
... // 배열[i]
}

// 예제1
int[] numbers = {1,2,3,4,5};

for (int i = 0; i < numbers.length; i++) {
	System.out.println(numbers[i]);
}
/* 실행결과:
1
2
3
4
5
*/

// 배열 순회2
for (int i: numbers) {
... // 배열 i
}

// 예제2
for (int i: numbers) {
	System.out.println(i);
}
/* 실행결과:
1
2
3
4
5
*/


다차원 배열

  • 다차원 배열: 2차원 이상의 배열
  • 1차원 배열: 변수명[인덱스] = 값; (가로로 늘어나는 하나의 선 형태)
1 2 3 4 5

 

  • 2차원 배열: 가로 x 세로가 더해진 면의 형태
  • 자료형[][] 변수명 = new 자료형[세로][가로];
    • int[][] numbers = new int[2][5];
    • numbers[0][2] = 3
(0, 0) (0, 1) (0, 2) 3 (0, 3) (0, 4)
(1, 0) (1, 1) (1, 2) (1, 3) (1, 4)
  • 배열 선언과 동시에 값 초기화 가능
int[][] numbers = new int[][] {
    {1,2,3,4,5},
    {6,7,8,9,10}
};
1 2 3 4 5
6 7 8 9 10

 

  • 3차원 배열: 가로 x 세로 x 높이가 더해진 공간의 형태

 

다차원 배열 순회

  • 다차원 배열 순회
  • 세로, 가로 크기를 숫자로 직접적으로 적기 힘들다면
    • numbers.length = 세로 크기
    • numbers[i].length = 가로 크기
   
1 2 3 4 5
6 7 8 9 10
// 다차원 배열 순회
for (int i = 0; i < 세로; i++) {
	for (int j = 0; j < 가로; j++) {
    	... // 배열[i][j]
    }
}

// 예제1 (2차원 배열)
int[][] numbers = new int[][] {
    {1,2,3,4,5},
    {6,7,8,9,10}
};

for (int i = 0; i < 2; i++) { //세로
	for (int j = 0; j < 5; j++) { //가로
    	...
    }
}

// 예제2 (2차원 배열)
int[][] numbers = new int[][] {
    {1,2,3,4,5},
    {6,7,8,9,10}
};

for (int i = 0; i < numbers.length; i++) { //세로
	for (int j = 0; j < numbers[i].length; j++) { //가로
    	...
    }
}

 

4. 아스키 코드

아스키 코드

  • 아스키 코드: (ANSI) 정보 교환을 위한 미국 표준 코드
    • 48: 숫자 0
    • 65: 알파벳 대문자 A
    • 97: 알파벳 소문자 a

 

 


참고 영상: 나도코딩 - 자바 무료 강의 2시간 완성(1분 자바)

https://youtu.be/DNCBaeCoMug?si=VM02QD9igeT561pp

 

반응형