SONOTRI
  • 3장 - 기초 문법 배우기
    2025년 02월 13일 07시 30분 19초에 업로드 된 글입니다.
    작성자: sonotree

    3.1. 변수

    입력

    : 명령을 실행하는 데 필요한 데이터를 넣어주는 것

     

    저장

    : 입력한 데이터를 컴퓨터 어딘가에서 기억하는 것

     

    데이터는 키보드로 직접 입력할 수도 있고, 코드로 작성해 입력할 수도 있다. 이렇게 입력한 데이터를 프로그램에서 사용하려면 컴퓨터 어딘가에서 기억하고 있어야 한다. 이를 저장이라고 하며 저장은 컴퓨터의 메모리에서 담당한다.

     

     

    3.1.1. 변수 선언

    메모리에 데이터를 저장하려면 변수가 필요하다. 변수프로그램이 데이터를 저장하기 위해 할당받은 메모리 공간을 의미한다. 프로그램은 메모리 공간을 할당받기 위해 변수를 만드는데, 이를 변수 선언이라고 한다.

     

    자바에서는 아래와 같이 변수를 선언한다.

    [자료형] [변수명];
    //int a;

     

    변수명을 지을 때 몇 가지 규칙이 존재한다. 이를 어기면 IntelliJ에서 실행할 떄 경고나 오류가 발생할 수 있다. 

    대표적인 규칙은 다음과 같다.

    • 대소문자를 구분하며 길이 제한은 없다
    • 변수명의 첫 글자는 숫자로 시작할 수 없다
    • 특수문자는 _와 $만 허용한다
    • 공백이 없어야 한다
    • 키워드(int 등)를 변수명으로 사용하면 안된다.

     

     

    3.1.2. 변수 초기화 ★

    변수를 선언한다고 바로 메모리 공간이 할당되지는 않는다. 변수 선언은 단지 프로그램에서 만든 변수에 어떤 데이터를 저장할 수 있는지를 자바 컴파일러에 알려주는 역할만 하기 떄문이다.

     

    프로그램에서 변수에 데이터를 넣으면(변수 초기화) 데이터가 변수에 저장되고, 이때 메모리가 할당된다. 이렇게 변수에 넣는 데이터를 일반적으로 "값"이라고 하며, 값이 저장되면 변수명으로 메모리에 접근해 사용할 수 있다. 

    변수 선언
    : 메모리 공간을 할당받기 위해 변수를 만드는 것
    -> 변수에 어떤 데이터를 저장할 수 있는지를 자바 컴파일러에게 알려주는 역할을 함
    -> 자바 컴파일러는 우리가 짠 코드를 JMV이 이해할 수 있는 언어로 바꿔준다.

    변수 초기화
    : 변수 선언 후 변수에 값을 처음 저장하는 것. 변수 초기화가 이루어져야 메모리가 할당된다

     

     

    아래와 같이 변수를 선언하고 값을 저장했다고 해보자.

    int a; //변수 선언O, 변수 초기화 X
    int b = 10; //변수 선언, 변수 초기화 O

     

    컴퓨터가 이 코드를 읽으면 메모리에서 사용할 수 있는 빈 공간을 찾는다. 그리고 찾은 공간에 a와 b라는 이름을 붙인다.

     

    이제 변수에 저장한 값을 확인하는 코드를 작성해보자. 그러면 "Variable 'a' might have been initialized"라는 메시지가 뜨는데 이는 a 변수가 초기화되지 않아 오류가 발생했다는 뜻이다.

     

    변수에 저장된 값을 출력하려면 a, b 변수가 위치한 메모리에 접근해야한다. 하지만 현재 변수 b만 초기화되었고 a는 변수 선언만 한 상태이다. 초기화해야 메모리가 할당되어 비로소 변수가 생성되기 때문에, 앞의 오류는 생성되지 않은 면수 a에 접근하기 때문에 발생한 것이 된다.

     

    아래처럼 a 변수를 초기화한 후 실행하면 정상적으로 실행된다.

    초기화는 변수 선언과 동시에 해도 되고(b) 나중에 해도 된다(a)

    import java.util.Scanner;
    public class Main{
        public static void main(String[] args){
            int a;
            int b=10;
            a=11;
    
            System.out.println(a);
            System.out.println(b);
        }
    }
    
    /*
    11
    10
    */

     

    자료형이 같으면 여러 변수를 한 번에 선언하고 초기화할 수도 있다. 이때 각 변수는 쉼표로 구분한다.

    int num1, num2; 
    int Num1=1, Num2=2;

     

     

     

    3.1.3. 변수명 표기법

    좋은 프로그램을 작성하려면 언어마다 제시하는 코드 작성 규칙을 지키는 것이 좋다. 그래야 일관성 있고 익기 좋은 코드가 된다. 변수명을 짓는 규칙도 이 중 하나이다. 

     

    1. 카멜 표기법(camel case)

    가장 유명한 표기법으로, 첫 글자는 소문자로 시작하고 여러 단어로 구성되면 첫 단어를 제외하고 각 단어의 첫 글자를 대문자로 표기한다.

    -> 자바에서 변수명을 지을 때 사용한다.

    int firstNumber;

     

    2. 파스칼 표기법(pascal case)

    모든 단어의 첫 글자를 대문자로 표기한다.

    -> 자바에서 클래스명을 지을 때 사용한다.

    int FisrtNumber

     

    3. 스네이크 표기법(snake case)

    모든 단어를 소문자로 표기한다. 여러 단어일 경우 뱀처럼 생긴 언더바(_)로 단어를 연결한다.

    int first_number

     

    4. 헝가리안 표기법(Hungarian notation)

    자료형을 파악하기 쉽게 접두어(첫 번째 단어)를 붙이는 표기법이다.

    int intNumber;
    String strName;
    String txtMyName;

     


    3.2. 자료형

    3.2.1. 기본 자료형

    자료형은 변수에 저장하는 값의 형태를 의미한다.

     

    <정수형 변수>

    byte(1바이트), short(2바이트), int(4바이트), long(8바이트)

    -> long일 때만 값 뒤에 L 또는 l을 붙여 구분한다.

    long longNumber = 234588L

     

     

    <실수형 변수>

    실수는 소수점이 있는 형태의 수로, 실수를 저장할 때는 float(4바이트), double(8바이트)를 사용한다.

    정수형처럼 값의 크기에 따라 구분하며, float일 때도 값 뒤에 F또는 f를 붙여 구분한다.

    double doubleNumber = 123.4;
    flaot flaotNumber = 123.4f;

     

     

    <문자형 변수>

    문자(한 글자)를 저장할 때는 char(2바이트)를 사용한다. 이때 문자임을 알 수 있도록 작은따옴표(' ')를 사용한다. 숫자도 작은따옴표에 넣으면 문자로 인식된다.

    char charText = 'a';
    char charNum = '1'; //숫자가 아닌 문자로 인식

     

     

    <논리 자료형>

    이 자료형은 값으로 참(ture), 거짓(false)만 가지며 boolean(1바이트)를 사용해 표시한다.

    boolean isTrue = true; //값으로 true를 가지고 boolean 변수 명은 isTrue

     

     

     

     

    3.2.2. 값의 크기에 따라 자료형이 달라지는 이유

    프로그램은 변수를 선언해 메모리를 할당받는다. 이때 자료형에 따라 할당받는 크기가 정해진다. 아래 그림처럼 byre, boolean은 1바이트, char&short는 2바이트, int&float는 4바이트, long&double은 8바이트를 할당받는다.

     

    ▼ 만약 int로 선언한 변수에 8바이트 값을 저장하면, 앞의 4바이트 공간에 일부 데이터가 저장되고 나머지 데이터는 저장할 공간이 없어 손실되고 만다. 데이터 손실이 일어나면 프로그램은 오류가 발생한다.

     

    ▼ 반대로 long으로 선언한 변수에 4바이트 값을 저장하면, 공간은 넉넉하기 때문에 저장 과정에 문제는 없지만 남은 4바이트 만큼의 공간이 낭비된다.

     

    지금까지 알아본 8개의 자료형을 기본 자료형(primitive data type)이라고 한다.

    가장 단순한 형태의 자료형이다.

    프로그램 오류가 발생하거나 메모리가 낭비되지 않도록... 값의 크기에 맞는 자료형을 잘 선택해서 사용해야한다.

     

     

     

    3.2.3. 문자열 ★

    기본 자료형 외에도 자주 사용하는 자료형으로 String이 있다. String은 문자열로 된 값을 표시할 때 사용한다. 문자열릉 자바에서 큰따옴표(" ")로 표시한다. 그래서 큰따옴표 사이에 숫자나 문자를 넣으면 모두 문자열로 인식한다.

    String strTxt = "a";
    String strWord = "Java";
    String strNumber = "123";
    String strKor = "밥 뭐먹지";

     

    String 같은 자료형을 참조 자료형(reference data type)이라고 하며, 값을 저장하는 기본 자료형과 달리 참조 자료형은 값이 저장된 주소를 저장한다. 이때의 주소는 메모리 위치를 나타낸다.

    (참조 자료형에 관해서는 6장에서 자세히 다룸)

     

     

     

    3.2.4. 서식 지정자 

    2장에서 배운 print()와 println()은 소괄호 안 내용을 단순하게 출력하기만 한다. 이와 달리 우리가 원하는 형식으로 내용을 출력하고 싶다면 printf()를 사용한다.

     

    서식 지정자(format specifier)는 형식 지정자라고도 하며, 뒤에 오는 값을 화면에 어떻게 출력할지 형태를 지정하는 역할을 한다.

    System.out.printf("서식_지정자", 값);
    System.out.printf("%d", 21);

     

    자주 사용하는 서식 지정자는 아래와 같다.

    서식 지정자 출력 형태
    %d 정수(decimal,십진수)
    %f 실수
    %c 문자
    %s 문자열
    %b 논리형 값
    %t 시간과 날짜
    %n 줄 바꿈
    %% %기호
    참고로 10진수(decimal), 16진수(hexadecimal), 8진수(octal)

     

     

    예제를 보며 어떻게 사용하는지 알아보자. printf는 줄 바꿈 기능이 없기 때문에 결과를 한 줄씩 출력하고 싶다면, 줄바꿈을 의미하는 서식 지정자 %n 또는 특수문자 \n을 추가한다.

    public class Main{
        public static void main(String[] args){
            System.out.printf("이름:%s%n", "sonotri");
            System.out.printf("나이:%s\n", "2226");
            System.out.printf("취미:%s\n", "그림 그리기");
        }
    }
    
    /*
    이름:sonotri
    나이:2226
    취미:그림 그리기
    */

     

    이렇게 한 줄로 코드를 작성할 수도 있다. 뒤에 오는 값이 여러개이면 ,로 구분해준다.

    public class Main{
        public static void main(String[] args){
            System.out.printf("이름:%s\n나이:%s\n취미:%s","sonotri", 2226, "그림 그리기");
        }
    }
    
    /*
    이름:sonotri
    나이:2226
    취미:그림 그리기
    */

     

     

     

    3.2.5. 서식 지정자 응용(자릿수 맞추기, 소수점 넣기) ★

    서식 지정자의 % 뒤에 숫자를 넣어 자릿수를 맞출 수도 있다. 이때 플래그(flag)를 활용하면 빈자리에 채울 내용 지정도 가능하다. 서식 지정자에 사용하는 플래그는 다음과 같다.

    플래그 설명
    플래그 없음 오른쪽 정렬하고 빈 자리를 공백으로 채움
    - 왼쪽 정렬하고 빈자리를 공백으로 채움
    0 빈자리를 0으로 채움(-가 없으면 기본적으로 오른쪽 정렬)
    , 천 단위 구분 기호(,)를 넣고 빈자리를 공백으로 채움

     

    예제와 함께 살펴보자.

    public class Main{
        public static void main(String[] args){
            System.out.printf("%7d%n",55555);
            System.out.printf("%-7d%n",55555);
            System.out.printf("%07d%n",55555);
            System.out.printf("%,7d%n",55555);
    
        }
    }
    
    /*
      55555
    55555  
    0055555
     55,555
    */

     

     

    또한 소수점을 넣어 출력할 수도 있다. %뒤에 .[출력할 소수점 이하 자릿수]를 써주면 된다.

    빈자리는 0으로 채워서 출력된다.

    public class Main{
        public static void main(String[] args){
            System.out.printf("%.3f",123.45678f);
            System.out.printf("%.5f",123.45f);
        }
    }
    
    /*123.457
    123.45000*/

     

     

     

    3.2.6. QUIZ

    1) 내가 짠 코드

    public class Main{
        public static void main(String[] args){
            int intValue = 123;
            double doubleValue = 456.789;
    
            //정수와 실수 출력
            System.out.printf("정수:%d\n", intValue);
            System.out.printf("실수:%.4f\n", doubleValue); //.4를 생략하면 456.789000이 출력됨
        }
    }
    
    /*정수:123
    실수:456.7890*/

    3.3. 상수와 리터럴

    변수에 저장하는 값은 계속 바뀔 수 있다. 상수는 이와 대비되는 개념으로, 저장된 값이 바뀌지 않는 변수를 의미한다. 상수를 선언하려면 변수를 선언할 때 앞에 final 키워드를 붙이면 된다.

    final [자료형] [변수명] = [값];
    final int NUMBER = 2018;

     

    상수로 선언하면 선언과 동시에 초기화하고 이후 값을 변경할 수 없다. 값을 변경하려고 하면 오류가 발생한다. 

    그리고 상수는 대문자로 작성한다.

     

    그리고 지금까지 우리가 변수를 선언하며 넣었던 값을 리터럴(literal)이라고 한다. literal은 "문자 그대로의"라는 의미로 소스 코드에 직접 표시하는 값 그 자체를 의미한다. 예를 들어, 아래의 123, 3.14, sonotri는 모두 리터럴이다.

    int number = 123;
    double flaotNumber = 3.14;
    String name = "sonotri";

    3.4. 연산자

    연산자(operator)는 프로그램에서 어떤 연산을 수행할 때 사용하는 기호이다. 지금까지 우리가 사용한 = 도 연산자 중 하나이다. = 는 값을 대입(할당)한다고 해서 대입 연산자 또는 할당 연산자라고 불린다. 

    int a = 10;
    //=는 연산자 왼쪽에 있는 변수에 오른쪽 값을 저장할 때 사용한다.

     

     

     

    3.4.1. 산술 연산자 사용하기

    기본적인 사칙연산을 해보자. 문자가 아니므로 따옴표 없이 괄호 안에 작성하면 된다.

    참고로 /는 나눗셈 결과의 몫을 구하는 연산자이다. 나눈 값을 반환해주는 연산자가 아니다.

    public class Main{
        public static void main(String[] args){
    
            System.out.println(100 + 3);
            System.out.println(100 - 3);
            System.out.println(100 * 3);
            System.out.println(100 / 3);
        }
    }
    
    /*103
    97
    300
    33*/

     

    이번에는 변수를 사용해 사칙 연산을 해보자.

    public class Main{
        public static void main(String[] args){
            int a = 10;
            int b = a+3;
            System.out.println(b);
        }
    }
    
    //13

     

    변수를 사용해 덧셈하는 방법을 알았으니, 앞에서 작성한 사칙연산을 모두 변수를 사용하는 방식으로 바꿔보자. 

    public class Main{
        public static void main(String[] args){
            int a = 100;
            int b = 3;
            int add = a + b;
            int sub = a - b;
            int mul = a * b;
            int div = a / b;
            System.out.println(add);
            System.out.println(sub);
            System.out.println(mul);
            System.out.println(div);
        }
    }
    
    /*103
    97
    300
    33*/

     

    변수를 사용하면 코드가 효율적으로 바뀐다. 사칙연산하는 두 값 a, b를 바꾸어 결과값을 출력한다고 하면, a b의 값을 바꿀 떄마다 add, sub, mul, div 4문장을 모두 바꿔야한다. 하지만 변수를 사용하면 a, b값만 변경하면 되니 훨씬 간단해진다.

     

    아래는 지금까지 다룬 연산자 중 내가 헷갈려하는 연산자를 정리해봤다.

    • = (대입 연산자)
    • / (산술 연산자): a의 값을 b의 값으로 나눈
    • % (산술 연산자): a의 값을 b의 값으로 나눈 나머지

     

     

    3.4.2. + 연산자로 문자열 연결하기 ★

    다른 연산자와 달리 + 연산자는 산술 연산 외에 기능이 하나 더 있다. 아래의 코드를 보며 이해해보자.

    public class Main{
        public static void main(String[] args){
            System.out.println(123+4);
            System.out.println("123"+4);
        }
    }
    
    /*127
    1234*/

     

    ▲ 이처럼 문자열과 숫자를 + 연산자로 연결하면 둘 다 문자열로 인식해 두 문자열을 한 단어처럼 붙여서 출력한다.

    -> 즉, +연산자를 문자열에 사용하면 문자열을 하나로 연결하는 기능을 한다.

     

    변수와 문자열을 조합해 사용할 수도 있다. 이때도 변수의 값은 문자열로 인식된다.

    public class Main{
        public static void main(String[] args){
            int age = 2226;
            System.out.println("나는 올해 " + age + "살입니다.");
        }
    }
    
    //나는 올해 2226살입니다.

     

     

     

     

    3.4.3. 값을 입력받아 사칙연산하기 ★ ★

    지금까지는 코드 안에서 변수에 값을 미리 저장하고 이를 이용해 사칙연산을 수행했다. 이번에는 키보드로 값을 직접 입력받아 사칙연산을 수행해보자.

    public class Main{
        public static void main(String[] args){
        	//Scanner 클래스 사용법 다시 한번 확인하자!!!!!!!
            Scanner scan = new Scanner(System.in);
            int a = scan.nextInt();
            int b = scan.nextInt();
    
            int add = a + b;
            System.out.println("덧셈 결과: " + add);
        }
        
    100 //키보드로 입력한 값
    3 //키도드로 입력한 값
    // 덧셈 결과: 103

     

    // Scanner scan = new Scanner(System.in);

    을 통해 입력받을 준비를 하고

     

    // scan.nextInt()로 정수 100과 3을 입력받아 각각 a, b 변수에 저장한다.


    3.5. 형변환

    3.5.1. 형변환이란

     

    a와 b는 모두 정수형 변수이다. 여기서 div의 값(33.33333)은 실수이지만, 이를 저장하는 div 변수는 정수형이라서 결과가 정수로 나올 수 밖에 없다. 그러면 div을 실수형 변수로 바꾸면 이 문제가 해결될까?

    int a = 100;
    int b = 3;
    int div = a/b;

     

    결과값의 형태는 실수가 맞긴 하지만 우리가 원했던 33.3333은 아니다. 나눈 값을 소수점까지 제대로 나오게 하고 싶다면 a와 b의 변수의 값도 실수형으로 바꿔줘야한다.

    int a = 100;
    int b = 3;
    float div = a/b;
    
    //33.0

     

    이때 두 변수 중 하나만 float로 바꿔도 된다(다만 연산결과가 담기는 div는 무조건 float여야 한다)!

     

    public class Main{
        public static void main(String[] args){
            float a = 100;
            int b = 3;
            float div = a/b; //div값이 실수이길 원한다면 이건 무조건 실수형이여야 한다.
            System.out.println(div);
        }
    }
    
    //33.333332
    이처럼 어떤 자료형의 값을 다른 자료형으로 바꾸는 것을 형변환(type conversion)이라고 한다.
    형변환을 할 때는 아래와 같이 바꾸려는 자료형을 소괄호 안에 넣어 변수(또는 값) 앞에 붙이면 된다.
    public class Main{
        public static void main(String[] args){
            int a = 100;
            int b = 3;
            float div = (float)a/b;
            System.out.println(div);
        }
    }
    
    //33.333332

     

     

     

    3.5.3. 기본 자료형으로 표현할 수 있는 값의 범위와 할당되는 메모리 크기 ★

    바로 위의 코드 결과는 33.333333333...이 아니다. 이는 float형 변수가 담을 수 있는 값의 크기에 제한이 있어서 그렇다. 뒷자리를 더 표현하고 싶다면 더 큰 값을 담을 수 있는 double로 div 변수를 선언해야 한다.

    public class Main{
        public static void main(String[] args){
            int a = 100;
            int b = 3;
            double div = (double)a/b;
            System.out.println(div);
        }
    }
    
    //33.333333333333336

     

    그러면 이번에는 소수점 아래 15자리까지 표시된다.

    출력되는 값은 자료형이 표현할 수 있는 값의 범위에 따라 달라지므로, 값을 정확히 표현하고 싶다면 값의 크기에 맞는 자료형을 사용하는 것이 좋다.

     

    아래는 자바에서 기본 자료형으로 표현할 수 있는 값의 범위와 할당되는 메모리 크기이다.

    자료형 값의 범위 크기
    정수형 byte -128 ~ 127 1바이트
    short -32,768 ~ 32.767 2바이트
    int \(-2^{31} ~ (2^{31}-1)\) 4바이트
    long \(2^{63} ~ (2^{63}-1)\) 8바이트
    실수형 float \(3.4 x 10^{-38} ~ (3.4 x 10^{38})\) 4바이트
    double \(1.7 x 10^{-308} ~ (1.7 x 10^{308})\) 8바이트
    문자형 char \(0 ~ 2^{16}\) 2바이트
    논리형 boolean true/false 1바이트

     

     

     

    3.5.3. 명시적 형변환 and 묵시적 형변환

    아래와 같이 코드를 작성하면 빨간 지렁이가 생긴다. 이는 float형을 int형 변환하면 값이 손실될 수 있어서 생기는 오류이다. 현재 코드가 실행되면 float형인 num2를 int형(result)로 형변환 해야한다. 범위가 큰 값이 범위가 작은 값으로 변환되며 값이 손실되기 때문에 자바 컴파일러가 막는 것이다.

     

    오류가 나지 않도록 result 값이 정수가 되도록 하고싶다면, 아래 코드처럼 변환할 자료형을 표시해야한다.

    public class Main{
        public static void main(String[] args){
            int num1 = 12;
            float num2 = 12.3f;
            int result = num1 + (int)num2; //강제 형변환
            System.out.println(result);
        }
    }
    
    //24

     

    이처럼 변환할 자료형을 정확히 표시해 형변환 하는 것을 강제 형변환 또는 명시적 형변환이라고 한다.

    -> 명시적 형변환은 범위가 큰 자료형에서 범위가 작은 자료형으로의 변환도 값의 일부 손실은 있지만 허용한다.

     

     

    이번에는 int + float형 결과를 float형 변수에 넣어보자. 아무런 문제 없이 실행되고 결과도 실수 값으로 잘 나온다. 이 경우 int형인 num1의 값이 자동으로 flaot형으로 형 변환이 일어나서 그런것이다. 

    public class Main{
        public static void main(String[] args){
            int num1 = 12;
            float num2 = 12.3f;
            float result = num1 + (int)num2; //명시적 형변환
            System.out.println(result);
        }
    }
    
    //24.3

     

    이처럼 바꿀 자료형을 명시하지 않아도 값의 범위를 파악해 자동으로 자료형이 바뀌는 것을 자동 형변환 또는 묵시적 형변환이라고 한다. 

    -> 묵시적 형변환은 범위가 작은 자료형에서 범위가 큰 자료형으로의 변환만 허용한다. 따라서 범위가 큰 자료형에서 범위가 작은 자료형으로 형변환 할 때는 반드시 명시적 형변환을 해줘야한다.

     

     

    3.5.4. QUIZ

    다음 코드의 실행 결과는?

    public class Main {
        public static void main(String[] args) {
            int a = 1;
            char b = '1';
            int c = a + b;
            System.out.println(c);
        }
    }

     

    내 생각) - 한 번 틀림

    4바이트 int값인 c에서, 4바이트 int a와 2바이트 char b의 연산이 진행되므로 c에서는 묵시적 형변환이 일어날 것이다.

    따라서 char는 더 큰 데이터 타입인 int로 자동 형변환 되고, 문자 1은 아스키코드로 49의 값을 받으니 결과적으로는 

    -> int c = 1 + 49, 즉 c의 값은 50이 될 것이다.


    3.6. 주석

    <블록 주석>

    /*
    블록 주석 예제입니다.
    여러 줄을 모두 주석으로 처리합니다.
    */

     

    <한 줄 주석>

    /*한 줄 주석은 이렇게 씁니다.*/
    int x = 20;

     

    <꼬리 주석>

    int x = 20; /*꼬리 주석은 코드 뒤에 아주 짧은 주석이 필요할 때 사용합니다.*/

     

    <줄 끝 주석>

    //int x = 20;
    //한 줄 전체를 주석 처리하거나, 한 줄의 일부분을 주석 처리해야할 때 사용한다.

    3.7. 코드 작성 규칙

    소프트웨어를 개발할 때 개발자는 많은 시간과 노력을 투자한다. 그런데 소프트웨어 유지 보수는 해당 코드를 개발한 담당자가 맡지 않는 경우도 많아. 이때 코드 작성 규칙을 지키면, 해당 코드를 처음 보는 개발자라 하더라도 빠른 시간 안에 구조를 파악할 수 있다.

     

    코드 작성 규칙은 내용이 방대하고 해석하기에 따라 달라지기도 한다. 그래서 오늘은 몇 가지 규칙만 간단히 살펴 볼 것이다.

     

    1. 파일 확장자(filename extension)

    자바 소스 코드는 java, 빌드된 자바 바이트 코드는 class 확장자를 가진다.

     

     

    2. 들여쓰기(indentation)

    기본적으로 space 4번 or tab을 사용한다.

     

    3. 한 줄의 길이

    코드를 한 줄에 80자 이상 작성하는 것은 피한다.

     

    4. 줄 나누기

    하나의 식이 한 줄에 들어가지 않으면 다음 원칙에 따라 두 줄로 나눈다.

    • 쉼표 뒤에서 나눈다
    • 연산자 앞에서 나눈다
    longName1 = longName2 * (longName3 + longName4 - longName5)
        + 4 * longName6; //연산자 앞에서 나눔

     

    5. 선언문

    선언문은 #1처럼 한 줄에 작성하기보다는, #2처럼 한 줄에 하나씩 작성하기를 권한다. 그래야 나중에 주석을 작성하기가 편하다.

    // #1
    int level, size;
    
    // #2
    int level;
    int size

     


    셀프 체크 

    문제 조건)

    정수와 실수를 하나씩만 입력받아 두 수로 사칙연산을 수행하고 결과를 출력하는 코드를 작성하세요. 실행 결과는 덧셈과 나눗셈은 정수로, 뺄셈과 곱셈은 실수로 나오게 하세요.

     

    내가 짠 코드) - 정답이랑 거의 유사. 정답에서는 sub와 mul의 intNum에도 명시적 double 형변환을 해줬음. 나는 묵시적 형변환이 자동으로 되니깐 그냥 안 쓴거

     


    마무리

    1. 변수

    (1) 변수는 프로그램이 데이터를 저장하기 위해 할당받은 메모리 공간을 의미한다.

    (2) 변수는 "[자료형] [변수명];"과 같은 형식으로 만들며, 변수를 만드는 것을 변수를 선언한다고 한다.

    (3) 변수를 선언한 후 값을 넣어 저장하는 것을 초기화라고 한다.

    (4) 변수 선언과 동시에 초기화해도 되고, 나중에 따로 해도 된다. 단, 사용하기 전에는 반드시 초기화해야 한다.

     

    2. 자료형

    (1) 변수에 저장하는 값의 형태를 자료형이라고 한다.

    (2) 자바에는 8가지 기본 자료형이 있다.

    : 정수형 - byte(1바이트), short(2바이트), int(4바이트), long(8바이트)

    : 실수형 - float(4바이트), double(8바이트)

    : 문자형 - char(2바이트)

    : 논리형 - boolean(1바이트)

    (3) 기본 자료형 외에도 참조 자료형이 있다. String이 여기에 속하며, String은 문자열로 된 값을 표시할 떄 사용한다. 문자열은 자바에서 큰따옴표(")로 표시한다.

     

    3. 상수와 리터럴

    (1) 상수는 저장한 값이 바뀌지 않는 변수를 의미한다. 상수로 선언하려면 변수를 선언할 때 앞에 final 키워드를 붙인다.

     

    4. 연산자

    (1) 사칙 연산에 사용하는 연산자를 산술 연산자라고 한다.

    (2) + 연산자를 문자열에 사용하면 문자열을 하나로 연결하는 역할을 한다. 이때 숫자가 있다면 이 숫자는 문자취급된다.

     

    5. 형변환

    (1) 어떤 자료형의 값을 다른 자료형으로 바꾸는 것을 형변환이라고 한다. 형변환을 할 때는 바꾸려는 자료형을 소과로 안에 넣어 변수(또는 값) 앞에 붙이면 된다. 

    (2) 변환할 자료형을 정확히 표시해 형변환 하는 것을 강제 형변환 또는 명시적 형변환 이라고 한다. 명시적 형변환은 범위가 큰 자료형에서 범위가 작은 자료형으로의 변환이 가능하지만 일부 값이 손실될 수 있다.

    (3) 자료형을 명시하지 않아도 값의 범위를 파악해 자동으로 자료형이 바뀌는 것을 자동 형변환 또는 묵시적 형변환이라고 한다. 묵시적 형변환은 범위가 작은 자료형에서 범위가 큰 자료형으로의 변환만 허용한다.

     

    댓글