본문 바로가기

Study/Java

Java를 시작하기 전에

Java?


Java와 JavaScript

우선 자바는 썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어입니다. 흔히 헷갈릴 수 있는게 "자바스크립트 == 자바"로 생각하시는 분들이 간혹 있는데 전혀 다른 언어입니다.

물론 객체지향이라는 공통적인 특징을 갖긴하지만 객체지향 프로그래밍언어냐 객체지향 스크립트 언어냐의 극명한 차이가 있습니다.
그리고 자바는 JVM이라는 일종의 가상머신으로 실행되는 반면 자바스크립트는 웹 브라우저에 내장된 스크립트 엔진(인터프리터)으로 실행되게 됩니다.

이 밖에도 다양한 차이점이 있으며 직접 찾아보시는 것을 권장드립니다.

우선 우리는 개발환경을 구성하기 위해 Java를 설치해줘야 합니다.

Java의 작동방식

보통 이것을 설명할 때 C언어와 비교를 많이하는데, C언어는 개발자가 작성한 소스코드를 컴파일러에 넣고 기계어로 번역한 다음 실행해줍니다.

그에 반해 자바는 소스코드가 Java 컴파일러에서 한번 번역되어 바이트코드라는 .class 확장자를 가진 파일을 만들어주고 이 파일이 JVM이라는 JavaVirtualMachine이라는 가상 머신에서 돌아가게 됩니다.

소스 파일 자체는 인간이 알아보기 쉬운 언어로 작성이 되고 작성 후 컴파일러를 돌리면 클래스 파일이 만들어집니다.

개발 환경 세팅


brew로 자바 설치하기

저는 macOS를 사용하고 있기 때문에 Brew로 자바를 설치해주겠습니다.
우리가 설치할 자바의 버전은 8버전입니다. 참고하세요!

터미널을 열어줍니다. 그리고 Brew를 최신버전으로 업데이트 시켜줍시다! 다음 명령어를 입력해주세요!

brew update

이미 최신버전이기 때문에 별다른 진행이 보이진 않습니다.

자 그러면 adoptopenjdk/openjdk를 추가해주겠습니다. 다음 명령어를 입력해주세요!

brew tap adoptopenjdk/openjdk

이 명령어를 입력하고 return(enter)키를 눌러도 별다른 반응은 없을겁니다.

우리는 8버전을 설치할 것이기 때문에 다음과 같이 입력해줍시다!

brew install --cask adoptopenjdk8

뭔가 엄청난것들이 지나가면서 설치가 되고 있을겁니다!

설치가 완료되었다면 터미널에 java -version을 입력후 엔터를 눌러 설치여부를 확인하세요!

환경변수 세팅하기

자바를 설치하였다면 이제 환경변수를 세팅해줘야 합니다.
환경변수는 이클립스(자바 통합개발환경) 사용 시 Java가 설치된 위치를 알려주기 위해 필요한 것입니다!
JAVA_HOME_PATH를 세팅해주는 과정인데 이를 하지 않으면 이클립스 사용 시 문제가 발생할 수도 있다고 하여 진행해 주는 편이 좋습니다.

우선 Finder를 열어줍시다.
그리고 아래 경로로 이동하시면 Java가 설치되어 있는 것을 보실 수 있습니다!

/Library/Java/JavaVirtualMachines

우리는 adoptopenjdk-8.jdk을 brew로 설치하였기 때문에 adoptopenjdk-8.jdk라는 폴더가 있을겁니다!

자 설치되어 있는걸 확인하셨다면, 터미널에서 저 폴더 내부에 있는 Home 디렉터리까지 접근해주겠습니다.

아마 설치 위치를 다르게 잡으셨다면 다른 디렉터리에 설치되어있을 수 있으니 꼭 확인하시고 저와 같은 위치라면 저를 따라서 하셔도 됩니다.

cd /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

위의 명령어를 복붙하고 엔터를 누릅니다.

