728x90

1. Python

 1) range(1, 3) : 1부터 2까지 

  - ex ) for i in range(1, 3) // i = 1, i = 2  두 번 반복

 2) 100 >> 1

  - 01100100(64+32+4) → 00110010(32+16+2)

  - 128 64 32 16 8 4 2 1

 

a = ["ABC"]
for i in a
print(i[0])

//출력결과
A

 

 

2. C(6번까지 품)

while(0) { // C에서는 0이면 false, 1이면 true

}

 

char *p = "KOREA";
printf("%c\n", *(p+2));
printf("%c\n", *p+2);

//출력결과
R
M

포인터P(*p)는 문자열의 첫위치값으로 지정되어 있는데 *(p+2)는 첫 위치값에서 +2만큼 더한 값이 된다.

그런데 *p+2는 아스키코드값의 +2만큼 더한 값이 되서 ABC알파벳 순서인 'K, L, M'여기서 M값이 된다.

 

※ 구조체 선언 방법

1) 첫번째 방법

struct 구조체이름 {
    변수선언문
};
struct 구조체이름 변수명;
struct person {
    char name[20];
    int age;
    char address[100];
};

int main()
{
    struct Person p1;
    
    strcpy(p1.name, "홍길동");
    p1.age = 30;
    strcpy(p1.address, "서울");
    
    printf("이름 : %s\n", p1.name);
    printf("나이 : %d\n", p1.age);
    printf("주소 : %s\n", p1.address);
}

2) 두번째 방법

struct 구조체이름 {
    변수선언문
}변수명;
struct person {
    char name[20];
    int age;
    char address[100];
} p1;

int main()
{    
    strcpy(p1.name, "홍길동");
    p1.age = 30;
    strcpy(p1.address, "서울");
    
    printf("이름 : %s\n", p1.name);
    printf("나이 : %d\n", p1.age);
    printf("주소 : %s\n", p1.address);
}

 

3. SQL

//테이블A의 컬럼 : 시퀀스번호(INT), 내용(VARCHAR(20))

/* 이것만 알았는데 */
INSERT INTO 테이블A(시퀀스번호, 내용) VALUES(1, 'TEST');

/* 이것도 가능 */
INSERT INTO 테이블A VALUES(1, 'TEST');

단, 'INSERT INTO 테이블A'로 끝나는 경우 VALUES의 값은 테이블A의 존재하는 모든 컬럼을 데이터타입의 맞게 입력하여야한다.

 

CREATE TABLE 테이블A (
    시퀀스넘버 NUMBER NOT NULL,
    식별번호 NUMBER NOT NULL,
    내용 VARCHAR(20),
    CONSTRAINT 테이블A_PK PRIMARY KEY(시퀀스넘버),
    CONSTRAINT 테이블A_FK FOREIGN KEY(식별번호) REFERENCES 테이블B(식별번호) ON DELETE RESTRICT ON UPDATE CASCADE
);

NOT NULL, PRIMARY KEY, FOREIGN KEY, REFERENCES 등 위치에 작성하는 문제였음. 구조 파악 및 스펠링 외우기.

 

CREATE INDEX 인덱스명 ON 테이블A(컬럼A);

인덱스 생성 방법이다.

 

4. Java

public class Test {

    public static int[] arr(int[] a) {
        a[0] = 50;
        return a;
    }

    public static void main(String[] args) {
        int n[] = {1,2};
        
        arr(n);
        
        for(int i=0; i<2; i++)
            System.out.println(n[i]);
    }
}

//출력결과
50
2

기존에 내가 알고 있는 것은 ' n = arr(n); ' 이렇게 해야 배열 n의 값이 변하는 줄 알았음..

둘다 되지만 arr(n);만해도 됐다..

 

 

public static void main(String[] args) {
    System.out.println(1%2);
    System.out.println(2%4);
    System.out.println(3%4);
}

//출력결과
1
2
3

안나눠지면 0인줄알았지만 나머지가 남아있어서 1,2,3이 됌.

 

class SuperObject {
    public void print() {
    	draw();
    }
    
    public void draw() {
    	draw(); //여기서 draw는 override되서 SubObject의 draw로 실행된다.
        System.out.println("Super Object");
    }
}

class SubObject extends SuperObject {
    public void print() {
    	super.draw();
    }
    
    public void draw() {
    	System.out.println("Sub Object");
    }
}

public class Test {
    public static void main(String[] args) {
    	SuperObject a = new SubObject();
        a.print();
    }
}

 

class A {
    int a;

    A(int a) { //A클래스의 선언 메서드로 인스턴스를 생성하면서 parameter를 전달하면서 동작을 수행한다.
        this.a = a;
    }

    void display() {
        System.out.println(""a=""+a);
    }
}
class B extends A {
    B(int a) { //B클래스의 선언 메서드로 인스턴스를 생성하면서 parameter를 전달하면서 동작을 수행한다.
        super(a);
        super.display();
    }
}
public class Main {
    public static void main(String[] args){
        B obj = new B(10);
    }
}

 

public class SSO {
    public static void main(String[] args) {

        System.out.print(check(1));

    }

    static String check(int num) {

        return (num >= 0) ? "positive" : "negative";

    }
}

check() 함수를 선언할 때 public static String check(int num)으로 해야되는줄 알았으나

같은 클래스 내의 메서드이기 때문에 static만 선언해도 됌.

728x90
TOP