본문 바로가기

Zero Base 백엔드 스쿨 6기

ZB BE 6th - Java 공부 #1 변수와 자료형

[변수와 자료형_1]

학습목표 - 변수 이름 규칙에 맞춰 사용, 자바의 표기법 이해

변수 : Variable // 데이터를 저장하는 메모리 공간에 붙인 이름.

EX) 
int age = 20;
> 20이라는 숫자의 데이터 타입 : int (정수형)
> 20이라는 숫자의 데이터 이름 : age
String country = "Korea";
> Korea라는 데이터의 타입 : String (문자열)
> Korea라는 데이터의 이름 : country


[표기법]
A. 카멜 표기법 (camelCase) // 낙타 등 표기법
가장앞의 문자는 소문자, 나머지 단어의 첫 문자는 대문자.
myName, zeroBase,iPhone,powerPoint

B. 파스칼 표기법 (PascalCase)
각 문자의 첫 문자를 대문자로 표기
MyName, ZeroBase, IPhone, PowerPoint

 

C. 스네이크 표기법

대,소문자로 문자 표기 후 _로 연결시키기

my_name, zero_base


[변수와 자료형_2]

변수의 종류에 따라 담을 수 있는 데이터의 타입과 크기 다름

학습목표 - 자료형에 대한 이해 ,자료형(숫자, 부울, 문자) 직접 사용

자료형 (Data Type) - 변수의 종류, 단위

A. 숫자 (Number) : 정수/실수/2진수,8진수,16진수

정수 : 소수점이 아닌 숫자 // int 는 기본값이고 integer은 int + 몇 가지 기능.
int intNum  =10;
long longNum - 2147483648L;

실수 : 소수점
float floatNum = 0.1f;
double doubleNum = 3.4028236E38;

2진수,8진수,16진수 : 
10진수 12를 2 진수로 표션 시 앞에 0b 로 시작. 
int numBase2 = 0b1100;
10진수 12를 8진수로 입력시 앞에 0 으로 시작.
int numBase8 = 014;

10진수 12를 16진수로 입력시 앞에 0x 로 시작
int numBase16 = 0xC;


B. 부울 (Boolean) : 참과 거짓을 나타내는 자료형
>> 코드 사용 예시 : boolean 변수명 = true or false;
boolean isPass = true;
boolean isOkay = false;
>> 추후 조건문 배울때 디테일하게 배울 예정

C. 문자 (Character) : Only 한 개의 문자 표현에 사용하는 자료형

char KeyFirst = 'a';
char keyLast = 'z';

D. 문자열 (String) : 문자들로 이루어진 집합 // Character는 문자 1개, String은 문자들

String s1 = "Hello World!";
String s2 = "01234";

*문자열 메소드 // equals, indexOf, replace, substring, toUpperCase

D-1. equals : 변수간 비교하는 것. equals VS == 와 유사하나 차이가 있음.
코드 활용 예시 ) 변수명.equals(비교하고자하는 변수명); 

==연산자와 equals()메소드의 가장 큰 차이점은 == 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하는데 반해 
String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다는 것입니다

String s3 = "Hi";
String s4 = "Hi";
String s5 = new String (original: "Hi");
>> s3.equals(s4) 와 s3 == s4 는 true.
>> s3.equals(s5) 는 true. : equals는 값을 비교하는것이라 둘다 "Hi" String이라 true.
>> s3 == s5 는 false. becuz == 는 대상간의 객체를 비교하는 비교연산자라 s5는 new String 이므로 false.

D-2. indexOf : 문자열에서 특정 문자의 위치를 찾아주는 메소드. 
코드 활용 예시) 
1. 변수명.indexOf("찾고자하는 문자");
2. 변수명.idexOf("찾고자하는 문자", 변수명.indexOf("출발점의 문자" + 1));

>> String s6 = "Hello! World!";
System.out.println(s6.indexOf("!")); >> 5                                                                   // 문자열은 index0번부터 시작되므로.
System.out.println(s6.indexOf("찾을 문자", 변수명.indexOf("출발점의 문자") + 1)); // 출발점 문자부터 ~를 찾아줘 라는 뜻.
System.out.println(s6.indexOf("!", s6.indexOf("!") + 1));