Home 디렉터리까지 접근 하셨다면 vi ~/.bash_profile을 입력하고 엔터를 눌러줍시다!

이런 화면이 보일겁니다.

하단에 보시면 저는 이미 JAVA_HOME을 지정해주었기 때문에 이미 exists되었다고 나옵니다...

알파벳 o를 입력하고 엔터키를 누릅니다.

그리고 다음과 같이 입력해줍시다!

export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin

그리고 esc를 눌러 INSERT 모드를 나와줍니다!

:wq(:wq! 일수도 있음)로 문서에서 나와줍니다.

그리고 vi ~/.zshrc를 입력하여 위와 같은 방법으로 세팅해줍니다.

그리고 나서 source ~/.bash_profile를 입력하고 엔터키를 눌러 bash_profile 파일의 환경변수 설정을 반영해줍니다.

마찬가지로 source ~/.zshrc를 입력하고 엔터키를 눌러 zshrc 파일의 환경변수 설정을 반영해줍니다.

이렇게 하면 환경변수 세팅이 끝납니다!

Eclipse 설치하기


다운로드를 받아주세요!

아래 링크로 들어가시면 이클립스 공식 홈페이지가 나옵니다.
https://www.eclipse.org/downloads/

운영체제에 맞게 다운로드를 받아주세요!

위 사진과 같은 컨텐츠가 보이면 Download Packages를 눌러주세요.

우측에서 자신의 운영체제에 맞는 파일을 받아 설치해주세요!

설치가 다 되었다면 프로그램을 실행시켜 줍니다.

Eclipse 초기 설정

우선 처음 이클립스를 실행하시면 이런 화면이 뜰겁니다. 작업폴더를 지정해 주는 것인데 기본적으로는 eclipse-workspace라는 디렉터리가 생성이 되고 그 디렉터리가 default로 작업폴더가 될겁니다.

만약 본인이 다른 디렉터리에서 작업하고 싶으시다면 Browse를 눌러 해당 경로를 지정해주시고 매번 작업 디렉터리를 묻는 상자가 보기 싫으시다면 체크박스(Use this as the default and do not ask again: 이걸 디폴트로 쓸거니까 다시 물어보지마!!)를 체크한 후 Launch를 눌러줍니다.

실행이 되면서 대략 아래와 같은 화면이 보일겁니다

우선 새로운 프로젝트를 생성하는 방법을 알아보겠습니다.
좌측 상단을 보시면

이렇게 생긴 녀석이 있습니다. 저 중에서 Create a Java project를 눌러주시면

이런 화면이 나올겁니다.

저는 Project Name을 우선 HelloWorld로 지정해주었습니다.
Project Name을 정했다면, Finish를 눌러줍니다.

그러면 모듈을 지정하라는 창이 나옵니다.

우선 모듈 없이 할 것이기 때문에 Don't Create를 눌러줍시다!

그러면 왼쪽 작업트리에 우리의 프로젝트가 생긴 것을 볼 수 있습니다.

우리는 클래스 파일을 하나 만들어주겠습니다. 작업트리의 HelloWorld에 오른쪽 마우스를 클릭하면 다음과 같이 나타납니다. New -> Class를 선택해주세요.

그럼 클래스를 생성할 수 있는 화면이 나옵니다.

여기에서 Name을 MainClass로 지정해주고 Finish를 눌러주겠습니다.

그리고 조금 기다리면 이런 화면이 나올 것입니다.

우리는 자바로 개발할 환경을 다 갖춘 것입니다.

Hello World 출력해보기


Java의 코드 구성은 어떻게 되어 있을까?

다음과 같이 코드를 작성해줍시다!

public class MainClass {
  public static void main(String[], args) {
    System.out.println("Hello World!");
  }
}

조금 복잡하게 생겼는데 분해하면서 이해해보겠습니다.
public은 나중에 배울 접근 제어자(?)라고 불리는 녀석인데 자바에는 변수나 함수, 클래스에 접근을 못하게 막는 문법이 있다고 들었습니다.
그러한 목적으로 선언해주는 녀석인데 public접근권한의 제어가 없음을 나타냅니다.

