클래스의 역할
1. 사용자 정의 타입
2. 메서드의 상자
package good;
public class Student { // 클래스: 사용자 정의 타입
public int no;
public int age;
public String name;
public char gender;
}
package good;
public class Function {
// 일반 메서드
public int add(int x, int y) { // x와 y는 매개변수
int z = x + y;
return z;
}
// static 메서드
public static int minus(int x, int y) {
int z = x - y;
return z;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "good.Student"%>
<%@ page import = "good.Function"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//1. 클래스는 사용자정의 타입
Student s = null;
/*
String, Calendar 등은 API에서 제공하는 클래스
다른 사람이 이미 만들어 놓은 클래스들 -> 라이브러리
라이브러리를 사용하는 방식 -> API
*/
s = new Student();
/*
new 연산자
1. 메모리확보
2. 초기화
no = 0;
age = 0;
name = null;
gender=''; <-없는 문자
*/
s.no = 7;
s.age = 28;
s.name = "홍길동";
s.gender = '남';
%>
<div><%=s.name%></div>
<%
// 2. 클래스는 메서드의 상자
Function f = null;
f = new Function();
int result = f.add(1, 2); // 3
int k = 7;
result = f.add(k, 7/3); // f.add(7, 2) = 9
int result2 = Function.minus(5, 2);
// result = Function.add(5, 2); error
// static 메소드는 호출할 때 클래스 이름을 붙인다
// static 메서드의 예
Math.random();
/* 우리가 선언하지 않아도 이미 선언되어 있는 내장객체
out.print();
request.getParameter("");
*/
%>
</body>
</html>
<%
// 배열 : 동일한 타입 여러개를 참조하는 참조 타입
int[] a = null;
a = new int[3]; // a[0]->0, a[1]->0, a[2]->0
// 배열호출 : 참조변수[인덱스]
a[0] = 7;
a[1] = 2;
a[2] =10;
// a[3] =1; // 예외(exception)발생
int[] b = new int[3];
int[] c = new int[]{7, 9, 10};
int[] d = {8, 10};
int[] e = null;
// e = {8, 10}; error
out.print(a.length); // 인덱스의 길이 3
%>
<br>
<%
int[] arr = {2,5,7,10}; // length 4
%>
<div>
<%=arr[0]%>
<%=arr[1]%>
<%=arr[2]%>
<%=arr[3]%>
</div>
<%
// for문 읽기 쓰기 가능 (배열을 직접적으로 변경 -> 보안에 취약)
for(int i=0; i<arr.length; i+=1) {
// 배열의 길이가 변경될 수 있기 때문에 상수를 쓰기보다 변수를 이용한다
%>
<%=arr[i]%>
<%
}
%>
<br>
<%
// foreach문 읽기만 가능 (배열을 바꿀 수 없다)
for(int n : arr) {
%>
<%=n%> <!-- n이 변경되고 배열의 값은 그대로 -->
<%
}
%>
<br>
<%
// for문 읽기 쓰기 가능 (배열을 직접적으로 변경 -> 보안에 취약)
for(int i=0; i<arr.length; i+=1) {
arr[i] = arr[i]*10;
}
%>
<%
int x = 1;
int y = 2;
int temp = 0;
temp = y;
y = x;
x = temp;
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 1. 45개의 공을 만든다
int[] ball = new int[45]; // 초기화 0, 0, ... , 0
// 1~45 값을 대입
for(int i=0; i<ball.length; i+=1) {
ball[i] = i+1;
}
// 디버깅 코드(변수의 값이 원하는대로 제대로 들어갔는지 확인하는 코드)
for(int n : ball) {
System.out.print(n+","); // println -> 줄바꿈 포함
}
System.out.println(); // 콘솔줄바꿈
// 2. 공을 섞는다
// shuffle
for(int i=0; i<100000; i+=1) {
int targetIdx = (int)(Math.random() * 45); // 0~44까지 랜덤숫자
int temp = ball[0];
ball[0] = ball[targetIdx];
ball[targetIdx] = temp; // swap을 10만번 반복
}
// 디버깅 코드(변수의 값이 원하는대로 제대로 들어갔는지 확인하는 코드)
for(int n : ball) {
System.out.print(n+","); // println -> 줄바꿈 포함
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Lotto</title>
</head>
<body>
<h1>로또번호</h1>
<%
// 3. 6개의 공을 뽑는다
for(int i=0; i<6; i+=1) {
%>
<%=ball[i]%>
<%
}
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "good.Member" %>
<%@ page import = "java.util.Calendar" %>
<%
// 데이터 초기화
Member[] list = new Member[2]; // null, null로 초기화
list[0] = new Member();
list[0].name = "루피";
list[0].birthYear = 2005;
list[0].gender = "여";
list[0].major = false;
list[1] = new Member();
list[1].name = "뽀로로";
list[1].birthYear = 2006;
list[1].gender = "남";
list[1].major = true;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>memberList.jsp</title>
<style>
table, th, td {
border: 1px solid #404040;
border-collapse: collapse;
text-align: center;
}
table {width: 40%;}
th {background-color: #D5D5D5;}
</style>
</head>
<body>
<h1>학생목록</h1>
<div>전체 <%=list.length%>명</div>
<table>
<tr>
<th>이름</th>
<th>나이</th>
<th>성별<br>(아이콘)</th>
<th>전공유무<br>(전공/비전공)</th>
</tr>
<%
// 현재년도
Calendar today = Calendar.getInstance();
int todayYear = today.get(Calendar.YEAR);
// 학생목록 출력
for(Member m : list) {
%>
<tr>
<td><%=m.name%></td>
<td><%=todayYear - m.birthYear +1%></td> <!-- 한국나이 = 현재년도-태어난년도+1 -->
<td>
<%
if(m.gender.equals("남")) {
%>
👨 <!-- 남자 아이콘 -->
<%
} else {
%>
👩 <!-- 여자 아이콘 -->
<%
}
%>
</td>
<td>
<%
if(m.major==false) {
%>
비전공
<%
} else {
%>
전공
<%
}
%>
</td>
</tr>
<%
}
%>
</table>
</body>
</html>
calendar
클래스를 사용해야 한다.