SW과정 JAVA 4일차 - 0729
JAVA 오프라인 강의 4일차
1. 마방진 만들기
대각선 방향으로 수열 채우기 5x5, 7x7, 9x9 ...
배열의 가로, 세로, 가로 대각선의 합의 값이 모두 같은 2차원 배열
홀수 정방 배열에만 가능 (정사각형 배열)
2. 5x5 일반 마방진 규칙성
1) 중간 열에서 시작
2) 오른쪽 대각선 상향 방향으로 진행
3) 행이 0배열을 벗어나면 마지막 행으로
4) 열이 5열을 벗어나면 첫번째 열로
5) 5의 배수일 경우 +1 행만 이동
6) SQ(R,C(행,열))
대각선 방향으로 수열 채우기 5x5, 7x7, 9x9 ...
배열의 가로, 세로, 가로 대각선의 합의 값이 모두 같은 2차원 배열
홀수 정방 배열에만 가능 (정사각형 배열)
1) 중간 열에서 시작
2) 오른쪽 대각선 상향 방향으로 진행
3) 행이 0배열을 벗어나면 마지막 행으로
4) 열이 5열을 벗어나면 첫번째 열로
5) 5의 배수일 경우 +1 행만 이동
6) SQ(R,C(행,열))
/ | 1열 | 2열 | 3열 | 4열 | 5열 |
---|---|---|---|---|---|
1행 | 17 | 24 | 1 | 8 | 15 |
2행 | 23 | 5 | 7 | 14 | 16 |
3행 | 4 | 6 | 18 | 20 | 22 |
4행 | 10 | 12 | 19 | 21 | 3 |
5행 | 11 | 18 | 25 | 2 | 9 |
package com.busan.fullstack;
public class Mabang {
public Mabang(int num) {
start(num);
}
int[][] mabang;
public void start(int num) {
mabang = new int[num][num];
int x = 0;
int y = num/2;
mabang[x][y]=1;
for(int pos=2;pos<=num*num;pos++) {
// 1. 왼쪽 대각선위로 먼저 이동시킴
x= x-1;
y= y-1;
// 1. 위치(x,y) 이동 후 위로 벗어나는 경우; x<0
// 2. 위치(x,y) 이동 후 왼쪽으로 벗어나는 경우; y<0
// 3. 위치(x,y) 이동 후 북서쪽으로 벗어나는 경우; x<0 and y<0
// 4. 위치(x,y) 이동 후 배열을 벗어나지는 않지만 이동한 위치가 이미 다른값이 있을 경우 : mabang[x][y] !=0
if(x<0) {
if(y<0) {
x=x+2;
y=y+1;
}else{
x=x+num;
}
}else{
if(y<0) {
y=y+num;
}else {
if(mabang[x][y]!=0){
x=x+2;
y=y+1;
}
}
}
mabang[x][y] = pos;
}
for(int[] first : mabang) {
for(int value : first) {
System.out.print("["+value+"]"+" ");
}
System.out.println();
}
}
}
3. Object 클래스 메서드
equals 좌측과 우측의 주소를 비교
4. toString() method
자기가 가지고 있는 스트링을 스스로 이전함
5. Wrapper 클래스
뭔가를 감싸는 클래스로 정의됨
byte, short, int, long, char, float, double, boolean(primitive type)Wrapper class로 변환 Byte, Short, Integer, Long, Character, Float, Double, Boolean
6. hashCode() 메서드
hash : 정보를 저장, 검색하기 위해 사용하는 자료 구조
자료의 특정 값(키 값)에 대해 저장 위치를 반환해주는 해쉬 함수
hashCode() 메서드는 인스턴스의 저장 주소를 반환
7. String 클래스로 문자열 연결
문자열 연결을 계속해서 garbage가 생길 수 있음
8. StringBuilder, StringBuffer(ver 1.5 이후) 사용하기
내부적으로 가변적인 char[]배열을 가지고 있는 클래스
문자열을 여러 번 연결하거나 변경할 때 사용하면 유용함
StringBuffer는 멀티 쓰레드 프로그래밍에서 동기화(sybchronization)를 보장문자열을 클라이언트가 보내면 스트링버퍼가 문자열을 받아서 작업을 함, 클라이언트가 아무리 많은 문자열을 보내도 순서대로 문자열이 입력됨
기차표 예약을 할 때, 한명이 자리를 차지하면 다른 사람은 진입이 안됨(동기화)
스트링빌더 동기화 x, 스트링버퍼 동기화 o
9. 클래스
1) public : 접근 제한이 없음
2) 디폴트 접근 제한자(아무것도 안붙어 있는 것) ex) class AccessTest{ } : 같은 패키지내에 있는 클래스만 접근 가능
3) private는 붙을 수 없음
4) final : 상속 받을 수 없음
10. 메소드
1) public : 접근 제한이 없음
2) 디폴트 접근 제한자(아무것도 안붙어 있는 것) : 같은 패키지내에 있는 클래스만 접근 가능
3) private : 다른 클래스에서 접근 못함 → 싱글톤 만들 때 사용하게 됨
4) final : 오버라이딩 할 수 없음
11. 변수
1) public : 접근 제한이 없음
2) 디폴트 접근 제한자(아무것도 안붙어 있는 것) : 같은 패키지내에 있는 클래스만 접근 가능
3) private : 다른 클래스에서 접근 못함
4) final : 상수가 됨
Author And Source
이 문제에 관하여(SW과정 JAVA 4일차 - 0729), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ljsk99499/JAVA0729저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)