그 다음은 클래스임을 알려주는 class가 붙었고 좀 전에 우리가 지정해준 클래스의 이름인 MainClass가 보입니다.

그 다음으로 static은 정적함수임을 나타냅니다. static으로 함수나 클래스를 선언하는 경우 해당 객체는 자바가 컴파일되는 순간 정의되게 됩니다.

voidreturn 값이 없음을 나타내줍니다. 호출되는 함수가 종료된 후 호출한 부분으로 이동합니다. 자료형에 대해 조금 뒤에서 다룰 것이지만 이 자리에 int를 넣어주면 함수가 처리된 후에 정수형 값을 return해 줄 것이란 의미가 되고 String이 들어가면 문자열을 return해 주겠다는 의미가 됩니다.

그 다음으로 String[], args에서 String도 클래스인데 문자열 그러니까 우리가 출력할 Hello World!String이라는 클래스로 정의하여 []배열을 만들어 일정 공간에 넣어주겠다는 의미입니다.
args는 단순한 변수명이므로 아무 변수명이나 들어가도 무방합니다.

대망의 System.out.println("Hello World!")이 바로 Hello World!를 출력해주는 녀석입니다.

기본적인 틀은

public class MainClass {
  public static void main(String[], args) {
    // 여러가지 문장들
  }
}

이라고 보시면 되겠습니다.

그러면 다양한 문장들을 출력해보겠습니다.

  1. 안녕하세요?
  2. 즐거운 월요일입니다.
  3. 만나서 반갑습니다!

어떻게 하면 될까요?

public class MainClass {
  public static void main(String[], args) {
    System.out.println("안녕하세요?");
    System.out.println("즐거운 월요일입니다.");
    System.out.println("만나서 반갑습니다!");
  }
}

이렇게 해주고 run을 하면 console에 메시지가 출력됩니다!

printf란?

python을 다뤄보신 분이라면 print() 함수의 역할을 알고 있을 것입니다. 그리고 우리가 조금전까지 사용한 메시지를 출력해주는 함수는 println()이었습니다.
그렇다면 printf()는 무엇일까요? f는 format 즉 형식에 관한 것입니다.

예를 들어 아래와 같은 코드를 입력한다면,

System.out.printf("%d", 123);

%d는 decimal 즉 10진수의 정수형을 의미하고 123을 입력하면 바로 출력해줍니다.

그렇다면 decimal과 메시지를 한번에 출력할 수 있을까요?
네, 가능합니다.

System.out.printf("%d %s", 123, "성공을 기원합니다!");

이렇게 deximal과 string의 형태를 취해준 후 출력해주면 정상적으로 출력이 될 것입니다!

참고적으로 문장이 끝나면 반드시 세미콜론이 들어가는 규칙이 있습니다. 세미콜론이 들어가지 않으면 컴파일 에러를 일으키니 주의하세요!

escape sequence란?

escape는 말그대로 탈출을 의미합니다.
프로그래밍 언어를 접해보신 분들이라면 알고 있는 사실이지만 큰 따옴표안에 큰 따옴표를 그냥 입력하는 것은 불가능(?)하다고 볼 수 있습니다.

예를 들어

System.out.println(""즐거운 하루"");

위와 같은 입력은 틀린 입력입니다. 우리가 println()로 문자열을 출력하기 위해 괄호 안에 따옴표를 넣어준다는 것은 알겠습니다. 그렇다면 따옴표까지 출력하려면 어떻게 해야 할까요?

이 때 바로 escape sequence를 쓰는 것입니다.
위에서 예시로 들었던 문장을 따옴표까지 출력하게 하려면 이렇게 입력해야 합니다.

System.out.println("\"즐거운 하루\"");

그 밖에도 개행(Enter), (백슬래쉬), 탭, 작은따옴표, 백스페이스도 마찬가지 입니다. 표로 정리해보겠습니다.

