컴공선배_22Days 챌린지 2일차

아사비치즈스틱·2022년 2월 22일
0

Title

💡 변수 / 상수 / 자료형 / 특수문자 + 백준 문제 풀이

❤️‍🔥변수


💡 변수(Variable)이란 (숫자나 문자와 같은) 데이터를 담는 상자이다, 값이 변한다.

  • 변수에 있는 값(데이터) 다른 값(데이터)로 변경할 수 있다.

다음 아래와 같이 값을 변경할 수 있다.

ex)

(변경전) eggs의 15 → (변경 후) 20

(변경전) fizz의 10 → (변경 후 ) 10

💡 결론적으로 변수는 “데이터를 담는 상자이며 이 상자에 넣는 값(데이터) 우리가 원할때 마다 변경할 수 있다.

다음을 통해 변수의 선언, 변수의 필요성에 대하여 살펴 보자!

⁉️ 변수는 왜 필요할까?


출력1

System.out.println(100 + 10); //출력값 = 110
System.out.println((100 + 10) / 10); // 출력값 = 11
System.out.println(((100 + 10) / 10) - 10); //출력값 = 1
System.out.println((((100 + 10) / 10) - 10) * 10); //출력값 = 10

출력2

int a = 100;
System.out.println(a + 10); //출력값 = 110
System.out.println((a+ 10) / 10); // 출력값 = 11
System.out.println(((a + 10) / 10) - 10); //출력값 = 1
System.out.println((((a + 10) / 10) - 10) * 10); //출력값 = 10
💡 결론부터 말하자면 다음의 두개의 코드는 모두 동일한 값을 출력한다.

❓만약 100을 모두 90으로 변경해야 한다면?

출력1의 경우

  • 모든 100을 90으로 변경해야 한다.

ex) 모든 100을 90으로 변경

출력2의 경우

  • 변수a라고 선언된 값을 90으로 변경하면 된다.

ex) (변경 전)int a = 100 ⇒ (변경 후)int a = 90

이로 인해 우리는 변수를 사용하면 우리가 원하는 데이터 값이 변할 때마다

손쉽게 변경하여 사용할 수 있다.

💡 결론:변수는 우리가 원하는 값을 쉽게 넣고 변경할 수 있어 코드의 재활용을 높혀준다.

참고 자료: https://opentutorials.org/course/1223/5293

⁉️ 변수의 선언


  • 변수 선언은 2가지 방법이 있는데 다음과 같다.
💡 1. 변수를 생성한 후 값을 넣는 방법(변수를 선언한 후 값을 할당)
💡 2. 변수의 생성과 같이 값을 넣는 방법 (선언과 동시에 값을 할당)
//case 1)
int a; //변수 a를 생성한다.
a = 1;  // 변수 a에 1이라는 값을 넣는다.
System.out.println(a+1); // 출력값: 2

//case 2) 
int b = 2; //변수 b를생성하고 2라는 값을 넣는다.
System.out.println(b+1); // 출력값: 3

⏰변수를 생성한 후 값을 넣는 방법(변수를 선언한 후 값을 할당)


case1의 과정이다.

  1. 먼저 변수 a라는 값을 선언한다.
  2. 변수 a에 1이라는 값을 넣는다.

⏰변수를 생성과 같이 값을 넣는 방법 (선언과 동시에 값을 할당)


case2과정이다. (보통 변수의 초기화라고 부른다.)

  1. 변수 b를 생성하면서 값을 2로 지정한다.

🏠 변수 선언을 뜯어보자, 변수 선언은 어떻게 구성되어 있을까?


  • 변수의 선언은 다음과 같이 되어 있다.

1. 자료형

💡 변수 값의 종류에 따라 자료형이 달라진다.

2. 변수명

💡 선언된 변수의 이름이다.

3. 변수값

💡 변수에 넣을 값을 의미한다.

❤️‍🔥자료형(데이터 타입)


💡 JAVA의 변수는 데이터 타입마다 달라지며 엄격하게 자료형(데이터 타입)을 구분한다!

자바의 변수의 잘못된 변수에 따른 실행 오류

다음은 자바의 데이터 타입의 잘못된 구분에 따른 실행 오류의 예시를 보여준다.

문자와 문자열을 구분하지 못한 경우, 정수와 상수를 구분하지 못한

case1) “문자열”과 “문자”를 구분하지 못한 경우

//정상 출력
System.out.println("코딩선배"); //출력 가능, 출력값: 코딩 선배
System.out.println('코'); // 출력 가능, 출력값: 코

//오류
System.out.println('코딩선배'); //출력 불가능, 오류 발생

//정상 출력
System.out.println("생"); //출력 가능, 출력값: 코
💡 자바에서의 문자는 한 문자를 의미하며 데이터 타입은 char으로 정의, 출력할때는 작은 따옴표( ‘ ‘ )를이용한다. 💡 자바에서의 문자열은 여러개의 문자가 결합한 것을 의미하며 데이터 타입은 String으로 정의, 출력할때는 (” “)을 이용한다.

마지막 예시에서 다음과 같은 궁금점이 들 것이다.

문자열은 마지막 예시 처럼 (“ “)출력이 되는데?

💡 자바의 문자열은 한 문자라도 (” “)으로 출력되거나 String으로 선언되면 문자열로 인식하여 내부에서 처리한다!!

case2) “정수”과 “실수”를 구분하지 못한 경우

//정상 출력
int a = 1; //정수 값
System.out.println(a); //출력 가능, 출력 값: 1

//오류
int b = 2.5;
System.out.prinltn(b); //출력 불가능

//정상 출력
double c = 3.5; //실수 값
System.out.println(c); //출력 가능, 출력 값:3.5
💡 자바에서의 정수는 byte,short,int,long형으로 구분되며 이에 맞는 자료형을 사용해야 한다.

