#0 서론
전공자는 java의 기초를 익히는게 필수로 되어 있었다.
https://opentutorials.org/course/3930
생활코딩 자바 강의를 어느 정도 들어 오는것이 필수였기 때문에 들으면서 내용을 간단하게 정리하게 되었다.
#1 자바 동작 원리
학부때도 몇번 보았던 JVM을 통한 동작.
다만 이번 강의를 통해서 알게된 건 실제고 컴파일된 .class파일을 이클립스에서 확인해보았다는 점이었다.
#2 Data와 연산
Java는 strong type 언어이다.
변수의 실제 값이 들어가는 "1. 기본 자료형"과 변수에 데이터가 들어있는 주소가 들어가는 "2. 참조 자료형"으로 구분된다.
다음은 인터넷에서 퍼온 자료형들.
1. 기본 자료형
int float char boolean 등 다 있음.
2. 참조 자료형
string이 포함됨.
https://adjh54.tistory.com/119#google_vignette
위 블로그에서 가져온 것인데 읽어보다 흥미로운 점은 박싱과 언박싱의 개념이었다.
타입으로 class로 감싸는 개념이라고 하는데 이렇게 class로 표현된 타입을 "래퍼 클래스"라고 하며 이들은 null로 초기화할 수 있다는 점이 인상깊었다.
3. Math 라이브러리 사용
Math.PI
Math.floor() 와 같은 수학적 도움을 주는 기능에 대해 소개하는 파티가 있었다.
알고 있었으니 패스.
#3 문자와 문자열
1. char형 ' ' 과 string형 " "
c++과 같이 ' ' 과 " "이 구분됨.
2. String 타입 선언 시 S 대문자.
#4 변수
개인적으로 언어를 새로 배울 때 가장 먼저 알아야할 요소들이 동작원리, 타입, 변수, 함수, 제어문 이렇게 다섯가지라고 생각한다.
1. java 의 실수형
강의에서 실수형을 소개할 때, float를 언급하지 않고 곧바로 double을 설명하길래 이유가 있는지 찾아보게 되었다.
https://devlog-wjdrbs96.tistory.com/254
위 블로그에서 잘 설명했는데 간단히 요약하면 double의 정확도가 더 높다는 것.
부동 소수점으로 표현하고, 이를 이진수로 표현하면서 발생하는 오차 때문에 메모리 사용이 좀 더 많지만 정확도가 높은 double을 기본으로 사용하는 듯 하다.
2. casting
casting 메소드를 보는데 위에서 말한 래퍼 클래스 Integer를 사용해서 메모하게 되었다.
String str = Integer.toString(num);
메소드 내부에 인자를 넣어주는 식으로 사용한다.
#5 디버거
이클립스에서 디버거 사용 방법
1. break pointer 생성해서 사용하기
1) 라인 넘버 왼쪽에 더블 클릭해서 break pointer (중단점) 생성
2) 일반 실행이 아닌, 디버깅 실행으로 시작.
(디버깅 창 등장)
3)
해당 화살표 기능들을 이용해서 JS의 debugger 처럼 코드를 한줄한줄 실행 가능.
맨 왼쪽 초록색 재생버튼으로 다음 중단점까지 실행 가능
우측창에 실행되는 변수에 들어있는 값과 상태를 실시간 확인 가능
이클립스 우상단에 해당 버튼을 통해 디버거 모드(perspective)와 코딩 모드 화면 변경 가능
#6 입력과 출력
인자 (argument) 방식으로 입력 받기.
1. 콘솔에서 입력받기
1) Scanner로 쉽게 받기
import java.util.Scanner;
public class HelloWorldApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a;
a = sc.next();
System.out.println(a);
}
}
입력받는 자료형에 따라 메소드가 달라짐.
sc.next() 는 string, sc.nextInt()는 정수 등.
2) BufferReader로 어렵게 받기
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
String a = br.readLine();
System.out.println(a);
}
}
2. 편의를 위해 데이터를 임의로 넣어줄 때 (c++ input.txt 연동 같은 개념)
기본적으로 main의 매개변수에 들어간다. (String[] args)
실행 옆 화살표 => Run configuration 클릭
위와 같이 작성한다.
기본적으로 white space로 데이터를 구분하나, ' ' 내부에 쓰면 하나의 데이터로 읽는다고 함.
#7 제어문
bool형, 비교연산자, 조건문, 반복문은 사실 c+과 다를게 거의 없음
1. 문자 비교시 == 과 equals의 차이점.
동등 비교 연산자 == 은 주소를 비교한다. 보통 변수는 같은 값을 저장하게 되면, 같은 주소를 가르키도록 저장되는데,
이때는 무난하게 ==으로도 같음을 확인할 수 있다.
그러나 래퍼 클래스를 사용해서 변수를 선언하게 되면 같은 값이어도 서로 다른 주소에 저장되게 되고, 이때는 동등비교연산자로 비교시 다른 주소를 가르켜 false가 나오게 된다.
이런 경우에 정확히 값을 비교하는 equals 메소드를 사용하게 된다.
즉 원시 데이터 타입이면 편하게 == 을 쓰면 되지만 래퍼 클래스를 사용했으면 equals를 반드시 사용해야함.
but string은 원시 데이터 타입으로 생각해도 됨.
그림으로 표현하면 아래와 같다.
'ssafy 교육 관련 > 사전학습' 카테고리의 다른 글
step4 (0) | 2024.07.08 |
---|---|
Step1 - Computer Thinking (논리/수학) + 문제 (0) | 2024.06.27 |
Step1 - CS 지식 정리 (운영체제) (0) | 2024.06.27 |