구분 의미 예시
\n 개행 println("안녕하세요. \n 반갑습니다.");
\" 큰 따옴표 println("제 이름은 \"기무라 타쿠야\" 입니다.");
\' 작은 따옴표 println("제 이름은 \'아오조라 미키\'입니다.");
\t println("지금 무엇을 \t 하고 있나요?");
\b 백스페이스 println("Hello")
print("\b")
println("World!")
이 들의 공통점은 모두 문자열 안에서 작동한다는 것임을 잊지마세요!

자료형


자바에는 숫자, 문자, 문자열, 논리값이라는 자료형이 존재합니다. 선언을 해줄 때 기본적으로는 자료의 변수명 = 자료의 형태로 담깁니다.

보통 다음과 같은 방식으로 선언합니다.

int i;
i = 10;

우선 숫자부터 살펴보도록 하겠습니다.

숫자 자료형

숫자 자료형에는 크게 정수형과 실수형이 있습니다.
정수형은 말 그대로 n이 자연수일 때 n + x = 0의 꼴을 취하는 수를 말합니다.
단, 이 정수를 나타낼 수 있는 범위가 존재하는데 표와 같습니다.

정수형 숫자

구분 의미 표시 범위
byte 1byte로 나타낼 수 있는 수(8bit) 0000 0000 ~ 1111 1111(단 맨 앞 숫자는 부호비트)
-128 ~ 127까지 표현 가능
short 2byte(16bit)의 크기를 가진 정수 자료형 -32786 ~ 32767
int 4byte(32bit)의 크기를 가진 정수 자료형 232개의 자료 저장 가능. 보편적으로 많이 쓰임
long 8byte(64bit) 숫자가 매우 커서 생략

생각해보기

1비트에는 0과 1, 두개의 숫자를 저장할 수 있습니다.
1비트 = (0), (1)
2비트 = (0, 0), (0, 1), (1, 0), (1, 1)
3비트 = (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 1, 0), (1, 0, 1), (1, 1, 1)

이처럼 n비트는 2n만큼 값을 저장합니다.

8비트의 경우 28만큼 값을 저장하는데, 2의 8제곱은 256이며 이 말은 256개의 정보를 저장할 수 있다는 뜻입니다.

256개 중 반절은 음수, 나머지는 0과 양수를 맡게 됩니다. 그래서 -128부터 -1까지, 0, 1부터 127까지 갖는 것입니다.

그래서 byte에는 -128부터 127을 줄 수 있게 되며 -128 미만이거나 127 이상인 수를 넣었을 때 컴파일 에러를 보여줍니다.

short는 어떨까요?
표에서 말씀드린대로 short는 2바이트, 즉 16비트만큼 값을 저장합니다. 이 말은 216개 즉 65536개의 정보를 담을 수 있으며 마찬가지로 절반에 해당하는 32768개의 음수와 32767개의 양수, 0을 갖게 됩니다.

intlong도 마찬가지입니다. 우리가 일상적으로 많이 사용하는 것은 int라고 보시면 될 것 같습니다.

long을 쓸 때 주의사항도 있습니다!

long a;
a = 4325655645324432;

라고 선언하게 되면 Java는 aint로 생각하고 연산하기 때문에 반드시 숫자뒤에 L을 붙여 long임을 알려주어야 합니다.

그래서 위의 예시를 바르게 쓰면

long a;
a = 4325655645324432L;

입니다.

실수형 숫자

실수형에는 floatdouble이 있습니다.
두개의 차이는 float는 4byte 자료형이고, double은 8byte 자료형이라는 것입니다.

정수형의 long과 마찬가지로 float을 쓸 때도 뒤에 F를 붙여주어야 합니다.

float f;
f = 123.45678F;

double d;
d = 12.3456789;

문자, 문자열

