JSP&Servlet/기초정리
Servlet 기초 - 실습, '==' / .equals 차이
줘니(•̀ᴗ•́)و
2023. 1. 26. 19:15
728x90
1. HTML 파일 코드
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Operation">
<input type="text" name="num1">
<select name="oper">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" name="num2">
<input type="submit" value="계산">
</form>
</body>
</html>
2. Servlet 파일 코드
package Servlet0126;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Operation")
public class Ex05Operation extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 데이터 가져와 형변환하기
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
String oper = request.getParameter("oper");
// 2. if문 사용해 출력하기
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if(oper.equals("+")) {
out.print(num1+"+"+num2+"="+(num1+num2));
}else if(oper.equals("-")) {
out.print(num1+"-"+num2+"="+(num1-num2));
}else if(oper.equals("*")) {
out.print(num1+"*"+num2+"="+(num1*num2));
}else if(oper.equals("/")) {
out.print(num1+"/"+num2+"="+(num1/num2));
}
}
}
* 연산자 '==' 와 equals 메소드의 차이
연산자 '=='는 주소값을 비교하여 boolean type을 반환하지만
equals 메소드는 비교하고자 하는 대상의 내용 자체를 비교하여 boolean type을 반환한다.
먼저, Call by value와 Call by reference의 차이를 알아야 이해하기 쉽다.
Call by value(값에 의한 호출)는 인자로 받은 값을 복사하여 처리를 한다.
Call by reference(참조에 의한 호출)는 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 준다.
기본 타입인 int형, char형등은 Call by Value형태로 기본적으로 대상에 주소값을 가지지 않는 형태로 사용된다.
하지만 String은 일반적인 타입이 아니라 클래스다.
클래스는 기본적으로 Call by Reference형태로 생성 시 주소값이 부여된다.
그래서 String타입을 선언하는 경우 같은 값을 입력하더라도 서로간 주소값이 다르게 된다.
따라서,
String타입으로 선언된 변수를 비교하는 경우에는 .equals()를 써야한다는 것!
3. 웹 페이지 결과
728x90