랩터
4/3 본문
변수(Variable) : 값이 변할 수 있는 데이터를 임시로 저장하기 위한 수단
class Main {
public static void main(String[] args) {
int num; // 변수 선언
num = 1; // 값 할당
}
}
public class Main {
public static void main(String[] args) {
int a = 1; //int a까지는 선언 =1은 할당
int b = 2;
int c = a+b;
System.out.println(c);
}
}
상수(Constant) : 변하지 말아야 할 데이터를 임시로 저장하기 위한 수단
상수는 간단히 말해, 재할당이 금지된 변수입니다. 즉, 변수와 같이 선언하고 할당하여 사용할 수 있지만, 재할당이 금지돼 있습니다. 상수는 final이라는 키워드를 사용해 선언할 수 있으며, 관례로 대문자에 언더바(_)를 넣어 구분하는 SCREAMING_SNAKE_CASE를 사용합니다. 상수는 무조건 대문자로만 사용합니다.
상수는 선언과 할당을 항상 동시에 해야합니다.
final double CALCULATOR_PI = 3.14;
기본 타입과 참조 타입
자바의 타입은 실제 값을 의미하는 기본 타입(primitive type)과 어떤 값이 저장된 주소를 값으로 갖는 참조 타입(reference type), 두 가지의 데이터 타입을 가지고 있습니다.
- 기본 타입(primitive type)
- 값을 저장할 때, 데이터의 실제 값이 저장됩니다.
- 정수 타입(byte, short, int, long), 실수 타입(float, double), 문자 타입(char), 논리 타입(boolean)
- 참조 타입(reference type)
- 값을 저장할 때, 데이터가 저장된 곳을 나타내는 주소값이 저장됩니다.
- 객체의 주소를 저장, 8개의 기본형을 제외한 나머지 타입
문자열은 참조자료형이다.
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
int primitive = 1; // 기본
Object reference = new Object();
Object reference2 = reference;
System.out.println(reference); //메모리주소
System.out.println(reference2);
}
}
리터럴이란?
사전적으로 리터럴(Literal)은 ‘문자 그대로의'라는 뜻을 가집니다. 프로그래밍에서 리터럴이란 문자가 가리키는 값 그 자체를 의미합니다. 값=리터럴
정수 타입
정수 타입은 숫자를 나타내는 타입으로, byte, short, int, long의 총 4개의 타입으로 분류됩니다. 이들은 각각 차지하는 메모리의 크기가 다르며, 그에 따라 나타낼 수 있는 숫자의 범위가 다릅니다.
정수형의 오버플로우와 언더플로우
- 오버플로우
- 자료형이 표현할 수 있는 범위 중 최대값 이상의 값을 표현한 경우 발생합니다.
- 최대값을 넘어가면 해당 데이터 타입의 최소값으로 값이 순환합니다.
- 예 : 어떤 값이 byte형이고, byte형의 최대값인 127을 값으로 가지는 경우, 이 값에 1을 더하면 128이 되는 게 아니라, 최소값인 -128이 됩니다.
- 언더플로우
- 자료형이 표현할 수 있는 범위 중 최소값 이하의 값을 표현한 경우 발생합니다.
- 최소값을 넘어가면 해당 데이터 타입의 최대값으로 값이 순환합니다.
- 예 : 어떤 값이 byte형이고, byte 형의 최소값인 -128을 값으로 가지는 경우, 이 값에 1을 빼면 -129가 되는 게 아니라, 최대값인 127이 됩니다.
실수 타입
실수는 소수점을 가지는 값을 의미하며, float형과 double형으로 분류됩니다.
타입 메모리 표현 범위 정밀도
float | 4byte | 음수 : -3.4 * 1038 ~ -1.4 * 10-45양수 : 1.4 * 10-45 ~ 3.4 * 1038 | 7자리 |
double | 8byte | 음수 : -1.8 * 10308 ~ -4.9 * 10-324양수 : 4.9 * 10-324 ~ 1.8 * 10308 | 15자리 |
실수형 리터럴은 아래와 같이 사용할 수 있습니다. 이때, double형 리터럴에는 접미사 d를 붙여도, 붙이지 않아도 되지만, float형 리터럴에는 반드시 접미사 f를 붙여주어야 합니다.
논리 타입
논리 타입의 종류는 boolean형 한 가지뿐입니다. boolean형은 참 또는 거짓을 저장할 수 있는 데이터 타입으로, 오직 true 혹은 false를 값으로 가집니다.
문자 타입
문자 타입은 2byte 크기의 char형 오직 하나만 있습니다. 문자 타입 변수를 선언하면 해당 변수에 오직 하나의 문자형 리터럴을 저장할 수 있습니다.
문자형 리터럴을 작성할 때는 반드시 큰따옴표(””)가 아닌 작은따옴표(’’)를 사용하여야 합니다. 큰따옴표를 사용한 리터럴은 문자형 리터럴이 아니라 문자열 리터럴로 인식되기 때문입니다.
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
String str = " Java Spring";
System.out.println(str.replace(" ",""));// 공백을 아무것도 아닌걸로 바꿈
}
}
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
String str = new String("Java");
System.out.println("문자열 : " + str);
System.out.println(str.toLowerCase());
System.out.println(str.toUpperCase());
System.out.println("두 메서드 호출 후 문자열 : " + str);
}
}
문자열 : Java
java
JAVA
두 메서드 호출 후 문자열 : Java
변수나 클래스명에서는 예약어 사용x
public class Solution {
public static void main(String[] args){
// TODO : 키워드 char을 사용하여 변수 course를 선언하세요.
char course;
course = 'A';
int num;
num =100;
double pi;
pi = 3.14;
//문제5 변수 num1에 숫자 5를 할당하고, 변수 num2에 숫자 7을 할당한 후, 변수 result에 숫자 num1과 숫자 num2의 곱을 할당합니다.
int num1 = 5 , num2 = 7 , result = num1 * num2 ;
}
}
문제6
public class Solution {
public static void main(String[] args) {
System.out.println(getRunCatDistance(5, 10));
}
public static int getRunCatDistance(int speed, int time) {
int distance;
// TODO: 속력(speed), 시간(time)이 숫자로 주어졌을 때, 이동한 거리를 변수 distance에 할당하여 리턴하는
// getRunCatDistance 함수를 작성하세요.
distance = speed * time;
//아래의 코드는 수정하지 말아야 합니다
return distance;
}
}
문제7
public class Solution {
public static void main(String[] args) {
}
public int multipleBy2(int input) {
input = input * 2;
return input;
}
//위의 코드는 수정하지 말아야 합니다
public int devideBy2(int input) {
// TODO : 첫 번째 인자에 2를 곱하는 함수 multiplyBy2와 비슷하게
// 첫 번째 인자를 2로 나누는 함수 divideBy2를 선언하세요.
input = input / 2;
//아래의 코드는 수정하지 말아야 합니다
return input;
}
}
문제8
public class Solution {
public static void main(String[] args){
System.out.println(invoke());
}
// 문자열을 인자로 받아서 느낌표를 붙여서 리턴 해주는 메서드 returnWordWithJoy가 있습니다.
// 메서드 returnWordWithJoy의 첫 번째 인자로 문자열 "I love coding"을 넣어서 호출하고, 그 결과값을 변수 word에 할당하세요.
public static String invoke() {
String word;
//TODO :
word = returnWordWithJoy("I love coding");
//아래 코드는 수정하지 말아야 합니다.
return word;
}
//아래의 메서드는 수정하지 말아야 합니다.
public static String returnWordWithJoy(String str) {
if(str.equals("")) return "empty value";
else return str + "!";
}
}
문제9
public class Solution {
public static void main(String[] args){
System.out.println(type());
}
public static String type() {
int num;
char thing;
//TODO :
num =3;
thing = 'A';
//아래 코드는 수정하지 말아야 합니다.
return goCheck(num, thing);
}
//아래 메소드는 수정하지 말아야 합니다.
public String goCheck(int num, char thing) {
return String.format("코딩아, 공구함에 있는 건전지말야. %c가 %d개 들어있는게 맞니?", thing, num);
}
}
문제10
public class Solution {
public static void main(String[] args)
{
// TODO : 변수 score에 숫자 100이 할당되도록 하기 코드를 수정하세요.
int score = 99 + 1; // 해당 부분을 수정해야 합니다.
System.out.println(score);
//하단의 코드는 수정하지 말아야 합니다.
}
}
문제12
public class Solution {
public static void main(String[] args)
{
int result = 9; // -> '9'
char convertValue = Character.forDigit(result,10); //10진법으로 변경
// TODO: 여기에 코드를 작성합니다.
System.out.println(convertValue);
//하단의 코드는 수정하지 말아야 합니다.
}
}
문제18
public class Solution {
public static void main(String[] args)
{
int hour, min, sec;
hour = 17;
min = 23;
sec = 11;
String str = "현재 시각은 " + hour + "시 " + min + "분" + sec + "초 입니다.";
System.out.println(String.format("현재 시각은 %s시 %s분 %s초입니다.", hour, min, sec));
}
}
'공부 > JAVA' 카테고리의 다른 글
4/11 객체지향이론, 기본개념 (0) | 2024.04.11 |
---|---|
4/8 배열 (0) | 2024.04.08 |
[반복문]연습문제 (0) | 2024.04.05 |
[Java] 반복문 (0) | 2024.04.05 |
4/4 (3) | 2024.04.04 |