문자와 문자열을 별개로 보는 이유는 문자는 말그대로 한글자를 의미합니다. A, B, C, D 처럼 각각의 알파벳(또는 한글문자) 한 글자를 담는 자료형이 있고, 한 단어 이상으로 이루어진 문자열을 담는 자료형도 있습니다.

구분 의미 예시 크기
char 문자 한 글자 char a = 'A' 2byte
String 문자 여러자 String b = 'Hello!' ?

사실 String은 자료형이 아니라 wrapper class라는 녀석인데 클래스를 다룰 때 더욱 자세하게 보겠습니다.

이것은 자료형을 선언해주는 녀석이 아니라 클래스입니다!

// 예시
char c;
c = 'A';        c = 'b';
c = '+';        c = '한';

String str;
str = "Hello World!";

논리값

논리값은 오직 truefalse만 존재합니다. 간혹 0, 1로 true, false를 구분하는 프로그래밍 언어가 있는데 자바에서는 아쉽게도(?) 0, 1로 구분할 경우 컴파일 에러를 토해냅니다.

다음과 같이 사용할 수 있습니다.

boolean b;
b = false;

Java에서 입출력(Input, Output) 받기

자바에서의 입출력에 대해 알아보겠습니다.

우선 입력을 받기 위해 특별한 장치(?)가 필요합니다. Scanner라는 녀석인데 이 녀석을 불러와서 사용할 것입니다.

public class MainClass {
  public static void main(String[], args) {
    // 여러가지 문장들
  }
}

이 틀 위에 import를 해 줄 것입니다.
맨 윗줄에 다음 문장을 추가해주세요.

import java.util.Scanner;

그런데 굳이 추가하지 않더라도 MainClass 안에서 Scanner를 쓰게 되면 자동으로 추가 될겁니다.

import java.util.Scanner;

public class MainClass {
  public static void main(String[], args) {
    // 여러가지 문장들
  }
}

이렇게 생긴 형식이 갖춰졌음을 가정하고 소스코드를 작성해보겠습니다.

우선 샘플 1번입니다.

import java.util.Scanner;

public class MainClass {
  public static void main(String[], args) {

    Scanner scan = new Scanner(System.in);

    int iNumber;
    System.out.print("정수 = ");
    iNumber = scan.nextInt();
    System.out.println("입력받은 수: " + iNumber);
  }
}

편의상 public static void... 블록 내부만 숫자를 세겠습니다.

첫번째 줄에는 import한 Scanner를 쓸 수 있도록 객체를 만들어주었습니다.

두번째 줄에 int 정수형 자료의 변수로 iNumber를 선언해 주었습니다.

세번째 줄에서 어떤 정수 값을 입력 받습니다.

scan의 메서드로 nextInt()를 써서 다음 토큰을 정수형으로 리턴 해줍니다. 이것을 변수 iNumber에 저장하였습니다.

마지막으로 입력받은 수를 텍스트로, 변수 iNumber를 그대로 출력해주었습니다.


두번째 예시입니다.

import java.util.Scanner;

public class MainClass {
  public static void main(String[], args) {

    Scanner scan = new Scanner(System.in);

    double dNumber;
    System.out.print("실수 = ");
    dNumber = scan.nextDouble();
    System.out.print("입력받은 수: " + dNumber);
  }
}

마찬가지로 첫째 줄에는 import한 Scanner를 사용하기 위해 객체를 만들어 주었습니다! 추가적으로 System.in은 키보드 입력값을 읽고 원하는 타입으로 변환하여 리턴해주는 역할을 합니다.

두번째 줄에 변수 dNumber를 8byte 실수 자료형인 double로 선언했습니다.

세번째 줄에서 어떤 실수 값을 입력 받고,

네번째 줄에서는 입력 받은 값을 변수 dNumber에 저장해주었습니다. 다음 토큰을 double 8byte 실수 자료형으로 리턴해줍니다.

입력 받은 수를 출력해주었습니다.


세번째 예시입니다.

import java.util.Scanner;

