본문 바로가기

WINK-(Web & App)/JAVA 스터디

[2024-2 Java 스터디] 김민서 #1주차

반응형
자바 코드의 구조
  • 클래스 블록 : 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 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제2 : https://school.programmers.co.kr/learn/courses/30/lessons/12916

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

반응형