[Java] 기초 문법

김제현·2024년 1월 6일

Java

목록 보기
1/13

변수 명명 규칙

  • 관례는 필수는 아니지만 관례가 사실상 규칙이다.

    1) 변수 이름은 숫자로 시작할 수 없다
    2) 이름에 공백이 들어갈 수 없음
    3) 자바의 예약어를 변수 이름으로 사용할 수 없다
    4) 변수 이름에는 영문자(a-z , A-Z ), 숫자(0-9 ), 달러 기호($ ) 또는 밑줄(_ )만 사용할 수 있다.

관례

소문자로 시작하는 낙타 표기법
변수 이름은 소문자로 시작하는 것이 일반적이다. 여러 단어로 이루어진 변수 이름의 경우, 첫 번째 단어는 소문자로 시작하고 그 이후의 각 단어는 대문자로 시작하는 낙타 표기법(camel case)를 사용한다. (예:
orderDetail , myAccount )

낙타표기법
낙타표기법(Camel Case)은 프로그래밍에서 변수, 함수, 클래스 등의 이름을 지을 때 많이 사용하는 표기법 중 하나이다. 이 표기법의 이름은 작성한 이름이 여러 단어로 구성되어 있을 때, 각 단어의 첫 글자가 대문자로 시작 하고, 이 대문자들이 낙타의 등봉처럼 보이는 것에서 유래했다. 낙타표기법을 사용하면 이름에 공백을 넣지 않고 도 여러 단어를 쉽게 구분할 수 있으므로, 변수의 이름을 이해하기 쉽게 만들어준다. 또한, 대부분의 프로그래밍 언어에서는 이름에 공백을 포함할 수 없기 때문에, 낙타표기법은 이런 제한을 우회하는 좋은 방법이다.

자바 언어 관례 정리
클래스는 대문자로 시작, 나머지는 소문자로 시작
자바에서 클래스 이름의 첫 글자는 대문자로 시작한다. 그리고 나머지는 모두 첫 글자를 소문자로 시작한다. 여기 에 낙타 표기법을 적용하면 된다. 이렇게 하면 모든 자바 관례를 다 외울 수 있다!
예시: 클래스는 첫 글자 대문자, 나머지는 모두 첫 글자 소문자로 시작 + 낙타 표기법
클래스: Person , OrderDetail
변수를 포함한 나머지: firstName , userAccount 여기에 예외가 딱 2개 있다.
상수는 모두 대문자를 사용하고 언더바로 구분한다. (상수는 뒤에서 학습) USER_LIMIT
패키지는 모두 소문자를 사용한다. (패키지는 뒤에서 학습) org.spring.boot

지역변수와 스코프

  • 지역 변수는 이름 그대로 특정 지역에서만 사용할 수 있는 변수라는 뜻으로 그 특정 지역을 벗어나면 사용할 수 없다. 여기서 말하는 지역이 바로 변수가 선언된 코드 블록 {} 이다. 지역변수는 자신이 선언된 코드 블록 안에서만 생존하고, 자신이 선언된 코드 블록을 벗어나면 제거된다. 따라서 이후에는 접근할 수 없다.
package scope;
 public class Scope1 {
     public static void main(String[] args) {
		int m = 10; //m 생존 시작 
        if (true) {
			int x = 20; //x 생존 시작
			System.out.println("if m = " + m); //블록 내부에서 블록 외부는 접근 가능 
        	System.out.println("if x = " + x);
		} //x 생존 종료
	//System.out.println("main x = " + x); //오류, 변수 x에 접근 불가
	System.out.println("main m = " + m); 
} //m 생존 종료

Scanner

  • System.out을 통해서 출력했듯이System.in 을 통해서 사용자 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 어렵다.
    자바는 이런 문제를 해결하기 위해 Scanner 라는 클래스를 제공한다. 이 클래스를 사용하면 사용자 입력을 매우 편리 하게 받을 수 있다.
package scanner;

import java.util.Scanner;
public class Scanner1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("문자열을 입력하세요:");
        String str = scanner.nextLine(); // 입력을 String으로 가져옵니다. System.out.println("입력한 문자열: " + str);
        System.out.print("정수를 입력하세요:");
        int intValue = scanner.nextInt(); // 입력을 int로 가져옵니다. System.out.println("입력한 정수: " + intValue);
        System.out.print("실수를 입력하세요:");
        double doubleValue = scanner.nextDouble(); // 입력을 double로 가져옵니다. System.out.println("입력한 실수: " + doubleValue);
    }
}

배열

  • 배열 변수를 선언한다고해서 아직 사용할 수 있는 배열이 만들어진 것은 아니다.
  • int[] students와 같은 배열 변수에는 배열을 담을 수 있다. 배열 변수에는 10, 20같은 값이 아니라 배열이라는 것을 담는다.
// 배열 변수 선언
int [] students;

// 배열 생성
students = new int [10];
  • new int[5]라고 입력하면 총 10개의 int형 변수가 만들어진다.
  • new int[5]라고 하면 그 내부값을 자동으로 초기화한다. 숫자는 0, boolean은 false, String은 null(없다는 뜻)으로 초기화된다.
int[] students = {90, 80, 70, 60, 50};

// 오류
int[] students;
 students = {90, 80, 70, 60, 50};

메서드

  • 자바는 항상 변수의 값을 복사해서 대입한다.
  • num1을 바꾸고 싶다면 return해서 넘긴 값을 대입해주면 된다.
package method;
public class MethodValue1 {
    public static void main(String[] args) {
        int num1 = 5;
        System.out.println("1. changeNumber 호출 전, num1: " + num1); 
        changeNumber(num1);
        System.out.println("4. changeNumber 호출 후, num1: " + num1);
    }
    
    public static void changeNumber(int num2) { 
    	System.out.println("2. changeNumber 변경 전, num2: " + num2); 
        num2 = num2 * 2;
        System.out.println("3. changeNumber 변경 후, num2: " + num2);
    } 
}

변수명 vs 메서드명

변수 이름은 일반적으로 명사를 사용한다. 한편 메서드는 무언가 동작하는데 사용하기 때문에 일반적으로 동사로 시작 한다.
이런 차이점 외에는 변수 이름과 메서드 이름에 대한 규칙은 둘다 같다.
변수명 예): customerName , totalSum , employeeCount , isAvailable
메서드명 예): printReport() , calculateSum() , addCustomer() , getEmployeeCount() ,setEmployeeName()

참고

김영한 - 자바입문

0개의 댓글