Language
-
[Java] EOF(End of File)란?Language 2022. 3. 26. 19:16
EOF(End of File)란 더 이상 읽을 수 있는 데이터가 없음을 뜻한다. 데이터를 계속 입력 받다가 더 이상 입력되는 데이터가 없을 경우 프로그램의 실행을 중지해야 할 때 이를 어떻게 해결할 수 있을까? EOF 처리 방식은 어떤 클래스로 데이터를 입력 받느냐에 따라 달라진다. 1. Scanner 클래스를 사용할 경우 hasNext() 메소드를 통해 데이터 입력이 멈추는 것을 식별할 수 있다. Scanner sc = new Scanner(System.in); while (sc.hasNext()) { System.out.println(sc.nextLine()); } 입력된 데이터가 없으면 while 문을 빠져나온다. 2. BufferedReader 클래스를 사용할 경우 이 경우 EOF 처리를 위한 메..
-
[Java] 단항연산자Language 2022. 3. 7. 23:20
1. 부호연산자 C를 공부할 땐 못 봤던 것 같은데(공부를 대충 했을 수도ㅋㅋ).. 이건 부호를 바꿔주는 연산자이다. 간단히 +, -를 변수 앞에 붙여서 부호를 바꿀 수 있다. 단, num3과 4의 경우와 같이 다른 변수를 새로운 변수에 할당할 때에는 형변환을 해 주어야 한다. 단순히 +, -만 붙이는 것이지만 이 역시 int로 변환해서 연산 수행 후 그대로 int형 정수를 반환하기 때문이다. 2. 증감연산자 : Prefix ++/--, Postfix ++/-- 이 부분은 C 공부할 때 익혔던 부분이다. 반복문에 많이 사용했던 기억이 난다. 내가 공부할 때에는 전위/후위로 익혔었는데, prefix/postfix를 이렇게 번역한 것 같다. 간단히 말하면, prefix는 먼저 값을 1 증감 후 반환, pos..
-
[Java] 이항연산자, SCELanguage 2022. 3. 7. 23:05
연산자 중 아는 부분은 건너뛰고 복합대입연산자부터 봤다. 복합대입연산자 사용시 컴파일러가 자동으로 형 변환을 알아서 해준다. 따라서 서로 다른 자료형 간 연산이 간단해졌다. 관계연산자의 경우, 예를 들어 다음과 같이 비교할 경우 ex) 1.0 == 1 == 연산을 위해 자동 형 변환이 일어나 true를 반환한다. 이후 논리연산자에 관한 내용도 대강 훑어보았다. 다만 SCE(Short-Circuit Evalutation)에 대한 내용은 처음 보았다. SCE란, '연산의 효율 및 속도를 높이기 위해 불필요한 연산을 생략하는 행위' 를 말한다. 예시) result는 예상한 대로 나왔지만, num1 그리고 num2에 대한 예측은 실패했다. num1과 num2에는 10씩 두 번 더해주는 연산을 하는데, 왜 결과가..
-
[Java] 형 변환Language 2022. 3. 7. 20:40
1. 자동 형 변환 int형 정수와 double형 실수를 더하고 싶다면 형을 변환시켜야 한다. 자료형이 다른 두 값을 대상으로는 덧셈을 수행할 수 없기 때문이다. 위에서 자료형이 다름에도 연산이 정상적으로 된 이유는 num1에 저장된 값을 long으로 변환하여 메모리에 임시 저장 후 num2와의 연산을 수행하는 '자동 형 변환'이 일어나기 때문이다. 이에는 규칙이 있다. 1) 자료형의 크기가 큰 방향으로 형 변환이 일어난다. 2) 자료형의 크기에 관계없이 정수 자료형보다 실수 자료형이 우선한다. > 정수형을 실수형으로 변환하면 오차는 존재하겠지만 데이터 손실은 일어나지 않음 byte > short > int > long > float > double 문자 자료형은 int로 변환되어 위에 끼어 들어갈 수 ..
-
[Java] 상수(Constants)Language 2022. 3. 7. 20:18
상수는 값이 변하지 않는 수를 의미한다. 그러나 자바에서는 한번 그 값이 정해지면 이후로는 변경이 불가능한 변수도 상수라 일컫는다. 1. 일반적 상수 변수 선언 시 앞에 final 추가하면 그 변수는 상수가 되며, 다음과 같은 특성 지니게 됨 1) 값을 한 번만 할당할 수 있다. 2) 한 번 할당된 값은 변경이 불가하다. # 참고 : 상수의 이름은 모두 대문자로 짓는 것이 관례이며, 띄어쓰기는 언더바(_)를 넣는다. 2. Literal 상수 int num = 123; // 숫자 123은 리터럴 상수(혹은 그냥 '리터럴' or '상수') 컴파일러는 숫자 123을 항상 int형 정수로 인식한다. 이는 num을 int로 선언했기 때문일까? 결론부터 말하자면 아니다. 숫자 1111111111은 int형 정수로만..
-
[Java] 기본 자료형Language 2022. 3. 7. 18:00
변수는 선언 시 자료형을 결정해줘야 한다. 1. 정수 자료형 : byte, short, int, long 이들의 차이는 메모리 공간의 크기 차이에 있다. 메모리 절약을 위해서는 다음과 같이 가능한 한 변수에 최대한 작은 메모리를 할당하는 것이 옳아보인다. 왜냐하면 자바 가상머신은 정수형 연산을 int형으로만 수행하기 때문이다. 따라서, 각 변수를 먼저 int로 변환한 후 연산이 수행되는데, 문제는 이 결과 값을 변수 result에 저장할 때 생긴다. 결과값은 4byte의 int형인데, result는 2byte의 short형이기 때문이다. 따라서 처음부터 int로 선언하는 것이 낫다. short로 선언할 경우 데이터 변환 과정만 추가될 뿐이기 때문이다. # 참고 : 연산 시 long은 int로 변환되지 않..
-
[Java] 변수와 자료형Language 2022. 3. 7. 16:44
* 변수란? '변수는 메모리 공간에 붙여진 이름' 을 뜻한다. int num; // 정수를 저장할 메모리 공간을 num 이라는 이름을 붙여 할당 각 변수가 가진 값을 보여주고, 이를 더한 값을 출력해 보았다. *자료형 int와 같은 키워드를 가리켜 자료형(data type)이라고 한다. 그 종류는 다음과 같다. 자료형 데이터 크기(byte) 표현 범위 boolean true / false 1 true, false char string 2 유니코드 문자 byte integer 1 -128 ~ 127 short 2 -32768 ~ 32767 int 4 -2.15 x 10^9 ~ 2.15 x 10^9 long 8 -9.22 x 10^18 ~ 9.22 x 10^18 float float 4 ±(1.40X10^-..
-
[Java] 공부 시작, 문자열 출력Language 2022. 3. 7. 16:08
프로그래밍 관련하여 처음으로 써보는 글이다. 기록 및 복습 목적으로 공부하며 기록해나갈 생각이다. 좀 두서 없고 깔끔하지 않을 수도 있지만, 나만 알아보면 되니까! 먼저 단기 목표는 Java를 대략적으로 학습한 뒤, 내가 구상했던 간단한 앱을 만드는 것이다. 예전에 사두고 보지 않은 '열혈Java프로그래밍(윤성우 저)'이라는 책으로 공부를 시작했다. 열심히 해보자! ----------------------------------------------------------------------------------- 지금껏 파이썬, 자바스크립트, C 등을 공부해본 경험이 있는데(다 까먹음), 역시 시작은 문자열의 출력이다. 오늘은 일단 자세한 구조에 대한 분석은 넘어가기로 했다. 실행 결과는 다음과 같다. ..