개발자의 길
-
3) 글로 적는 웹개발 공부 - 오라클디비(OracleDB)2019.09.14
-
2-6) 글로 적는 웹개발 공부 - 자바(Java)2019.09.13
3) 글로 적는 웹개발 공부 - 오라클디비(OracleDB)
■ regions 테이블에서 모든 데이터를 출력하세요.
SELECT * FROM regions
■ departments 테이블에서 모든 데이터를 출력하세요.
SELECT * FROM departments
■ job 테이블에서 직업ID와 직업이름을 전부 출력하세요.
SELECT job_id, job_title FROM jobs
■ countries 테이블에서 지역변호와 나라명을 전부 출력하세요.
SELECT region_id, country_name FROM countries;
■ jobs 테이블에서 최소 월급이 10000달러 이상인 직업들의 이름을 알아보세요.
SELECT job_title, min_salary FROM jobs WHERE min_salary >= 10000
■ employees 테이블에서 다음과 같이 출력해보세요.
EMPLOYEE_ID | FIRST_NAME | LAST_NAME | JOB_ID | SALARY |
109 | Daniel | Faviet | FI_ACCOUNT | 9000 |
110 | John | Chen | FI_ACCOUNT | 8200 |
111 | Ismeal | Sciarra | FI_ACCOUNT | 7700 |
112 | Jose Manuel | Urman | FI_ACCOUNT | 7800 |
13 | Luis | Popp | FI_ACCOUNT | 6900 |
206 | William | Gietz | AC_ACCOUNT | 8300 |
SELECT employee_id, firt_name, last_name, job_id, salary
FROM employees
WHERE job_id IN('FI_ACCOUNT','AC_ACCOUNT');
ORDER BY 2 asc
SELECT employee_id, first_name, last_name, job_id, salary
FROM employees
WHERE job_id LIKE '%ACCOUNT'
■ 110번 부서의 이름을 출력하세요
부서번호 | 부서명 |
110 | Accounting |
SELECT department_id 부서번호, department_name 부서명
FROM departments
WHERE department_id = 110
'개발자의 길 > 글로 적는 웹개발' 카테고리의 다른 글
4) 글로 적는 웹개발 공부 - 웹(Web) (0) | 2019.09.16 |
---|---|
3-2) 글로 적는 웹개발 공부 - 오라클 디비(Oracle DB) (0) | 2019.09.15 |
2-6) 글로 적는 웹개발 공부 - 자바(Java) (0) | 2019.09.13 |
2-5) 글로 적는 웹개발 공부 - 자바(Java) (0) | 2019.09.12 |
2-4) 글로 적는 웹개발 공부 - 자바(Java) (0) | 2019.09.11 |
2-6) 글로 적는 웹개발 공부 - 자바(Java)
■ 식별자 규칙
CaptaimMavel | captainMarvel | captainMarvel() | CaptainMarvel() | CAPTAIN_MARVEL |
클래스 | 변수 | 메서드 | 생성자 | 상수 |
■ 에러가 나는 이유는?
public class Z {
private CaptainMarvel() {}
public void captainMarvel() {}
}
클래스의 이름은 Z인데 기본생성자가 CaptainMarvel() 이기 때문에 에러가 납니다.
Z() 라고 해야 에러가 안납니다.
■ 자바의 자료형
기본자료형 | 객체자료형(=참조자료형) |
변수의 경우 값이 직접대입(복사 개념) | 변수의 경우 레퍼런스의 참조 |
종류 : boolean char byte short int long float double | 종류 : 무한대 |
예시 | 에러가 나는 이유 |
String s = 'A'; | String 형은 큰 따옴표로 사용해야한다. 작은 따옴표는 에러 |
A a = 3; | 객체자료형 A인데 기본자료형이 들어가 에러 |
int i = 3.2; | 기본자료형인 int(정수) 인데 값은 실수기 때문에 에러 |
■ 클래스
1) 객체의 설계도 | 2) 객체의 자료형 |
VO(DTO)란? Value Object 는 관계 데이터 베이스의 레코드에 대응하는 자바 클래스이다. | |
VO 만드는 규칙 | |
1) 멤버필드를 private 으로 선언 2) 기본 생성자를 선언 3) setter 와 getter 설정 |
■ VO 를 선언하세요. (setter 와 getter 생략)
저자 / 출판사 / 형태 / 정가 |
public class Book {
private String writer, company;
private int page, price;
public Book(){}
}
■ 멤버
멤버필드 | 선언 : 접근제한자 (스태틱) (파이널) 자료형 변수명; |
멤버메서드 | 선언 : 접근제한자 (스태틱) (파이널) 리턴자료형 메서드명(인자){ 리턴 } |
■ 에러가 나는 이유는?
예시 | 에러가 나는 이유 |
public A test(int a) { A b = null; } |
리턴자료형인 A 가 있는데 리턴 키워드가 없어서 에러가 난다. return b; |
public void test(A a){ int a = 4; } |
객체자료형 A인 인자의 변수명도 a, test 메서드의 지역변수 a의 이름과 같지만 자료형이 달라 에러가 난다. |
private A static a; | 순서가 잘못됐다. 접근제한자 static 자료형 a; 라고 해야 맞다. |
public static b; | 자료형이 없다. |
■ 실행 결과는?
public class A {
private static int a;
public static int test(int a){
return a = 100;
}
public static void main(String[] args){
a = test(20);
System.out.println(a);
}
}
■ 멤버의 종류
스테틱멤버 | 메모리중 스태틱(Static) 영역에 존재 / 접근시 클래스명쩜 으로 접근 |
인스턴스멤버 | 메모리중 힙(Heap) 영역에 존재 / 접근시 객체의 레퍼런스쩜 으로 접근 |
■ 에러가 나는 이유?
public class A {
private int a;
public int test(int a){
return a = 10;
}
private static int test(){
int b = test(20);
a = b;
}
}
모르겠다. 물어보자
■ 생성자
- 멤버필드의 초기화
- 기본생성자 + setter 를 편리하게 , 생성자 오버로딩
public class Book {
private int no;
private String name;
public Book(int no, String name){}
public static void main(String[] args){
Book book = new Book(2,"공터에서");
System.out.println(book.name);
}
}
null 값이 나옵니다.
int 형과 String 형의 인자 2개를 가진 생성자를 호출했지만 생성자에서 멤버필드로 값을 넣어주지 않았기 때문에 null 나옵니다.
해결하기 위해서는 2개 짜리 생성자에다가
public Book(int no, String name){
this.no = no;
this.name = name;
}
public class A {
int a = 7;
private A(){
a = 4; //this. 생략이 되어있다는거 꼭 알아두자.
}
public static void main(String[] args){
A a = new A();
System.out.println(a.a);
}
}
결과는 4.
기본생성자를 호출하면 기본생성자 안에 this.a = 4 이기 때문에, 여기서 this. 생략되어 있다는거 알아두자.
클래스 A 의 기본자료형 int 지역변수 a가 7로 초기화 되어 있지만 4로 바뀜.
그래서 결과는 4
public class A {
static int a = 5;
private A(int a){
a += a;
}
private static void test(A a){
System.out.println(a.a);
}
public static void main(String[] args){
test(new A(a));
}
}
■ String
* String str = "안녕하세요"; 와 같이 이런걸 암시적 객체(=묵시적 객체) 생성 이라고 한다.
String str = new String("안녕하세요"); 는 명시적 객체 생성 이라고 한다.
* 암시적 : 직접적으로 말이나 행동으로 드러내지 않고 은연중에 뜻을 나타내 보이는. 또는 그런 것
* 명시적 : 내용이나 뜻을 분명하게 드러내 보이는. 또는 그런 것.
그림으로 그리면 확실히 이해가 된다.
public static void main(String[] args){
String s = "한효주".substring(0,2); //암시적 객체생성 이라고 한다.
s.substring(s.length());
System.out.println(s.toString());
}
- substring : 문자열 자르기 // substring() 인자 안에 int 의 따라(1개 또는 2개) 해당 문자열의 인덱스만큼 자른다.
"한효주".substring(0,2) 의 결과는 "한효" 이다. 첫번째 인자는 인덱스 0부터 시작이고, 두번째 인자의 뜻은 index 2가 아니라 길이 인 것 같다. 두번째 인자는 index 로 시작하지말고 1부터 시작하면 "한효" 까지이다.
=>정확한 의미 찾아보자
- length : 문자열의 길이 // 해당 객체의 문자열 길이를 int 형으로 반환한다. (null 값은 포함되지 않음)
현재 "한효" 에서 문자열의 길이인 2를 int 형으로 반환.
- toString : int 형 변수를 String 객체로 변환한다.
현재 2인 값을 String 객체로 변환하면 "한효"
그래서 실행결과는 "한효" 이다.
public static void main(String[] args){
String s = "한효주";
System.out.println(new String("한효주").equals(s));
}
- equals : 문자열 비교 // 해당 문자열과 매개변수의 문자열과 비교하여 true 또는 false 를 반환 ( boolean 형 )
결과는 true
■ 배열
Object[] o = {"쯔위","나연","사나","모모"};
결과 | 쯔위나연사나모모 |
= 위와 같이 배열이 선언되어 있다. 아래와 같이 출력하기 위한 코드를 작성하세요.
일반 for 문
public class forEx{
public static void main(String[] args){
Object[] o = {"쯔위","나연","사나","모모"};
for(int i = 0 ; i < o.length() ; i++){
System.out.print(o[i])
}//for end
}//main() end
}
//향상된 for문 (=for each)
public class forEx2{
public static void main(String[] args){
Object[] o = {"쯔위","나연","사나","모모"};
for(Object name : o ){
System.out.print(name);
}//for end
}//main() end
}
■ 오버로딩(Overloading) / 오버라이딩(Overwridding)
차이점 | 오버로딩 | 오버라이딩 |
영역 | 하나의 클래스 | 상속 간의 클래스들(최소 2개 이상) |
메서드명 | 똑같아야 함 | 똑같아야 함 |
인자 | 반드시 달라야함 | 똑같아야 함 |
리턴값 | 달라도 됨(같아도 상관없음) | 똑같아야 함 |
접근제한자 | 달라도됨(같아도 상관없음) | 달라도 되나, 자식 클래스가 부모보다 넓게 |
class A{
int a = 7;
void test(){
a = 10;
}
}
public class Ex extends A{
void test(){
a = 500;
}
public static void main(String[] args){
A a = new Ex();
a.test();
System.out.println(a.a);
}
}
결과
500
class A {
int a = 5;
void test(){
a = 10;
}
}
public class Ex extends A{
int a = 100;
void test(){
a = 500;
}
public static void main(String[] args){
A a = new Ex();
a.test();
System.out.println(a.a);
}
}
결과
5
위 2개의 예제는 다시 한 번 공부해보자.
■ 상속을 나타내는 키워드는 extends 입니다.
■ 프로그램의 결과는 무엇일까요?
public static void main(String[] args){
Integer[] iArr = new Integer[4];
iArr[0] = 3;
iArr[2] = 5;
for(Integer i : iArr){
System.out.println(i);
}
}
정답
기본자료형 int가 아닌 Integer는 객체자료형이다. new 라는 키워드를 통해 Integer 배열 4개를 가진 객체를 생성.
0번지에는 3, 2번지에는 5 를 대입, 현재 0번지와 2번지를 제외한 1,3번지는 0 값이 아닌 null 값이 들어가 있다.
why? 객체자료형이기 때문이다.
즉 결과는
3
null
5
null
■ 모든 클래스의 조상은 Object 클래스 입니다.
■ 프로그램의 결과는 무엇일까요?
public class Ex4{
public static void main(String[] args){
Integer i1 = new Integer("5");
Integer i2 = 5;
Integer i3 = new Integer(5);
Integer i4 = 5;
System.out.println((i1==i2));
System.out.println((i2==i4));
System.out.println((i1==i3));
System.out.println((i2.equals(i4));
System.out.println((i3.equals(i1));
}
}
정답
false// == 는 주소를 비교한다. 즉 명시적객체생성을 통한 i1 와 암시적객체생성을 한 i2 를 다르기 때문에 false
true // 하나의 객체의 레퍼런스를 참조했기 때문에 같은 주소다. 그래서 true
false // new 라는 키워드를 통해 만들 때마다 새로운 객체가 생성되기 때문에 다른 레퍼런스다. 그래서 false
true // equals() 메서드는 대상의 내용을 비교하기 때문에 true 다
true // 주소는 다르지만 내용은 같기 때문에 true 다.
■ Wrapper 들은 기본자료형을 객체로 이용할 때 사용하는 클래스들
* Wrapper class 는 java.lang 패키지에 정의된다.
■ 기본자료형 -> 객체자료형으로 바꾸는걸 오토박싱 이라고 하며 암시적객체생성(=묵시적객체생성) 이라고 한다.
■ 객체자료형 -> 기본자료형으로 바꾸는걸 언박싱 일아고 하며 명시적객체생성 이라고 한다.
Integer i = 5; 오토박싱 이자 암시적객체생성 int i2 = i; 언박싱 |
'개발자의 길 > 글로 적는 웹개발' 카테고리의 다른 글
3-2) 글로 적는 웹개발 공부 - 오라클 디비(Oracle DB) (0) | 2019.09.15 |
---|---|
3) 글로 적는 웹개발 공부 - 오라클디비(OracleDB) (0) | 2019.09.14 |
2-5) 글로 적는 웹개발 공부 - 자바(Java) (0) | 2019.09.12 |
2-4) 글로 적는 웹개발 공부 - 자바(Java) (0) | 2019.09.11 |
2-3) 글로 적는 웹개발 공부 - 자바(Java) (0) | 2019.09.10 |