정수와 실수란?

💡 정수 = - 3, -2, -1, 0, 1 ,2 ,3 처럼 소수점이 없는 수 💡 실수= -1, -0.1 ,0, 0.1, 0.01, ....., 1 처럼 소수점이 있는 수
  • 다음의 사진처럼 정수보다 실수가 더 큰 개념이다!!

참고 자료: https://mathbang.net/258

💡 자바에서의 자료형(데이터 타입)은 다음과 같이 구분된다!

정수형

타입내용표현 범위
byte1byte-128 ~ 127
short2byte-32,768 ~ 32,767
int (기본)4byte-2,147,483,648~2,147,483,647
long8byte-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

실수형

타입내용표현 범위
float4byte±(1.40129846432481707e-45 ~ 3.40282346638528860e+38)
double (기본)8byte±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d)

문자형(한 글자, 출력형태(’ ‘))

타입내용표현 범위
char2byte모든 유니코드 문자

문자열(여러 글자, 출력형태 (” “ ) )

타입내용
string12byte

논리형(true 또는 false 값)

  • 참, 거짓의 값을 갖는 자료형
  • 대입되는 값은 참(true) 또는 거짓(false)만 가능하다.
타입내용
boolean1byte
boolean boolean2 = false; 
boolean boolean3 = true;

참고 자료: https://stanleykou.tistory.com/entry/Java-기본-데이터-타입

❤️‍🔥변수명(변수 이름)


  • 변수를 작성할때에는 일정한 규칙이 존재한다.

💓 1. 변수의 이름은 대소문자를 구분한다.


다음의 예시를 살펴보자

int a = 10;
System.out.println(a); //출력 값 = 10

int A = 20;
System.out.println(A); //출력 값 = 20
  • int a와 int A는 서로 다른 변수로 인식된다.

💓 2. 변수의 이름은 _(언더바)와 $ 문자 이외의 특수 문자는 사용할 수 없다.


💓 3. 자바의 키워드는 변수명으로 사용할 수 없다.


💡 키워드 = 자바에서 특정 목적으로 사용하기 위해 정의한 예약어 이며 소문자로 되어 있다.
  • 다음과 같은 글자는 키워드로 정의되어 있다.

abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while

참고 자료: https://wikidocs.net/277

❤️‍🔥변수값


💡 선언된 변수에 넣을 값을 의미한다.
 int number = 30; //변수 number에 넣을 값인 30이 변수값을 의미한다.

❤️‍🔥상수


💡 상수란 항상 같은 수, 변하지 않는 수를 의미한다. 변수랑 정 반대의 개념이다!
  • 다음의 그림을 살펴보자
  • 다음은 수학 공식의 변수, 상수의 개념이다.

💡 변수 = ”데이터를 넣는 상자이자 변하는 값”을 의미한다 💡 상수 = “변하지 않는 수”를 의미한다. **(변수의 반대 개념)
  • 예시
💡 자바의 변수 앞에 “final”이라는 키워드와 함께 사용한다.(선언과 동시에 값을 할당한다(초기화 한다))
final int f_num = 100; // 선언과 동시에 초기화
final int f_num;
f_num = 50; // 선언 후 초기화는 할 수 없다.

⁉️ 상수의 특징


💡 상수는 선언 이후에 값을 변경할 수 없으므로 선언과 동시에 초기화를 해야 한다.

참고자료: https://velog.io/@jahommer/변수상수

⁉️ 상수를 왜 사용할까?


💡 상수는 선언 이후에 값을 변경할 수 없으므로 코드에서 중요한 값 (ex. ip값 등)을 사용할 때 선언 이후에 변경하지 못하게 함으로써 유지보수에 편함 - 만약 ip값 등의 변경이 있을 경우 선언부에서 변경하면됨

❤️‍🔥특수문자(이스케이프)


💡 만약 문자열 안에 큰 따옴표를 넣고 싶다면 어떻게 해야 할까?
//오류
System.out.println("egoing said "Welcome programming world""); //출력 오류

//정상 출력
System.out.println("egoing said \"Welcome programming world\""); //정상 출력

왜 백슬레시()를 넣으면 정상 출력이 될까?


💡 자바에서 백슬래시(\)와 따옴표는 문자 출력되지 않는 특수 문자이기에 출력되지 않는다.
  • 따라서 백슬레시를 앞에 넣어 문자로 해석하도록 해야 한다!

특수문자의 입출력을 정리해보자!

<특수문자 입출력표>

입력출력
\ 에러
\\
\’
\”
((
(에러
//
\/에러
  • 주의 : 괄호나 일반 슬래시는 \를 붙이지 않아도 된다.
입력출력
\n줄바꿈
\r줄의 맨 처음으로
\t
\b커서를 한 문자 앞으로(백 스페이스
\0빈칸 (null)

❤️‍🔥백준 알고리즘 문제 풀이


2월 22일 문제 제출

문제 풀이

2557번

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

10718번

public class Main{
    public static void main(String [] args){
        System.out.println("강한친구 대한육군");
	    System.out.println("강한친구 대한육군");
    }
}

10171번

public class Main {
	public static void main(String[] args) {
    
		System.out.println("\\    /\\");
		System.out.println(" )  ( ')");
		System.out.println("(  /  )");
		System.out.println(" \\(__)|");    
 
	}
}

10172번

public class Main {

	public static void main(String[] args) {
		System.out.println("|\\_/|");
		System.out.println("|q p|   /}");
		System.out.println("( 0 )\"\"\"\\");
		System.out.println("|\"^\"`    |");
		System.out.println("||_/=\\\\__|");
	}
}
profile
달리는 개발자

0개의 댓글

관련 채용 정보