[항해99] 주특기언어 1일차 TIL - Hello, IntelliJ!

LIHA·2023년 1월 18일
0

항해99

목록 보기
17/54
post-thumbnail

환경설정 단계에서 벌써 막혀서 out 폴더가 없는데요? 하고있던 나.
프로젝트를 잘못 만든줄 알고 여기저기 새 프로젝트를 만들기도 하고 검색도 해봤는데 답은 못 구했고, 상단 메뉴 중 Build에서 Build Project(Ctrl+F9) 하면 생기는거였다.

일반적인 C 스택을 사용..
네? C스택이 뭔데요?
->자료구조 과목에서 나오는 개념임. C언어에서 사용하는 스택 형태를 말함. 여기서 스택은 큐 / 스택 중 후입선출인 그 스택이 맞음. 스택 오버플로우의 스택.
스택도 큐도 선형 자료구조 중 하나. 배열도 선형 자료구조임. 스택은 각 노드가 데이터와 포인터를 가지고 한 줄로 이어져있음.
스택에 대한 자료 출처

커널이 스택을 잡아..
네? 커널은 또 뭔데요? 제가 아는건 나이더스 커널(저그)밖에 없는걸요
->메모리 영역 중 커널영역이란게 있는데, 그 안에 있는게 커널임. 컴퓨터 운영체제의 핵심이라 불림. 커널은 시스템의 모든것을 완전히 통제함.
커널 개념에 대한 설명

예약어 사용 불가..
네? 예약어요? 그럼 제 코드는 방금 짰으니 현장어인가요?
->프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 변수로 선언할 수 없는(식별자로 사용할 수 없는) 단어를 말한다. return, true 같은 것들.
※예약어와 키워드는 엄밀히는 다르다. 식별자로 사용할 수 없으면 예약어, 있으면 키워드이다.
예약어와 키워드의 차이

선언 및 초기화와 표시법

선언이 뭐에요? 모르겠어요!

자료형과 변수 이름을 쓰겠다고 표시해주는 것. (값을 할당하는건 선언이 아님!)
int x; char ch; long num; 등,
'내가 변수를 쓰고싶은데, 이 자료형의 이 이름으로 쓸거야' 라고 쓰는것이 선언.

그럼 초기화는 뭔데요?

변수에 값을 할당해주는 것이 초기화. 원하는 값 대입을 초기화라고 한다.
그래서 int a = 5; 라고 하면, int타입의 변수 a를 쓸거라고 선언한 동시에 값을 5라고 초기화 한것과 같다.
그래서 우리는 일반적으로 선언과 초기화를 동시에 해서 쓰고있다!

  • char는 선언시 작은 따옴표 '', String은 선언 시 큰 따옴표 " " 이 필요하다. char는 자료형이 소문자로 시작하고 String은 대문자로 시작하는 것으로 외워두자.

  • long으로 선언할때 int 범위를 넘어가는 수라면 해당 숫자에 float형처럼 L을 붙여야 한다! (int범위가 얼만데요? -> 대략 ±20억 범위)
    ex) long numb = 2988901408 (X)
    long numb = 2792029485L (O)

  • 0 세개마다 쉼표를 붙이는 표현을 대신하여 언더바를 사용한 선언 또한 가능하다.
    ex)long numb = 2_572_793_515L (O)

  • double 타입은 제곱을 e를 붙여서 표현한다.
    ex) 변수 d에 13의 5제곱을 선언하고 싶을때 - double d = 13e5;

이진수의 접두어는 0b, 8진수는 0, 16진수는 0x가 붙는다.

형변환이 대체 뭔가요🥺

위에서 선언된 자료형을 바꿔줘야 할 필요가 있을때 하는 것. (원하는 자료형)변수이름 형태로 쓴다.

  • ex) int a = 6; 하고 double로 나타내고 싶을 때 (double)a 이런 식으로 표현하면 됨.
    그러나 int -> double은 형변환 표시를 생략해도 된다. 작은 byte값에서 큰 byte값으로 갈땐 일반적으로 생략 가능. (이건 규칙이니까 이렇게 알아두자.)

  • char short은 둘다 2byte 자료형이지만, 범위가 달라서 어느쪽으로 변환하든 값 손실이 발생하기 때문에 변환 시 자료형 생략 불가.

  • byte char도 마찬가지!
    Byte -> Char 타입변환은 자동으로 이뤄지지 않는다. char 는 2byte이지만 char의 범위는 0~65535 이므로 음수가 올 수 없다. 따라서 음수가 올수 있는 byte는 char 로 자동 변환할 수 없다.

<< >>는 비트 이동 연산자. 한 비트씩 밀어달라는 것.

값이 있는데도 왜 print에 0으로 찍히지?

 int fahrenheit = 100;
        float celcius = (float)(5/9)*((float)fahrenheit - 32);

이렇게 했더니 println(celcius)가 0이 나왔다!
5/9에는 괄호를 풀어줬어야 한다.
print(5/9) 했을 때 0이 나오는 이유는 자료형 지정이나 형변환을 안 해주면 int로 인식하기 때문에 5/9는 0.xx라서 그냥 0으로 인식해 버리는 것.

printf는 되고 println은 안되는 이유는 뭘까?

System.out.printf("%.3f", celcius);

값이 이렇게 나오는 이유는 뭐야 또?
toString을 쓰거나 PrintStream을 쓰거나 하면 이렇다.

37.778java.io.PrintStream@2f4d3709

        DecimalFormat floatcel = new DecimalFormat("#.##");
        floatcel.setRoundingMode(RoundingMode.HALF_UP);
        celcius = Float.parseFloat(floatcel.format(celcius));
       

나는 과제에 좀 다른 함수를 써 보았다.
Float.parseFloat(객체) -> 객체 파싱해서 float로 변환해줘.
Float.valueOf(객체) -> String을 double로 만들 수 있음.

아, 토큰값은 다시 볼수가 없구나? 어디다 저장해놔야지

아니, 왜 토큰을 발급 받았는데도 깃헙이 안돼?

repo, admin:org, gist, user 모두 체크해줘야 하더라!

구세주의 블로그


<멘토님의 조언>
너무 깊게 파고들지 말것. 어? 이게 뭐지? 하는순간 끝난다고. 어차피 뒤에서 다 하기 때문에 지금은 책보듯이 넘어가는게 좋다.

처음부터 유튜브를 보려고는 하지 말것. 활자를 봐야함.
영상보길 추천하는건 객체지향 부분. 예제를 반복학습 해보는게 더 중요함.


과연 이 불지옥에 제발로 돌아와서 살아남을 수 있을까? 몹시 고민이 되는 하루였다. 🤔

profile
갑자기 왜 춤춰?

0개의 댓글