자바 코드의 구조
- 클래스 블록 : public class 클래스명 { , 클래스명과 소스 파일의 이름은 동일해야함, 여러 메서드 블록을 포함, {}로 둘러싼다
- 메서드 블록 : [public|private|protected] [static] (리턴자료형|void) 메서드명(입력자료형 매개변수, ...) { 명령문(statement); ... }, 리턴 값이 있을 때는 리턴 자료형을 반드시 표기, 없는 경우는 void, {}로 영역을 구분한다.
변수와 자료형
1. 변수
- 변수 값 변경 후엔 기존 값은 사라짐
- 변수 선언 시에 한번에 여러개 선언 가능 ex. int a, b;
- 변수 선언과 초기화 동시 가능 ex. int a= 10;
- 한번에 여러 번수 선언과 초기화도 가능 ex. int c=3, d=4;
- 변수 초기화를 하지 않고 사용하면 컴파일 에러
2. 변수 타입
- int : 정수
- double : 실수
- boolean : t/f
- char : 문자 하나 (''사용)
- String : 문자열 (""사용)
* 리터럴 : 코드에서 개발자가 직접 적은 고정된 값
- 정수
- byte (-128 ~ 127)
- short (-32,768 ~ 32,767)
- int (-2,147,483,648 ~ 2,147,483,647)
- long (-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)
- 실수
- float (-3.4E38 ~ 3.4E38)
- double (-1.7E308 ~ 1.7E308)
* 정수는 기본이 int, 실수는 기본이 double
long, double을 사용하기 위해선 L or l / f를 붙여야함
명명 규칙
클래스 - 명사, 대문자, 파스칼 케이스
메서드 - 동사, 소문자, 카멜 케이스
변수 - 짧지만 의미 있게, _, $를 시작 문자로 사용하는 것은 지양
주석
- //쏼라쏼라 : 한 줄 주석 (라인 주석)
- /* 쏼라 */ : 여러 줄 주석 (블록 주석)
자료형
숫자형
1. 정수형
- `byte`: 1바이트, -128 ~ 127
- `short`: 2바이트, -32,768 ~ 32,767
- `int`: 4바이트, -2^31 ~ 2^31-1
- `long`: 8바이트, -2^63 ~ 2^63-1
- 8진수 표현: 숫자 앞에 `0`을 붙여 사용 (예: `int octal = 073;`)
- 16진수 표현: 숫자 앞에 `0x`를 붙여 사용 (예: `int hex = 0x1A;`)
2. 실수형
- `float`: 4바이트, 소수점 이하 7자리 정도의 정확도
- `double`: 8바이트, 소수점 이하 15자리 정도의 정확도
3. 증감 연산
- `++`: 1 증가 (전위/후위)
- `--`: 1 감소 (전위/후위)
불리언
- `true` 또는 `false`
문자형
- `char`: 2바이트, 유니코드 문자 한 개를 저장 (0 ~ 65,535)
문자열
- `String`: 문자열을 저장하는 참조형 객체 (불변)
주요 내장 메서드
1. `equals()`: 문자열의 내용 비교
2. `indexOf()`: 특정 문자나 문자열이 처음 등장하는 위치 반환
3. `contains()`: 문자열에 특정 문자열이 포함되어 있는지 확인
4. `charAt()`: 특정 인덱스의 문자 반환
5. `replaceAll()`: 문자열 내의 특정 패턴을 다른 문자열로 대체
6. `substring()`: 문자열의 일부를 반환
7. `toUpperCase()`: 문자열을 대문자로 변환
8. `split()`: 특정 구분자로 문자열을 분할하여 배열로 반환
문자열 포매팅
- `String.format()`: 형식화된 문자열 생성 (예: `String.format("Hello %s", "World");`)
- `%d`: 정수
- `%f`: 실수
- `%s`: 문자열
- `%c`: 문자 1개
- `%o` : 8진수
- `%x`: 16진수
- `%%`: %
StringBuffer
- `StringBuffer`: 문자열을 추가하거나 변경할 때 주로 사용하는 자료형
주요 메서드
1. `append()`: 문자열을 뒤에 추가
2. `insert()`: 특정 위치에 문자열을 삽입
3. `substring()`: 문자열의 일부를 반환
배열
같은 자료형의 값들을 연속적으로 저장하는 고정 크기 자료구조
배열 사용법
1. 배열의 길이 설정: `int[] arr = new int[5];`
2. 값에 접근하기: `arr[0] = 10;`
3. 배열 길이 구하기: `arr.length;`
4. 배열 오류
- `ArrayIndexOutOfBoundsException`: 잘못된 인덱스에 접근할 때 발생
리스트
- `ArrayList<E>`: 가변 크기의 동적 배열, 리스트의 기본 구현체
1. `add(E e)`: 요소 추가
- 리스트에 새로운 요소를 끝에 추가
2. `get(int index)`: 요소 가져오기
- 리스트의 특정 인덱스에 있는 요소를 반환
3. `size()`: 리스트 크기 확인
- 리스트에 포함된 요소의 개수를 반환
4. `contains(Object o)`: 특정 요소 포함 여부 확인
- 리스트에 특정 요소가 포함되어 있는지 확인
5. `remove(Object o)`: 특정 요소 제거
- 리스트에서 특정 요소를 제거하며, 첫 번째로 발견된 요소 하나만 제거
제네릭스
- `List<String> list = new ArrayList<>();`: 제네릭스를 사용해 타입을 명시
1. `String.join()`: 리스트의 요소들을 특정 구분자로 결합하여 문자열 생성 (예: `String.join(",", list);`)
2. 리스트 정렬하기: 오름차순(순방향) 정렬 - Comparator.naturalOrder(), 내림차순(역방향) 정렬 - Comparator.reverseOrder()
퀴즈
1. 다음 중 int 자료형의 크기는?
답 : c) 32비트
2. Java에서 소수점이 있는 실수형 데이터를 저장하기 위해 사용하는 자료형은?
답 : c) float
3. double 자료형과 float 자료형의 차이점은 무엇인가?
답 : b) double은 64비트, float은 32비트이다.
4. 다음 중 boolean 자료형이 가질 수 있는 값은?
답: a) true와 false
5. 다음 중 boolean 값을 반환하는 메서드는?
답: a) isEmpty()
6. 다음 중 boolean 표현식을 적절히 사용하는 경우는?
답: b) boolean y = true;
7. 다음 중 문자열을 상수 풀(String Pool)에 저장하는 방법은?
답: b) "example"
8. 다음 중 문자열 길이를 반환하는 메서드는?
답: a) length()
9. 다음 코드의 출력 결과는 무엇인가?
String s1 = "Java";
String s2 = new String("Java");
System.out.println(s1 == s2);
답: c) 컴파일 오류
10. Java에서 배열의 길이를 얻기 위해 사용하는 속성은?
답: b) length()
11. 다음 중 Java에서 다차원 배열을 선언하는 올바른 문법은?
답: b) int[][] arr = new int[2][2]
12. 배열에 초기값 없이 선언된 int 배열의 기본값은?
답: d) 컴파일 오류
13. 배열의 인덱스는 몇부터 시작하는가?
답: a) 0
14. 다음 코드의 출력 결과는?
int[] arr = {1, 2, 3, 4};
System.out.println(arr[2]);
답: c) 3
15. Java에서 List 인터페이스를 구현한 클래스가 아닌 것은?
답: c) HashSet
16. 다음 중 ArrayList의 기본적인 특징은 무엇인가?
답: c) 임의 접근이 가능하다.
17. List에서 요소를 추가할 때 사용하는 메서드는?
답: c) add()
18. 다음 코드의 출력 결과는 무엇인가?
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
System.out.println(list.get(1));
답: b) Python
19. List의 요소를 반복하기 위해 사용할 수 있는 방법인 것은?
답: d) 모두 맞음
서술형 문제
1. Java에서 기본 자료형(primitive types)과 참조 자료형(reference types)의 차이점에 대해 설명하시오.
답 : 기본 자료형은 데이터 값을 직접 저장한다. (int, boolean 등) 참조 자료형은 객체의 주소를 저장한다. (Array, String 등)
2. 숫자형 자료형 간의 형 변환(예: int에서 double로 변환)이 발생할 때의 주의사항을 설명하시오.
답 : double을 int로 변환하면 소수점 이하가 사라진다.
3. Java에서 String 객체를 생성하는 두 가지 방법(리터럴 방식과 new 키워드 사용)의 차이점을 설명하시오.
답 : 리터럴 방식은 상수 풀에 저장돼 동일한 값을 가진 리터럴이 있으면 재사용된다. new 키워드를 사용하면 항상 새로운 객체가 생성되어 힙 메모리에 저장된다.
4. Java에서 문자열을 연결하는 방법 (String & StringBuilder)을 설명하고 어떤 방법이 성능 면에서 더 유리한 지 서술하시오.
답 : String은 + 연산자를 사용해 매번 새로운 객체가 생성되어 성능이 유리하지 않다. StringBuilder는 append를 사용하면 메모리 할당을 최소화해 성능이 유리하다.
5. Java에서 문자열 비교 시 == 연산자와 equals() 메서드의 차이점을 설명하시오.
답 : == 연산자는 동일한 객체인지 주소를 비교하고 equals() 메서드는 문자열의 내용을 비교한다.
6. 배열 선언 방법 2가지를 작성하시오.
답 : int[] arr = {1,2,3,4,5}; int arr = new int[5];
7. 배열의 크기를 변경할 수 없다는 특성을 설명하고, 이 문제를 해결하기 위해 사용할 수 있는 대안에 대해 설명하시오.
답 : 배열의 크기는 생성할 때 고정되어서 변경할 수 없다. 대신 ArrayList를 사용한다.
코딩테스트
문제1 : https://school.programmers.co.kr/learn/courses/30/lessons/120807
문제2 : https://school.programmers.co.kr/learn/courses/30/lessons/12916
'WINK-(Web & App) > JAVA 스터디' 카테고리의 다른 글
[2024-2 Java 스터디] #1주차 이서영 (0) | 2024.10.09 |
---|---|
[2024-2 Java 스터디] 김지나 #1주차 "~List" (2) | 2024.10.09 |
[2024-2 Java 스터디] #1주차 김태일 "나야.. 자바.." (13) | 2024.10.09 |
[2024-2 Java 스터디] 김지수 #1주차 (1) | 2024.10.08 |
[2024-2 Java 스터디] 이가인 #1주차 (4) | 2024.10.08 |