public class MainClass {
  public static void main(String[], args) {

    Scanner scan = new Scanner(System.in);

    boolean b;
    System.out.print("True of False? = ");
    b = scan.nextBoolean();
    System.out.println("논리형: " + b);
  }
}

마찬가지로 첫번째 줄에 Scanner 객체를 만들어주었습니다.

두번째 줄에서 이번에는 변수 bboolean임을 선언해주었습니다.

세번째 줄에서 TrueFalse를 입력받습니다.

네번째 줄에서 다음 토큰을 boolean 자료형으로 리턴해주는 nextBoolean()메서드를 변수 b에 선언해 주었습니다.

마지막 줄에 출력해줍니다.


마지막 예시입니다.

import java.util.Scanner;

public class MainClass {
  public static void main(String[], args) {

    Scanner scan = new Scanner(System.in);

    String str;
    System.out.print("string = ");
    str = scan.next();
    System.out.println("입력된 문자열: " + str);
  }
}

역시 Scanner 객체를 만들어주었습니다.
변수 strString 클래스입니다.
임의의 문자열을 입력 받습니다.
변수 str에 다음 토큰을 문자열로 리턴하는 메서드 next()를 넣어주었습니다.
출력을 받습니다.

그런데 한가지 이상한 사실은 마지막 코드의 입력값으로 "Hello World!"를 받으면 "Hello"까지 밖에 출력이 안된다는 것입니다.

Hello World!에는 띄어쓰기가 있기 때문인데요. 아래를 봐주세요.

문장을 입력받아 출력하고자 할 때 소스코드 입력 상의 주의가 필요합니다.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class MainClass {
  public static void main(String[], args) {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String str;
    System.out.print("string = ");
    str = br.readLine();
    System.out.println("입력된 문자열: " + str);
  }
}

Scanner는 띄어쓰기와 개행을 경계로 입력값을 인식하기 때문에 띄어쓰기가 들어가면 이 이후는 출력되지 않습니다.
그렇지만 BufferedReader를 사용하면 개행만 경계로 인식하고 나머지는 문자열로 고정하기 때문에 띄어쓰기를 해도 문장이 출력되게 되는 것입니다.

우선 오늘 내용은 여기까지입니다. 이 내용을 바탕으로 과제를 해결해봅시다.

Homework

부여받은 과제를 해결해보겠습니다.

과제1

과제1. 다음과 같이 출력되는 프로그램을 작성하시오.

척하면 척입니다! 단순 출력문제입니다.

public class MainClass {
  public static void main(String[], args) {

  System.out.println("=======================================")
  System.out.println("| 이름   나이    전화번호          주소     |");
  System.out.println("=======================================");
  System.out.println("| 홍길동  20    010-111-2222    경기도    |");
  System.out.println("| 일지매  18    02-123-4567     서울     |");
  System.out.println("=======================================");
  }
}

과제2

다음과 같이 출력되는 프로그램을 작성하시오.

우선 출력할 때 따옴표 안에 역슬래시가 들어간다는 점과 따옴표(큰, 작은 따옴표)가 들어간다는 것에 유의하여 작성해야 합니다.
그리고 칸 띄움이 많아서 최대한 예쁘게 맞춰보려고 탭(\t)도 넣어주겠습니다.

public class MainClass {
  public static void main(String[], args) {

   System.out.println("========================================");
   System.out.println("\\ name   age phone         address     \\");
   System.out.println("========================================");
   System.out.println("\\ \"홍길동\" 20  010-111-2222 \'경기도\'\t\\");
   System.out.println("\\ \"일지매\" 18  02-123-4567  '서울\'  \t\\");
   System.out.println("========================================");
  }
}

과제 3

과제3. 다음과 같이 출력되는 프로그램을 작성하시오. (변수 사용)

2번과 비슷한 케이스지만 변수를 선언해주어야 한다는 점에서 다릅니다.

