본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다
코딩/JAVA Basics

[자바 JAVA] 변수, 자료형, 연산자

by parzival56 2022. 11. 7.

<차례>

1. 자바의 프로그램 구조

2. 변수와 타입

3. 기본 입출력

4. 연산자

 

자바의 프로그램 구조

위 화면이 클래스를 생성하자마자 볼 수 있는 화면입니다. (출력문 제외)

우리가 입력하는 코드가 전체적으로 저장되는 방식을 생성한 Java Project 안에 있는 src라는 파일에 특정 패키지 안에 있는 클래스 안에 저장됩니다. 여기는 package가 default package라서 적혀있지 않지만 만약 package안에 class들을 넣어 깔끔하게 관리한다 할 때, 패키지 이름을 ABCD로 한다면 위 사진의 public class Hello 보다 위에 package ABCD가 자동으로 입력됩니다. 

여기서 public, static, class도 의미를 가지지만 지금은 살펴보지 않겠습니다.

 

위에 보이는 public static void main(String[] args){}가 main함수의 기본적인 형태입니다. 이는 클래스를 생성할 때 자동으로 입력이 가능하죠.

 

주석 같은 경우에는 한 문장만을 할 때는 ' // '로 여러 문장을 한꺼번에 처리할 때는 ' /* 주석 문장 전체 */ '로 합니다.

 

위는 자바 프로그램에서 기본적으로 특정 역할을 하게 설정한 예약어입니다. 예약어는 어느 것에도 이름으로 저장할 수 없습니다. (패키지, 클래스, 메서드, 변수 등)

 

다음은 대개 원할한 컴파일을 위한 관례입니다.

<Camel 표기법>

변수와 메서드는 모두 소문자로 표기. 단, 복합 단어일 때는 두 번째 단어부터 단어의 첫 자만 대문자로 표기

클래스와 인터페이스는 첫 자만 대문자로 표기하고 나머지는 소문자로 표기. 단, 복 합 단어일 때는 두 번째 단어부터 단어의 첫 자만 대문자로 표기

상수는 전체를 대문자로 표기. 단, 복합 단어일 때는 단어를 언더바(_)로 연결

 

변수

변수란? - 하나의 데이터를 담는 상자이다.

예를 들어 나의 나이를 나타내는 age라는 변수에 100을 담으면 일일이 100을 입력하지 않아도 age로 통용됩니다.

 

변수 선언

데이터 타입     변수 이름;

데이터 타입이란 설정할 변수가 숫자인지 문자인지, 숫자 중에서도 정수인지, 실수인지 등으로 세분화한 것을 말합니다.

데이터 타입을 설정하는 이유는 데이터 타입이 같은 변수끼리 묶어서 동시에 처리하거나 후에 조건을 걸 때 이에 필터링되지 않기 위해 등... 때문에 사용합니다.

자바의 데이터 타입

변수의 초기화

초기화 - 선언을 하면서 가장 기본으로 깔고 갈 값을 지정해주는 것

변수는 내가 직접 결과창에서 입력받지 않는 이상은 초기화를 시켜줘야 합니다. 내가 초기화를 하지 않은 변수를 아예 사용하지 않으면 오류가 나지 않겠지만 만약 이를 사용한다면 오류가 납니다. 

예를 들어 int value = 10; 이라고 초기화를 하였습니다. 그럼 value라는 변수에는 10이라는 값이 저장됩니다.

그러나 만약 이 밑에 int result = value + 5;이라는 변수를 새로 만든다고 할 때 10이라는 값을 설정하지 않았다면 result는 정의되지 않습니다. value에 들어갈 값이 없기 때문입니다.

 

final 자료형

final 자료형은 내가 설정한 특정 변수를 절대로 유지하고 싶을 때 사용합니다. 주로 자연법칙 속의 숫자들을 선언할 때 사용합니다. 예를 들어 수학의 PI는 3.14159...로 부르는데 이는 절대로 변하지 않습니다. 이러한 변수를 선언할 때 씁니다.

ex) final double PI = 3.14159;

 

 

타입 변환

- 원래 선언된 변수의 자료형과 다른 자료형으로 사용할 때 이를 변환해주는 과정

 

예를 들면 int형을 double형으로 변환해주는 과정이다.

타입 변환에는 자동 타입 변환인 promotion과 강제 타입 변환인 Casting이 있습니다.

 

자동 타입 변환은 실행문에서 서로 다른 데이터 타입이 나타날 때 발생하는데 여기서 자바 컴파일러는 가장 큰 데이터 타입으로 다른 모든 것을 통일시킵니다. 데이터 타입의 크기 순서는 byte < short < int < long < float < double입니다. 

double이 가장 큰 자료형이기 때문에 이로 예를 들어보겠습니다.

double d1 = 1;

