1번째 정리본

노건우·2023년 7월 3일
0
post-thumbnail

변수의 의미

프로그램에서 다양한 종류의 자료의 자료를 표현할 수 있는 값을 변수라고 부르며, 일반적으로 웹 페이지에서 처리하고자 하는 "데이터"에 해당한다.

문자열 데이터와 문자열 데이터끼리의 덧셈

-String형 변수를 선언하고, 쌍따옴표로 묶인 값을 대입한다.
-빈 문자열이나 공백도 문자열 데이터
String msg = "안녕하세요. 자바"; ->문장을 표현(공백표현)
String blank; = ""; ->빈 문자열 값
String age ="20"; ->숫자값이 쌍따옴표로 묶였다면 문자열이다.
int age = 20;

  문자열 데이터의 덧셈
->텍스트문자열 +문자열 => 두 문장을 하나로 합쳐준다
String language = "JA" + "VA";// "JAVA"

-문자열 + 기본자료형
->기본자료형의 데이터가 문자열로 변환되고, 두 문장이 합쳐진다.
int age =10;
String name = "자바학생"
String result = age + name;//10 + "자바학생" = ->"10자바학생"

예시코드 package roh1;

public class roh12 {

public static void main(String[] args) {
			String a = "자바";
			String b  = "학생";
			String c = a+b;
			System.out.printf("a+b = "+c);
}
	

}

이렇게 실행했을 때 "자바학생"이라는 결과값이 나온다. 새로운 변수 c를 이용해 나타내면 편하다는 사실을 기억하자.

  • 상수
    상수같은 경우는 변하지 않는 수를 말하며, 변수와 마찬가지로 메모리상에 존재하지만, 값이 변경될 수 없는 데이터로서,final 키워드가 사용하여 선언된 변수는 상수로 생성된다.
    만일 final int age = 20;
    age = 21; //에러발생

    이러한 코드라면 에러가 발생하게 되는데, final로 이미 선언했기에 그 변수를 바꾸려하면 문제가 발생한다.

연산자

사실상 제일 중요한 부분이라고 볼 수 있는 파트다.
사칙연산, 단항연산, 논리연산, 비교연산, 증감 연산자 등이 대표적이다.

  • 사칙연산
    사칙연산 같은 경우 크게 신경쓰지않고 본래 아는대로 코드를 작성해 주면 된다. +,-,*,/,%.
    마지막 나누기는 조금 생소할 수 있으나
    public class Main02 {

    public static void main(String[] args) {
    
    		int source = 100;
    		source += 100;  //source = source +100; -> 200
    		source -= 50;  //source = source -100; -> 150
    		source *= 2;    //source = source +100; -> 300
    		source /= 100;//source = source +100; -> 3
    		source %= 2;//source = source +100; -> 1
    		System.out.println(source);
    		
    }이런식으로 코드만 이해한다면 큰 문제될 것 없는 간단한 연산자이다.

    위의 코드같은 경우 위에서 아래로 내려오는 순차적인 계산을 따르므로
    모든 연산을 100으로 놓고 각각 계산하는 우를 범하지 않길 바란다.

  • 단항 연산자
    단항연산자는 어떤 변수의 값에 대한 계산 결과를 다시 자기 자신에게 대입하고자 하는 경우의 약식 표현이라고 할 수 있다. 코드로 쉽게 표현해보면,
    int x = 100;
    x = x+5;
    -------------->
    int x = 100;
    x += 5;//같은 표현
    이런 형식으로 대입하는 것에 기초하고 있다.
    또한 단항 연산자는 모든 사칙연산에 표현가능하다.

    ->+=,-=,*=,/=,%=

  • 증감연산자
    전위표기법과 후위 표기법의 차이에 대해 알면 될 것 같다.
    public static void main(String[] args) {
    //x1값과 y1값의 결과 확인
    int a1 = 100;
    int x1 = 1;
    int y1 = a1 + x1++;
    System.out.println("y1 = " + y1);//y1 = 101
    System.out.println("x1 = " + x1);//x1 = 2
    System.out.println("----------------");

    	int a2 = 100;
    	int x2 = 1;
    	int y2 = a2 + ++x2;
    	System.out.println("y2 = " + y2);//y2 = 102
    	System.out.println("x2 = " + x2);//x2 = 2
    }
    둘의 코드에서 차이점은 ++의 위치밖에 없다. 
    첫 문단같은 경우 후위 연산을 따르기에 x가 2가 되는 것은 동일하지만 y와 더할 때
    1의 값으로 더해지게 된다. 반면 전위연산은 2라는 값이 이미 저장되고 2와 y값을 더하게 되어 102란 값이 나오게 된다.
  • 논리 연산자
    논리연산자의 경우 boolean과 ||,&&에 대해서만 파악하면 반 이상은 왔다고 볼 수 있다.
    boolean은 true와 false를 나타내고, ||는 or의 의미, &&은 and의 의미이다.

    or은 하나만 만족해도 true지만 and는 둘 모두를 만족해야 true라는 사실을 기억하자.

형변환

  • 형변환이란
    변수의 자료형이 변환되는 것을 의미한다.
    특정 자료형의 값을 다른 자료형의 변수에 대입할 수 있다
    암묵적 형변환(upcasting)과 명시적 형변환(downcasting) 두 종류가 있다.
  • 암묵적 형변환
    서로다른 자료형을 연산 혹은 대입하는 경우 java컴파일러가 자료형을 통일한다.
    암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을 의미한다.
    즉 예시 코드를 보면,
    int myage1 = 20;
    double myage2 = myage1;
    System.out.println("myage1: "+ myage1);//myage1: 20
    System.out.println("myage2: "+ myage2);//myage2: 20.0

이 코드를 보자. int의 자료형이 double로 바뀌는 과정임을 보여준다. 이때 더 큰 범위로 자료형이 변경되어 암묵적 형변환이 일어났다.

  • 명시적 형변환
    데이터의 손실을 감수하더라도 강제로 형변환 시키는 형태를 말하는데, 쉽게 말하면 형변환 과정에서 데이터가 손실되는 경우이다.
    double pi1 = 3.14D;
    int pi2 = (int)pi1;
    	System.out.println("pi1 = "+pi1);// pi1 = 3.14
    	System.out.println("pi2 = "+pi2);//pi2 = 3
    이 코드는 어떤가? 먼저 D는 문자이기 때문에 double에서 취급하지 않아 날려주고, 3.14그대로 온다. 하지만

    int형으로 변환되었을때는 어떤가? 0.14의 값도 같이 날아가 버렸다. 이 과정에서 데이터의 손실이 일어난 것이다. 이것이 명시적 형변환이다.

profile
초보 개발자 이야기

0개의 댓글