Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

랩터

4/3 본문

공부/JAVA

4/3

raptorhs 2024. 4. 3. 12:41

변수(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