위와 같은 형식으로 d1을 선언하면 1이 아니라 실수형인 1.0으로 자동으로 변형된다는 것입니다.

 

다음 강제 타입 변환은 캐스팅이라고도 많이 부르는데 이는 타입 변환 연산자를 사용하여 강제로 변환시키는 것을 의미합니다. 이는 자동 형 변환과 달리 특정 변수 부분만 변환을 시킬 수 있어서 많이 사용됩니다.

// 형태는 -> (작은 크기 타입)큰 크기 타입
//ex
double num = 3.14;
int num2 = 10;

System.out.print(num + num2);
System.out.print((int)num + num2);

밑에 2가지 출력문을 작성하였는데 첫 번째는 타입 변환을 하지 않은 상태입니다. 그러면 double과 int를 더하는 것이기 때문에 자동 타입 변환이 되어 num2의 10이 10.0으로 바뀌어 값은 13.14가 됩니다. 두 번째 출력문에서는 double형인 num을 더 작은 타입인 int로 강제 변환을 시켰기 때문에 num이 정수형인 3으로 바뀌게 되어 13이 출력됩니다.

 

기본 입출력

출력은 크게 3가지로 나뉩니다.

1. println() : 괄호 안의 내용을 출력한 후 자동으로 행을 바꾼다. 

원래의 경우에는 행을 바꾸기 위해서는 개행문자 \n을 사용합니다. 그러나 단순 출력을 할 시에는 println을 사용하여 행 바꿈까지 자동으로 합니다.

2. print() : 괄호 안의 내용을 출력만 합니다. (줄 바꿈 없음) 이 줄 바꿈도 없는 출력문을 사용하는 이유는 대개 입력문과 함께 사용하기 때문입니다. 예를 들어 어떤 정보를 입력하고 싶을 때 "정보를 입력하시오 : (입력)"처럼 가시적으로 잘 보이게 출력하는 것을 선호하는데 만약 여기에 println을 사용하면

정보를 입력하시오 : 
(입력한 문장)

처럼 한 문장이 띄워지고 입력이 되기 때문에 보통은 입력문과 함께 줄 바꿈이 없는 print를 사용합니다.

 

3. printf() : 포멧을 출력합니다. 포맷이라 함은 간단히 설명하자면 데이터 타입을 나타낼 때 줄여서 표현하는 방법입니다.

포멧 표

위가 포멧 표인데 보통 가장 많이 사용하는 것이 int형의 %d, double이나 float의 %f, character의 %c, String의 %s를 가장 많이 사용합니다. 

printf는 사용 방식이 많이 다릅니다.

int num1 = 10;
double num2 = 20;

System.out.println("첫 번째 수는 %d, 두 번째 수는 %f입니다.", num1, num2);

위와 같이 "" 안에 출력할 문장을 적고 변수로 선언된 것들은 모두 포맷 명시자로 적습니다. 그리고 ', '를 찍고 큰 따옴표 안에 적힌 포맷 명시자 순서대로 변수 이름을 적어줍니다.

System.out.println("첫 번째 수는 " + num1 + " 두 번째 수는 " + num2 + " 입니다.");

만약 println으로 위처럼 쓰려면 이렇게 출력문을 작성합니다. println으로 쓰면 한눈에 어디에 어떤 변수가 들어가는지 보이기 때문에 유용하지만 전 개인적으로 불편해서 printf를 많이 사용합니다. 

 

입력은 기본적으로 Scanner를 많이 사용합니다.

스캐너를 사용하기 위해서는 java.util이라는 곳에서 Scanner를 클래스로 들여와야 합니다.

들여오는 방법은 보통 코드 가장 위에 import java.util.Scanner;라고 써줍니다.

그리고 함수에 입력문을 사용하고 싶으면 각 함수마다(main, 따로 선언한 모든 메서드)

Scanner 객체명 = new Scanner(System.in); 을 써줍니다. 이를 써주는 이유는 이 긴 문장을 입력문을 쓸 때마다 쓰는 대신 '객체명'이라고 쓰인 것에 원하는 이름을 넣어 이 이름으로 입력문이 쓰이는 곳마다 이 이름만 써서 간편하게 써주기 위함입니다. 

입력문은 입력해줄 변수의 타입에 따라 달라지는데 int로 예를 들자면 int x = 객체명.nextInt();라고 써줍니다.

import java.util.Scanner;