D-3. replace : 특정 문자열의 내용을 변경하는 메소드.
코드 활용 예시) 

String 새로운 변수명 = 변경하고자하는 기존 변수명.replace("변경하고자하는 기존 문자", "변경하려는 새로운 문자");

String S7 = s6.replace("Hello", "Bye");
System.out.println("s7=" + s7); // soutv

D-4. substring : 기존 문자열에서 부분 문자열을 뽑아주는 메소드.
코드 활용 예시) 변수명.substring(문자 시작하는 자리수, 입력된 숫자만큼의 자릿수 -1); // Bye 의 경우 index 0,1,2.

System.out.println(s7.substring(0,3));
>> Bye
System.out.println(s7.substring(0, s7.indexOf("!") + 1 )); // +1은 "1"입력 전까지만 나오기에 +1을 추가함.
>> Bye!

D-5. toUpperCase : 모든 문자를 대문자로 바꿔주는 메소드.
코드 활용 예시) System.out.println(s7.toUpperCase());
>> BYE! WORLD!

E. 자료형 (StringBuffer) : 문자열을 자주 추가하거나 변경할 때 사용하는 자료형
코드 활용 예시) StringBuffer 변수명 = new StringBuffer();

변수명.append("01234");
System.out.println("변수명 =" + 변수명);
변수명.append("56789");
System.out.println("변수명 =" + 변수명);

문자열의 데이터가 많이 변경될 경우, String보다는 StringBuffer 가 적합.
StringBuffer의 경우, 기존 데이터가 변경되도 객체가 새로 만들어지는것이 아니라 기존의 객체에 데이터를 이어서 변경하는거에 반해
String의 경우, 데이터의 변화가 생길때마다 새로운 객체를 만들어서 거기에 데이터를 만들어서 사용하는거라
객체가 여러개 만들어진다는건 메모리생성이 여러번된다는거고 시스템 딜레이로 이어짐.


StringBuffer 메소드 // append, insert, substring

F. 자료형 - 배열 (Array) : 많은 수의 데이터를 담을 수 있는 자료형
코드 활용 예시) 
*데이터가 정수일 경우* 
int[] 변수명 = {1, 2, 3, 4, 5}; >> 해당 내용들은 좌측부터 index 0번으로 카운팅함.

*데이터가 실수일 경우*
double[] 변수명 = {0.1, 0.2, 0.3, 0.4, 0.5}; >> 좌측부터 index 0번으로 카운팅

*데이터가 문자1개일 경우* 
char[] 변수명 = {a, b, c, d, e}; >> 해당 내용들은 좌측부터 index 0번으로 카운팅함.

*데이터가 문자열일 경우* 


A타입.
String[] 변수명 = {"문장1", "문장2", "문장3"} >> 해당 내용들은 좌측부터 index 0번으로 카운팅함.
System.out.println(변수명[원하는 문장이 있는index값] + 변수명[원하는 문장이 있는index값]);


B타입.
특정 개수N을 명시하고 그 값을 수기로 선언하는 방법이있음.
String[] 변수명 = new String[N]; 
>> N이라고 기입하지만 실제는 좌측부터 0번으로 카운팅함.

N에 3을 기입하면 0, 1, 2으로만 그 값에 대한 내용을 선언해야함.


N=3 의 경우,
변수명[0] = "안녕";
변수명[1] = " ":
변수명[2] = "반가워":
System.out.println(변수명[원하는 index 번호] + 변수명[원하는 index 번호] + 변수명[원하는 index 번호]);

int[] myArray1 = {1,2,3,4,5};
char[] myArray2 = {'a','b','c','d','e'};
String[] myArray3 = {"Hello" + " " + "World"};

System.out.println(myArra1[0]);
System.out.println(myArra1[1]);
System.out.println(myArra1[2]);
System.out.println(myArra1[3]);
System.out.println(myArra1[4]);
>> 1,2,3,4,5가 출력됨

[변수와 자료형_4]

