01. 자바란 무엇인가?

01-1 자바란?

- 객체 지향 프로그래밍 언어

- 웹과 모바일 앱 개발에서 가장 많이 사용하는 언어

 

01-2 자바로 무엇을 할 수 있을까?

- 웹 프로그래밍

- 안드로이드 애플리케이션 개발

- 게임 개발

- 데이터베이스 처리

- 빅 데이터 및 분산 처리

실행 속도가 다소 느리므로 고성능이 중요한 분야에서는 불리

 

02. 자바 시작하기

02-1 자바 코드의 구조 살펴보기

- 클래스 블록 안에 여러개의 메서드 블록 존재

- 메서드 블록 안에 컴퓨터에 일을 시키는 명령문 존재

클래스명과 소스파일의 이름이 똑같아야함

 

02-2 변수와 자료형

- 자료형을 변수명 앞에 표시

- class를 통해 자료형을 직접 만드는 것도 가능

 

02-3 이름 짓는 규칙

- 클래스명은 대문자로 시작

- 메서드명은 소문자로 시작

- 변수명은 의미를 알 수 있도록 짓는 것이 좋음

 

02-4 주석

1. 블록 주석 (/* */)

/*
여러줄 주석
*/

2. 라인 주석 (//)

//한줄 주석

 

03. 자바의 기초 - 자료형

- 자료형 : 데이터의 종류와 크기를 결정하는 기본 구성 요소

03-1 숫자

1. 정수

자료형 표현범위
byte (1바이트) -128 ~ 127
short (2바이트) -32768 ~ 32767
int (4바이트) -2147483648 ~ 2147483647
long (8바이트) -9223372036854775808 ~ 9223372036854775807

※ byte와 short는 표현범위가 너무 좁아 잘 사용하지 않음

 

- 만약 long자료형 변수에 값을 대입할때 int 자료형의 최댓값인 2147483647보다 크다면 끝에 L자를 붙여주어야 함

int age = 23;
long countOfStar = 8764827384923849L;

 

2. 실수

자료형 표현범위
float (4바이트) -3.4 * 10**38 ~ 3.4 * 10**38
double (8바이트) −1.7 ∗ 10**308 ~ 1.7 ∗ 10**308

 

- 실수형의 기본값은 double --> float변수에 값을 대입할 때에는 끝에 F자를 붙여주어야 함 (소문자도 가능)

float pi = 3.14F;      // F 누락 시 컴파일 오류 발생
double morePi = 3.141592;

 

- e2는 10의 제곱을 의미

double d1 = 1.234e2;  //123.4

 

 

3. 8진수와 16진수

- 8진수와 16진수는 int 자료형 사용

 

- 8진수 : 숫자 0으로 시작

int octal = 023;    // 십진수: 19

 

- 16진수 : 알파벳 x로 시작

int hex = 0xC3;     // 십진수: 195

 

4. 숫자 연산 & 증감 연산

- 숫자 연산 : 사칙연산을 수행하는 연산

- 증감 연산자 : 값을 증가 또는 감소시키는 연산자

 

 이 책의 3장에서는 두가지 연산자가 나오지만 자바 연산자의 종류가 많으므로 아래 티스토리를 통해 연산자를 확인!!

 

[Java] 자바 연산자

연산자(operator)- 연산에 사용되는 표시나 기호- 피연산자 : 연산이 되는 데이터종류연산자우선순위증감 연산자++, --1순위산술 연산자+, -, *, /, %2순위시프트 연산자>>, >>3순위비교 연산자>, =, 4순위

taei1.tistory.com

 

03-2 불(boolean)

- 불(boolean) 자료형 : 참 또는 거짓의 값을 갖는 자료형

boolean isTrue = true;
boolean isFalse = false;

 

03-3 문자

- 문자 자료형은 char를 이용

- 문자보다 문자열을 작성하는 경우가 많으므로 활용성이 적음

- 문잣값 앞뒤를 큰따옴표(" ")가 아닌 작은따옴표(' ')로 감싸주어야 함

char a1 = 'a';
char a1 = 'a';  // 문자로 표현
char a2 = 97;  // 아스키코드로 표현
char a3 = '\u0061';  // 유니코드로 표현

※ 다음과 같이 문잣값을 표현하는 방식이 다양하므로 사용할 때 주의 필요 (세가지 모두 'a'라는 문자를 표현)

 

03-4 문자열

- 문자열을 나타내는 자료형은 String

- 파이썬과는 다르게 큰따옴표로만 감싸주어야 함 (큰따옴표, 작은따옴표 구분됨)

- 문자열을 아래와 같이 new 키워드를 사용하여 표현하는 것도 가능

String a = "Happy Java";
String b = "a";
String c = "123";
String a = new String("Happy Java");
String b = new String("a");
String c = new String("123");

 

두 표현 방식의 차이점은 아래 티스토리를 통해 확인!!

 

[Java] String = " " VS new String(" ")

Java 문자열 입력 방식? 큰따옴표(" ")안에 값을 입력하여 생성할 수도 있고, new 키워드로 새로운 객체를 생성할 수도 있다 먼저 두 방식을 소개하자면 이렇다. 1. 리터럴(literal) 표기방식- 리터럴

taei1.tistory.com

 

1. 문자열 내장 메서드

문자열 내장 메서드 설명 예제 코드 출력코드
equals 문자열 2개가 같은지를 비교하여 결괏값 리턴 String a = "hello";
String b = "java";
String c = "hello";
a.equals(b);
a.equals(c); 
false
true
indexOf 특정 문자여링 시작되는 위치 리턴 String a = "My name is WINK";
a.indexOf("is");
8       // is가 8번째 인덱스에 위치하기 때문
contains 문자열에서 특정 문자열이 포함되어 있는지 여부 리턴 String a = "Hello Java";
a.contains("Java"); 
true    // 문자열안에 Java 포함되어 있다면 true 리턴
charAt 특정 위치의 문자를 리턴 String a = "Spanish";
a.charAt(6); 
h       // 6번째 인덱스인 h 반환
replaceAll 특정 문자열을 다른 문자열로 바꿀 때 사용 String a = "My name is Tim";
a.replaceAll("Tim", "Mickey"); 
"My name is Mickey"
// Tim이 Mickey로 변환 
substring 문자열에서 특정 문자열을 뽑아낼 때 사용 String a = "Hello Mickey";
a.substring(0, 4);  
Hell       // 0~3번째 문자열 출력, 인덱스 4의 문자는 포함하지 않음
 toUpperCase 문자열을 모두 대문자로 변경할 때 사용 String a = "Hello Mickey";
a.toUpperCase();  
// HELLO MICKEY
split 문자열을 특정한 구분자로 나누어 문자열 배열로 리턴 String a = "a:b:c:d";
String[] result = a.split(":");  
{"a", "b", "c", "d"}

 

2. 문자열 포매팅

- 문자열 안에 특정한 값을 바꾸도록 해주는 기법

- String.format 메서드 사용

String.format("I eat %d apples.", 3);       // "I eat 3 apples."     %d를 이용해 숫자 대입
String.format("I eat %s apples.", "five");  // "I eat five apples."  %s를 이용해 문자열 대입
코드 설명
%s 문자열 (String)
%c 문자 1개 (Character)
%d 정수 (Integer)
%f 부동소수 (Floating-point)
%o 8진수
%x 16진수
%% 문자 % 자체

%s 는 자동으로 전달되는 파라미터 값을 문자열로 바꾸어 사용  --> 어떤 값이 와도 상관 X

 

03-5 StringBuffer

- 문자열을 추가하거나 변경할 때 사용하는 자료형

- 문자열을 추가하거나 변경하는 작업이 많으면 StringBuffer 를 사용하는 것을 추천!

메서드 설명 예제 코드 결과 코드
append 문자열을 추가하는 메서드 StringBuffer sb = new StringBuffer();  
sb.append("Hi "); 
sb.append("Mickey");                   
String result = sb.toString();         
//StringBuffer 객체 생성
// "Hi " 추가
// "Mickey" 추가
// result = "Hi Mickey"
insert 특정 위치에 원하는 문자열을 삽입 StringBuffer sb = new StringBuffer();  
sb.append("Mickey");                  
sb.insert(0, "Hi");    
String result = sb.toString(); 
//StringBuffer 객체 생성
// "Mickey" 추가
// 0번째 위치에 "Hi" 삽입
// result = "Hi Mickey"
substring 원하는 위치의 문자를 뽑아낼때 사용 StringBuffer sb = new StringBuffer();  
sb.append("Mickey"); 
sb.insert(0, "Hi");
sb.substring(0,4);     
//StringBuffer 객체 생성
// "Mickey" 추가
// 0번째 위치에 "Hi" 삽입
// 0~3번째 문자 반환 "Hi M"

빈 문자열에 append 를 사용하는 대신 += 을 사용해 추가를 한다면 4개의 객체를 만들어야 함 --> 비효율적임

 

03-6 배열 (array)

- 자료형 바로 옆에 [] 기호를 붙여 표현

- 자료형의 집합 (자료형의 종류가 X)

int[] odds = {1, 3, 5, 7, 9};
String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};

 