class 이름{
	main함수~~~~~~~~~~~~~~~~~~~~~~~~~{
    	Scanner sc = new Scanner(System.in);
        
        System.out.print("숫자를 입력하시오 : ");
        int x = sc.nextInt();
        double y = sc.nextDouble();
        String z = sc.next();

입력문을 3가지 타입별로 입력해보았습니다. 각각 타입마다 next뒤가 해당 타입으로 바뀌는 거 외에는 없습니다.

 

연산자

연산자란 연산을 할 때 사용되는 기호를 말합니다.

연산자의 종류에는 위가 있는데 여기서 단항과 이항이란 항이 하나만 있어도 사용할 수 있냐, 아니면 a+b처럼 2개가 있어야 사용이 되냐의 차이입니다. 

간단하게 종류별로 말씀드리겠습니다.

1. 증감 연산자

주로 변수 a가 있을 때 a++, a--, ++a, --a로 씁니다. 이들을 전위와 후위 연산이라고 부르는데 이를 간단히 설명하자면 먼저 전위 연산은 a, b가 모두 3일 때

c = a++ + --b * a;
// a는 원래 a값인 3으로 처리하고 ++을 하여 1을 증가시킵니다. 
// b는 먼저 증감을 시키고 이 값을 b에 대입합니다.
// 마지막에 a는 앞에서 ++을 거친 a라서 증감된 a가 됩니다.

// 고로 c는 3 + 2 * 4이다

2. 산술 연산자

간단합니다. +,-는 제외하고 *는 곱하기, /는 나누기, % 는 나머지를 나타냅니다.

 

3. 비교 연산자

부등호 기호들은 제외하고, ==, !=와 instanceof가 있는데 이를 조심하셔야 합니다.

나중에 제어문에서 ==나 !=을 많이 사용할 것인데 ==은 앞과 뒤가 같다. !=는 다르다는 뜻입니다. 그러나 우리는 =이라는 기호를 같다고 씁니다. 여기서 =과 ==의 차이점은 =은 밑에 나오듯이 대입 연산자라서 특정 값을 특정 변수 등에 대입 즉, 같게 만드는 것입니다. 그러나 ==은 비교 연산자입니다. 즉, 앞과 뒤가 ' 같다면 '이라고 해석합니다. 그렇기에 값이 boolean으로 나옵니다. 예를 들어 x = 10은 그냥 x에 10을 대입하는 것입니다. 그러나 만약 위에 int x = 10;을 선언하고 밑에 x==20을 쓰면 x는 20이 아니기 때문에 False가 나옵니다.

instanceof도 마찬가지로 값이 boolean으로 나옵니다. 이는 보통 타입에 따라 분류하고 싶을 때 사용합니다. 예를 들어 변수가 int형일 때 이를 사용하여 true면 특정 문장을 수행하게 등으로 사용할 수 있습니다.

 

4. 논리 연산자

논리 연산자는 모두 결과가 boolean으로 나옵니다. 

먼저 &&는 영어 and의 의미입니다. 예를 들어 (a문장)&&(b문장) 일 때 a문장과 b문장이 모두 참이어야 true가 반환됩니다. 하나라도 거짓 일시 false가 반환됩니다.

그다음 ||은 키보드에서 backspace밑에 있는 원화 표시된 키를 shift와 누르면 나옵니다. (원화 표시가 \ 역슬래시) 이는 영어 or을 의미합니다. or은 뭐 아니면 뭐라는 뜻으로 a나 b 둘 중 하나가 참이면 true, 둘 다 거짓이면 false를 반환합니다. 만약 (a문장) || (b문장) 일 때 a문장이 참이라면 b문장은 아예 검사하지도 않고 true부터 반환합니다.(결과는 이미 참이니깐) 

! 는 앞과 뒤가 다르면 참 같으면 거짓이고 마지막은 잘 안 써서 모르겠네요...

 

5. 조건 연산자

조건 연산자는 후에 나오는 제어문에서의 if문을 간소화시킨 것입니다. 

위에 나온 것을 해석하면 (조건문)? (조건문이 참일 때 실행할 거) : (거짓일 때 실행할 거)입니다.

 

6. 대입 연산자

+=, -=, *=, /=만 살펴보겠습니다. 이들 모두 의미하는 바는 동일합니다. 

예를 들어 나는 이 변수에 100을 더한 값을 다시 저장하고 싶다고 할 때 위에서 본 바로는 

변수 = 변수 + 100이라고 쓸 것입니다. 그러나 이걸 변수 += 100으로 줄일 수 있는데 이것이 대입 연산자입니다.

-=, *=, /=는 수식 기호에 따라 사용하면 됩니다.

 

이상 자바에서의 변수와 자료형, 연산자에 대해 알아봤습니다. 

'코딩 > JAVA Basics' 카테고리의 다른 글

[자바 JAVA] 다형성  (0) 2022.12.05
[자바 JAVA] 상속  (0) 2022.12.05
[자바 JAVA] 클래스와 객체  (2) 2022.12.05
[자바 JAVA] 참조 변수, 문자열, 배열  (0) 2022.12.04
[자바 JAVA] 자바의 기초 상식  (0) 2022.10.21

댓글