public class MainClass {
  public static void main(String[], args) {

    String name1;        String name2;        String name3;
    int age1;            int age2;        int age3;
    boolean gender1;        boolean gender2;    boolean gender3;
    String phone1;        String phone2;        String phone3;
    double h1;            double h2;            double h3;
    String addr1;        String addr2;        String addr3;

    // 변수마다 값을 선언
    name1 = "홍길동";        name2 = "일지매";        name3 = "장옥정";
    age1 = 20;            age2 = 18;            age3 = 14;
    gender1 = true;        gender2 = true;        gender3 = false;
    phone1 = "010-111-2222";    phone2 = "02-123-4567"; phone3 = "02-345-7890";
    h1 = 175.12;        h2 = 180.01;        h3 = 155.78;
    addr1 = "경기도";        addr2 = "서울";        addr3 = "부산";

    System.out.println("=================================================================");
    System.out.println("\\\tname\tage\tgender\tphone\t\theight\taddress\t\\");
    System.out.println("=================================================================");
    System.out.println("\\\t" + "\"" + name1 + "\"\t" + age1 + "\t" + gender1 + "\t" + phone1 + "\t" + h1 + "\t" + "\"" + addr1 + "\"" + "\t" + "\\");
    System.out.println("\\\t" + "\"" + name2 + "\"\t" + age2 + "\t" + gender2 + "\t" + phone2 + "\t" + h2 + "\t" + "\"" + addr2 + "\"" + "\t" + "\\");
    System.out.println("\\\t" + "\"" + name3 + "\"\t" + age3 + "\t" + gender3 + "\t" + phone3 + "\t" + h3 + "\t" + "\"" + addr3 + "\"" + "\t" + "\\");
    System.out.println("=================================================================");
  }
}

문제4

import java.util.Scanner;
public class MainClass {
  public static void main(String[], args) {

    Scanner scan = new Scanner(System.in);

    String name;
    System.out.print("이름은? ");
    name = scan.next();
    System.out.println("이름은" + name + "입니다!");

    int age;
    System.out.print("나이는? ");
    age = scan.nextInt();
    System.out.println("나이는" + age + "세 입니다!");

    String gender;
    System.out.print("성별은? (man 또는 woman) ");
    gender = scan.next();
    System.out.println("성별은" + gender + "입니다!");

    String phone;
    System.out.print("전화번호는? (하이픈 포함) ");
    phone = scan.next();
    System.out.println("전화번호는" + phone + "입니다!");

    double h;
    System.out.print("키는? (cm단위로, 소수점 둘째 자리까지) ");
    h = scan.nextDouble();
    System.out.println("키는" + h + "cm입니다!");

    String addr;
    System.out.print("사는 곳은? (시/도만 입력) ");
    addr = scan.next();
    System.out.println("사는 곳은" + addr + " 입니다!");
    System.out.println();
  }
}

문제5.

우선 정수 xy를 각각 선언해주고 한 녀석을 치환해줄 변수를 하나 만들어줘야 합니다.

public class MainClass {
  public static void main(String[], args) {

  int x, y;

  int temp;

  x = 1;
  y = 2;

  temp = x;
  x = y;
  y = temp;

  System.out.println("x = "+ x + " y= " + y);
  }
}

치환할 변수에 x의 값을 복제해주고 x = y라면 x = 2가 되겠죠?
y = temp를 해주면 y에는 원래의 x값이 들어가게 되는 구조입니다.

어떠셨나요? 저도 오늘 자바가 첫시간이라 엄청 머리아팠는데 정리를 하고 나니 조금 더 기억에 남는 것 같습니다.

내일 또 기대해주세요~

'Study > Java' 카테고리의 다른 글

Java : 오버로드, 예외처리, 파일입출력  (0) 2022.02.16
Java : 함수  (0) 2022.02.16
Java : Wrapper Class와 정렬 기본  (0) 2022.02.16
반복문과 제어자  (0) 2022.02.16
Java : cast변환, 연산, 조건문과 반복문  (0) 2022.02.16