1. 배열의 길이 설정하기

- new String [] 를 통해 길이 설정

String[] winks = new String[7];     // 배열의 길이를 7로 설정
String[] connect = new String[];    // 숫자를 넣어주지 않으면 컴파일오류 발생

 

2. 배열값에 접근하기

- []를 통해 배열값에 접근

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
weeks[3];          //3번째 인덱스인 "목"에 접근

 

3. 배열의 길이 구하기

- length를 사용하여 길이 확인

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
for (int i = 0; i < weeks.length; i++) {      //weeks.length = 7
    System.out.println(weeks[i]);
}

 

 

03-7 리스트

- 리스트는 배열과 달리 크기가 정해져 있지 않음

- 리스트 자료형로는 ArrayList를 일반적으로 사용

 

1. 메서드

메서드 설명 예제 코드 츨력 코드
add 요솟값을 추가하는 메서드 ArrayList pitches = new ArrayList();
pitches.add(
"138");
pitches.add(
"129");
pitches.add(
"142");
 {"138", "129", "142"}
get 특정 인덱스 값을 추출 ArrayList pitches = new ArrayList();
pitches.add(
"138");
pitches.add(
"129");
pitches.add(
"142");
System.out.println(pitches.get(1));
 129
size 요소의 개수를 리턴 ArrayList pitches = new ArrayList();
pitches.add(
"138");
pitches.add(
"129");
pitches.add("142"
);
System.out.println(pitches.size());
3
contains 리스트 안에 해당 항목이 있는지 판별해 그 결과를 boolean으로 리턴 ArrayList pitches = new ArrayList();
pitches.add(
"138");
pitches.add(
"129");
pitches.add("142"
);
System.out.println(pitches.contains("142"));
true
remove(객체) 리스트에서 객체에 해당하는 항목을 삭제한 뒤, 그 결과로 true 또는 false를 리턴 ArrayList pitches = new ArrayList();
pitches.add(
"138");
pitches.add(
"129");
pitches.add("142"
);
System.out.println(pitches.remove("129"));
true
revmove(인데스) 인덱스에 해당하는 항목을 삭제한 뒤, 그 항목을 리턴 ArrayList pitches = new ArrayList();
pitches.add(
"138");
pitches.add(
"129");
pitches.add("142"
);
System.out.println(pitches.remove(0));
138

 