학습목표 : 자료형에 대한 이해, 자료형 직접(리스트, 맵, 제네릭스) 사용 해보기

A. 자료형 - 리스트 (List) : 배열과 같이 여러 데이터를 담을 수 있는 자료형
>> 코드 사용 예시 : ArrayList 변수명 = newArrayList(); 라고 최초 선언하고 하기 메소드 사용.

리스트 (List) 메소드 // add,get, size, remove, clear, sort, contains

 

1. add : ArrayList 변수명에 내용을 추가하는 메소드.
코드 사용 예시 : ArrayList변수명.add(추가하고자 하는 내용);

// l1.add("야");, l1.add(12);
코드 사용 예시 : 변수명.add(N/index No., M/내용); // N번째 index (좌측부터 0번부터 카운팅)에 M(내용)을 추가

// l1.add(0, "무"); 

  
2. get : 인덱스 번호에있는 내용을 꺼내오는 메소드.
코드 사용 예시 : System.out.println(변수명.get(원하는 내용이 있는 index번호));
 
3. size : List 변수에 원소갯수가 몇개인지 출력하는 메소드.
코드 사용 예시 : System.out.println(변수명.size());

4. remove : List 변수에 입력한 index의 값을 지우는 메소드.
코드 사용 예시 : System.out.println(변수명.remove(N/index번호));
4-1. index값이 아닌 특정 내용을 입력하여 지우는 메소드
// 정수 : Integer.valueOf(N), 실수 : Double.valueOf(실수), 문자열 : String.valueOf("문자열").
코드 사용 예시 : System.out.println(변수명.remove(Integer/Double/String.valueOf(지우고 싶은 타입의 내용)));
       System.out.println("변수명 = " + 변수명);

5. clear : List 변수에 있는 모든 내용을 지우는 메소드.
코드 사용 예시 : 변수명.clear();
System.out.println("변수명 = " + 변수명);

6. sort : List 변수의 내용을 오름차순/내림차순 정렬하는 메소드.
코드 사용 예시 : 
오름차순 // 변수명.sort(Comparator.naturalOrder()); 
내림차순 // 변수명.sort(Comparator.reverseOrder());

** List 데이터값중에 문자가 있을경우 sort 사용시 error가 나옴. 확인 필요 **

7. contains : 데이터가 List에 들어있는지 확인해보는 메소드.
코드 사용 예시 : System.out.println(변수명.contains(확인하고자하는 데이터));


B. 자료형 - 맵 (Map) : Key(문자), value(숫자) 형태로 데이터를 저장하는 자료형
>> 코드 사용 예시 : HashMap 변수명 = new HashMap(); 라고 최초 선언하고 하기 메소드 사용.

> 맵 메소드 // put, get, size, remove, containsKey

 

1. put : 데이터를 넣을때 사용하는 메소드.
코드 사용 예시 : 변수명.put("Key(문자)", Value(숫자));
System.out.println("변수명 = " + 변수명);

2. get :  데이터를 꺼내오는 메소드.
코드 사용 예시 : System.out.println(변수명.get("Key값"));

3. size : 해당 변수에 기입된 데이터 수를 확인하는 메소드.
코드 사용 예시 : System.out.println(변수명.size());

4. remove : 해당 변수의 모든 내용을 지우는 메소드. 지우고난뒤 지운 키값이 가진 value를 알려줌.
코드 사용 예시 : System.out.println(변수명.remove("Key값"));

5. containsKey : 해당 변수에 기입한 데이터가 있는지 확인하는 메소드.
코드 사용 예시 : System.out.println(변수명.containsKey("키값"));
                           System.out.println(변수명.containsValue(Value값));


자료형 - 제네릭스 (Generics) : 자료형을 <>로 제한해줌으로써 안정성을 높여주고 형변환을 줄여줌


코드 사용 예시 : ArrayList<데이터 타입//String or Integer> 변수명 = new ArrayList<앞과 동일한 타입>();
                          HashMap<String/Integer, String/Integer> 변수명 = new HashMap<앞과 동일한 타입>();

 

이후 List / HashMap 의 메소드를 활용해서 작성하면됨.