1. 상수란 무엇이며 변수와의 차이는? |
상수란 변수의 반댓말로 항상 상(常)자를 사용하여 변하지 않고 고정된 값을 담는 변수를 의미합니다. 변하지 않는 값을 사용하고 싶을 때 사용한다. 프로젝트를 진행 시 프로그램에서 변하지 않고 고정된 값인 경우 상수를 선언하여 사용해준다.
변수와 상수의 차이점은 상수는 후에 데이터 상에서 변경이 가능 하지만,
변수는 처음 선언한 것 이후로 변경이 불가능하다.
변수의 장점
- 협업을 하는 프로그램 제작의 특정상, 중요한 것들을 변수로 설정해 다른 사람이 실수로 고치지 않게 한다.
- 후에 본인이 다시 프로그램을 보더라도 왜 변수로 설정했는지에 대해 이해가 가능하다.
2. 초기화란 무엇인가? |
// 파일이름 : variable.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : 초기화란 무엇인가
public class variable {
public static void main(String[] args) {
int a; // int a = 1; 이라고 설정해주어야 함
System.out.println(a); // 오류 발생
}
}
// 결과
// Error
자바(Java)에서 초기화는 객체를 선언하고 값을 최초로 할당(저장)하는 것이다.
int a = 10;
이렇게 작성한 것은 선언과 동시에 초기화한 것이고,
이후에 a = 20; 을 입력하면 초기화가 아니라 값을 바꾸는 할당(allocation)이 된다.
3. 리터럴이란 무엇인가? |
리터럴이란 프로그램에서 직접 표현한 값을 의미한다. 쉽게 설명하기 위해 상수로도 설명 된다.
리터럴은 소스 코드의 고정된 값을 대표하는 용어이며,
종류로는 정수, 실수, 문자, 논리, 문자열 리터럴이 있다
4. 아래의 내용이 에러가 나는 이유와 수정 방법은? (리터럴의 표현 방법) |
// 파일이름 : CharTypeUnicode.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : long형 상수(리터럴)의 표현 방법
public class variable {
public static void main(String[] args) {
int a; // int a = 1; 이라고 설정해주어야 함
System.out.println(3147483647 + 3147483648); // 에러남
System.out.println(3147483647L + 3147483648L); // L 또는 l을 붙여서 상수로 표현해달라고 요청해야 함
}
}
// 결과
// Error
이 내용이 에러가 나는 이유는 상수 표현 시 숫자 뒤에 L 또는 l을 넣어서 long형 상수로 표현해달라고 요청해야 하는데
그 부분이 생략되어 있어서 Error가 뜬다. 따라서 숫자 뒤에 L 또는 l을 넣어준다.
5.자동 형변환과 명시적 형변환에 대하여 설명하시오. |
* 자동 형변환의 예제
ex)
double num 1 = 30;
system.out.printIn(59L+34.5);
프로그래밍 중 데이터를 다루는데있어 메모리 또는 사용되어지는 형태 등에 따라 형변환이 일어난다.
이때 자동으로 형변환이 일어나는 경우를 자동형변환 이라고 한다.
* 명시적 형변환의 예제
ex1) double pi = 3.1415;int wholeNumber = (int)pi;
ex2)short num1 = 1;short num2 = 2;short num3 = (short)(num1 + num2);
명시적 형변환이란 연산 시 사용자가 강제적으로 타입을 변경해 주는 것을 의미한다.
이 때는 변환시키고자 하는 데이터 앞에 ( 타입 ) 을 작성한다. 이 작성을 타입캐스트 연산자 라고 한다.
6.아래의 에러가 나는 이유를 설명하고 수정 하시오. (자료형을 출력하는 과정) |
// 파일이름 : variable.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 25일
// 목 적 : 자료형을 출력하는 과정
public class variable {
public static void main(String[] args) {
int a = 3;
int b = 4;
double c = a / b;
System.out.println(result);
}
}
// 결과
// Error
result에 대한 변수 선언문이 없기 때문에 에러가 나온 것으로 double c를 dobule result로 변환해줘야 한다.
7. 이스케이프 시퀀스의 종류를 나열하고 기능을 설명하시오. |
이스케이프 문자는 제어문자들과 출력되지 않는 문자들을 가리킨다.
키보드로 표현할 수 없는 문자들이다. 보통 역슬래시(\)와 문자와 결합하여 사용한다.
8. 아래의 출력 결과를 확인하고, 130이 나오는 이유를 설명하시오. |
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : 아래의 출력 결과를 확인하고, 130이 나오는 이유를 설명하시오를 출력하는 과정
public class Logical0p {
public static void main(String[] args) {
System.out.println('A'); //char형으로 인식, 메모리에 올라갈 때 65값이 들어감
System.out.println('A' + 'A'); //char형으로 65메모리에 올리고, int형으로 자동
}
}
// 결과
// A
// 130
'A'는 char형으로 인식되기 때문에
아스키 코드 'A'로 인식 되어 10진수로 65로 표현되며
이후 A + A를 더하는 식에서 int형으로 받아들여 130으로 표현된다.
9. 연산자의 결합 방향과 우선순위에 대하여 설명하시오. |
연산자의 결합 방향은 수식 내에 우선순위가 같은 연산자가 둘 이상 있을 때, 먼저 어느 연산을 수행할 것인가를 결정한다.
우선순위는 기초적인 증감, 부호, 논리, 산술 연산자가 우선적이며 논리, 조건 대입 연산자는 우선순위가 낮다.
10. 변수 num1에 저장된 값이 1 초과 100 미만의 수인가?를 코딩하시오 |
// 파일이름 : Logical0p.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : 변수 num1에 저장된 값이 1 초과 100 미만의 수인가?를 출력하는 과정
public class Logical0p {
public static void main(String[] args) {
int num1 = 11;
boolean result;
// 변수 num1에 저장된 값이 1과 100 사이의 수인가?
result = (1 < num1) && (num1 < 100);
System.out.println("1초과 100 미만인가?" + result);
}
}
// 결과
// 1초과 100 미만인가?true
11. 변수 num1에 저장된 값이 2 또는 3의 배수인가?를 코딩하시오. |
// 파일이름 : Logical0p.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : 변수 num1에 저장된 값이 2 또는 3의 배수인가?를 출력하는 과정
public class Logical0p {
public static void main(String[] args) {
int num1 = 22;
boolean result;
// 변수 num1에 저장된 값이 2 또는 3의 배수인가?
result = ((num1 % 2) == 0) || ((num1 % 3) == 0);
System.out.println(" 2 또는 3의 배수인가? " + result);
}
}
// 결과
// 2 또는 3의 배수인가? true
12. && 와 || 설명하시오. |
&& 연산자는 AND 연산자로 둘 다 맞다면 TRUE, 둘중 하나라도 틀리면 FALSE로 출력한다.
|| 연산자는 OR 연산자로 둘 중 하나가 맞다면 TRUE로 출력하고 둘 다 틀리면 FALSE로 출력한다.
13. 아래의 프린트 결과를 예측해 보고, 코딩 후 결과를 확인 하시오. (SEC 동작을 확인하는 예제) |
// 파일이름 : Logical0p.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : SEC 동작을 확인하는 예제
public class Logical0p {
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
boolean result;
result = ((num1 += 10) < 0) && ((num2 += 10) > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2 + '\n');
result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
}
// 예측 결과
// result = false
// num1 = 10
// num2 = 10
// result = true
// num1 = 10
// num2 = 10
// 실제 결과
//result = false
//num1 = 10
//num2 = 0
//result = true
//num1 = 20
//num2 = 0
14. 부호 연산자의 다음 예제가 에러가 나는 이유를 설명하고, 수정 하시오. |
* 부호 연산자 예제
short num1;
short num = -num;
이는 3가지 원인으로
short num1 = (short)(-num);
1) num에 대한 변수 선언이 겹치기 때문에 num에 들어가는 num의 이름을 바꿔줄 것.
2) 부호 연산자 -는 변수에 저장된 값의 부호를 바꾸어 반환하기 때문에 명시적 변환법 표기를 해야한다.
short num = 7;
3) num값 변수 숫자 선언을 해줄 것.
* 부호 연산자 수정 예제
short num = 7;
short num1 = (short)(-num);
System.out.println(num1);
15. 전위 증가 연산자와 후위 증가 연산자의 차이는? |
연산자 ++가 피연산자 n보다 앞에 위치할 때를 전위라 하고 1증가된 값이 연산결과값이다.
반대로 연산자 ++가 피연산자 n보다 뒤에 위치할 때를 후위라 하고 1증가하기 전 값이 연산결과값이다.
따라서 차이점은 먼저 출력하고 증감시키냐 증감시키고 출력하냐의 차이다.
16. 아래의 비트 연산자 4가지를 설명하시오. |
& : AND 연산자로 양 쪽의 값이 1이면 1을 결과로 얻고 나머지는 0
| : OR 연산자로 한 쪽의 값이 1이면 1을 결과로 얻고 나머지는 0
^ : XOR 연산자로 피연산자의 값이 다를 때만 1을 결과로 얻고 나머지는 0
~ : 피연산자를 이진수로 표현했을 때 0은 1로, 1은 0으로 (청개구리 연산자라고 한다.)
17.시프트 연산자에 대하여 설명하시오. |
시프트 연산자는 연산자의 방향에 따라 2진수에서 N번 이동하라는 뜻이다.
<<3을 넣을 경우 2진수에서 3번 이동하라는 뜻으로 3에 <<3을 넣을 경우 위와 같이 표시 된다.
18.아래의 출력값을 예측하시오. (= 연산자를 이용할 경우 출력 결과) |
class AssignSteResult {
public static void main(String[] args) {
int num1 = 10, num2 = 20, num3 = 30;
num1 = num2 = num3;
Error라고 뜬다. 이는 연산자 값을 선언하지 않았기 때문이다.
따라서 다음과 같이 수정해주어야 한다.
// 파일이름 : Logical0p.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : = 연산자를 이용할 경우 출력 결과
public class AssignSteResult {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int num3 = 30;
System.out.println(num1=num2=num3);
}
}
// 예측 결과
// Error
// 실제 결과
// 30
실제 결과로 30이 나온다.
이는 서로 같다는 수식을 넣으면 출력값이 높은 것을 결과값으로 도출하기 때문이다.
19.아래의 출력값을 예측하시오. (SEC 동작을 확인하는 예제) |
// 파일이름 : SCE.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : SEC 동작을 확인하는 예제
public class SCE {
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
boolean result;
num1 += 10;
num2 += 10;
result = (num1 < 0) && (num2 > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2 + '\n'); //+ "\n"??
num1 += 10;
num2 += 10;
result = (num1 > 0) || (num2 > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
}
// 예측 결과
// result = false
// num1 = 10
// num2 = 0
// result = true
// num1 = 20
// num2 = 10
// 실제 결과
// result = false
// num1 = 10
// num2 = 10
// result = true
// num1 = 20
// num2 = 20
result 값은 맞았으나 num1,2 값이 틀린 이유는 다음과 같다.
1) 변수값은 축적 되기 때문에 변수값을 달리 설정하거나 상수값을 넣지 않으면
num1은 계속 카운팅해서 10+10 = 20으로 출력한다.
20.아래의 출력값을 예측하시오. |
// 파일이름 : AddNum.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : SEC 동작을 확인하는 예제
public class AddNum {
public static void main(String[] args) {
int result = 3 + 6;
System.out.println("3 + 6 = " + result);
result += 9;
System.out.println("3 + 6 + 9 = " + result);
result += 12;
System.out.println("3 + 6 + 9 + 12 = " + result);
}
}
// 예측 결과
// 3 + 6 = 9
// 3 + 6 + 9 = 18
// 3 + 6 + 9 + 12 = 30
// 실제 결과
// 3 + 6 = 9
// 3 + 6 + 9 = 18
// 3 + 6 + 9 + 12 = 30
// 예측 결과와 실제 결과가 같다.
21.국어 영어 수학 점수를 90 70 80 으로 넣고, 총점과 평균을 구하시오. |
// 파일이름 : AddNum.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 26일
// 목 적 : 국어, 영어, 수학 점수를 90 70 80으로 넣고, 총점과 평균을 구하시오.
public class assignment3 {
public static void main(String[] args) {
int korea = 90;
int english = 70;
int math = 80;
int result = korea + english + math;
System.out.println("총점 : " + result);
System.out.println("평균 : " + result/3);
}
}
// 결과
// 총점 : 240
// 평균 : 80
* 사이트 참조 |
[JAVA} 변수의 초기화
JAVA의 정석(2nd Editionm) (남궁 성 著) 200p~208p 를 참조해 코드를 작성했으며 개인적인 공부 내용을 적은 것이므로 오류가 있을 수 있습니다. 0. 들어가기에 앞서 들어가기에 앞서 변수에 대한 공부
whatisthenext.tistory.com
형변환 연산자, 자동 형변환
형변환 연산자 형변환이란? 변수또는 상수의 타입을 다른 타입으로 변환하는 것 바꾸는 방법은 쉽다. (타입)피연산자 이러한 형태로 피연산자 앞에다가 괄호안에 바꿀 타입을 적어주기만 하면
mgyo.tistory.com
'JAVA개념 시작하기' 카테고리의 다른 글
JAVA 6일차 - 클래스와 인스턴스 (0) | 2022.10.31 |
---|---|
Java 5일차 - 1주일 치 정리 (변수~메소드) (0) | 2022.10.31 |
JAVA 4일차 - 실행 흐름과 컨트롤 (0) | 2022.10.27 |
JAVA 2일차 - 자료형 (0) | 2022.10.25 |
JAVA 1일차 - HelloWorld, 명령어, 컴파일, JAVA언어 창시자, JDK (0) | 2022.10.24 |