Java
-
[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 처리를 위한 메..
-
[Android]EditTextAndroid 2022. 3. 8. 20:53
오늘은 xml에서 EditText와 Button으로 아이디를 적는 것 처럼 타이핑 할 수 있는 구획과, 터치 시 동작하는 간단한 동적 기능을 가진 앱을 만들어 보았다. 먼저 xml 상에서 타이핑을 위한 공간과 버튼 모양을 만들어야 한다. 이후 자바 코드와 연결하여 동적으로 작동하도록 할 것이다. 기본으로 설정되어 있는 Constraint Layout은 지금 수준으로는 다루기 어려우므로 먼저 Linear Layout으로 변경했다. 타이핑할 공란과 버튼을 수직으로 배치하고 싶다면 orientation을 추가하여 vertical로 설정한다. 루트요소의 자손으로(이렇게 부르는 게 맞는지 모르겠다) EditText를 추가한다. id는 이후 .java 파일에서 호출하여 기능을 부여하기 위함이다. 'et_id'가 아..
-
[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^-..