2. 제네릭스

- 리스트를 만들때 자료형을 선언함  --> 형 변환하는 과정 생략 가능

ArrayList<String> pitches = new ArrayList<>();  //제네릭스 선언법

 

3. 다양한 방법으로 ArrayList 만들기

- java.util.Arrays 클래스의 asList 메서드를 사용

String[] data = {"138", "129", "142"};  // 이미 투구수 데이터 배열이 있다.
ArrayList<String> pitches = new ArrayList<>(Arrays.asList(data));
System.out.println(pitches);  // [138, 129, 142] 출력

 

4. String.join

- 각 요소에 구분자를 넣어주어야 하는 경우 사용

ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
        String result = String.join(",", pitches);
        System.out.println(result);  // 138,129,142 출력
    }
}

 

5. 리스트 정렬하기

- java.util.Comparator 클래스의 sort 메서드를 사용하여 순서대로 정렬

rrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
        pitches.sort(Comparator.naturalOrder());  // 오름차순으로 정렬
        System.out.println(pitches);  // [129, 138, 142] 출력
    }
}
  • 오름차순(순방향) 정렬 - Comparator.naturalOrder()
  • 내림차순(역방향) 정렬 - Comparator.reverseOrder()

'Java' 카테고리의 다른 글

2주차 퀴즈(1)  (0) 2024.10.15
[2024-2 Java 스터디] #2주차  (6) 2024.10.15
[2024-2 Java 스터디] #1주차 퀴즈  (0) 2024.10.09
[Java] String = " " VS new String(" ")  (0) 2024.10.07
[Java] 자바 연산자  (0) 2024.10.07