패키지: 처음 불러들일 때 패키지 전체가 로드되어 메모리에 캐쉬됨. 이후의 콜에서는 디스크IO가 감소됨.
컬렉션: 벌크 SQL 사용으로 성능 높은 기능 제공
레코드:
여러 데이터형 포함 가능. 단일 파라미터로 서브 프로그램에 그 항목들을 전달할 수 있다.
%ROWTYPE을 사용하여 여러 결과를(레코드) 선언 가능.
오브젝트: 객체지향? 프로그래밍의 가능성.
저장 프로시저: SQL*Plus에서 Standalone 프로시저를 콜하는 법:
call award_bonus(179, 1000);
--또는
BEGIN
award_bonus(179, 1000);
END;
식별자: ” “로 감싸는 것도 가능
선언: DECLARE 내에
변수명 타입 := 4000; (DEFAULT와 비슷)
변수명 타입 NOT NULL := 9999; (이후 NULL 대입 불가)
alias 사용: 문자 결합 등으로 별명을 붙여서 사용 가능.
FOR item IN
( SELECT f_name || ' ' || last_name complete_name
FROM ... )
LOOP
...
(item.complete_name);
END LOOP;
대소문자 구별: 상수, 변수, 파라미터 이름에 대소문자 구별 안 함(식별자도 마찬가지)
루프에는 라벨을 사용:
<<outer_loop>>
FOR i IN ...
<<inner_loop>>
FOR i IN ...
IF outer_loop.i = 2 THEN
...
inner_loop.i
...
END IF;
END LOOP inner_loop;
END LOOP outer_loop;
자료형 변수명; // 변수 선언
int num;
String name;
num=50; // 자료 저장(초기화)
name=”Hong”; // 문자열은 “”로 묶어준다.
num=30; // num이 30이 된다. ‘변수’ 값이 바뀜.
변수 선언과 초기화를 분리하는 것이 보기에 좋다.(취향의 문제)
자료형 종류는 8가지.
실무에서 사용하는 것은 4~5가지 정도임
boolean, int, double, String 등
변수명은 마음대로. 선언은 한 번만!
int num = 50;
int num = 30; // 오류!
변수 선언 및 출력
자바의 정석 21쪽
class VarEx1 {
public static void main(String[] args) {
int year = 0, age = 14;
System.out.println("Year:" + year);
System.out.println("Age: " + age);
year = age + 2000; // age + 2000 = year
age = age + 1; // age + 1
System.out.println("\nYear:" + year);
System.out.println("Age: " + age);
}
}
실제로 수학에서는 age + 2000 = year 이지만 컴퓨터에서는 year = age + 2000 식으로 사용
내부에서 ADD 명령 처리하는 과정
변수를 선언하여 값을 저장하고 출력.
누적 연산
age += 1; // age = age+1; 또는 age++; 과 동일
참고
= (대입 연산자)는 어떤 식보다도 늦게 수행된다.
임시 변수
입력/출력을 하지 않고 임시로 사용되는 것
보통 일반적인 경우 tmp, temp 라는 이름으로 사용됨
예: a, b의 값을 서로 교환할 때
temp = a;
b = a;
b = temp;
변수의 명명규칙
숫자 시작(x)
특수문자는 _와 $만 허용
권장하는 규칙
상수의 이름은 모두 대문자로.
final int MAX=100; // C언어에서 const와 같이 JAVA에서는 final을 사용해 변수를 상수화 시킴. 값을 잠가 다른 값으로 변경할 수 없게 만듦. MAX 처럼 모두 대문자를 사용. 여러 단어로 이루어진 경우 _을 붙여준다.(MAX_NUMBER)
변수명이 길어지더라도 그 변수가 어떤 역할을 하는지 유추할 수 있게 하면 좋다.
변수의 타입
기본형(Primitive Type)
논리
문자
정수
실수
boolean: 1
char: 2
byte: 1
short: 2
int: 4
long: 8
float: 4
double: 8
참조형(Reference Type)
주소를 값으로 갖는다. 주소가 저장됨. 참조변수.
참고
printf
C언어의 printf처럼 JAVA에서도 실수의 소수점을 원하는 대로 표시 가능.(잘 사용하지는 않는다)
System.out.printf(“점수: %d \n”, score); // %d: score를 정수 형태로 찍어라, \n: 줄바꿈
System.out.printf(“a: %d, pi: %f \n”, a, pi); // 여러 개를 표시 가능.
printf(“%4.2f”, pi); // 아래와 같이 저장됨. 4칸을 가지고, 소수점도 칸을 차지.
3
.
1
4
만약 큰 값이 오면 정수부는 최대한 살리고 소수점이 영향을 받음.
입력 받기 – Scanner
Scanner는 java.lang (기본)에는 없고, java.util 패키지에 있음. 같은 일을 하는 패키지를 모음.
C언어에서 Header File을 Include 하듯, JAVA에서는 Import 하면 된다.
package: 문서의 맨 위에 작성.
import: Scanner를 사용하려면 import를 사용.
class:
자바의 정석 p.41 입력 받고 출력하기
import java.util.Scanner;
class ScannerEx {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("input one number ");
String input = sc.nextLine();
int num = Integer.parseInt(input);
System.out.println("value: " + input);
System.out.printf("num = %d%n", num);
}
}
실행 결과
import java.util.Scanner; // java.util.* 을 전부 임포트 하면 좀 그렇겠지??
Scanner scanner = new Scanner(System.in)
Scanner: 클래스
scanner: 변수
new: 명령어
클래스를 로딩시키는 것
String input = sc.nextLine();
nextLine(); // 스페이스바 포함해 키보드로 입력받음(문자열)
next(); // 스페이스 바 이전의 단어만 인식(문자열). 거의 사용하지 않음.
sc.nextLine(); // 결과가 문자열로 나옴
int num = integer.parseInt(input);
integer 클래스 속의 parseInt() 함수
parseInt(); // 정수 형태의 문자열을 정수로 바꿔줌.
실습1 이름과 나이 입력받아 출력하기
import java.util.Scanner;
class TestScanner1 {
public static void main(String[] args) {
String name, tmp; // init name, tmp
int age; // init age
Scanner sc = new Scanner(System.in);
System.out.print("input your name ");
name = sc.nextLine(); // input name
System.out.print("input your age ");
tmp = sc.nextLine(); // input age
age = Integer.parseInt(tmp); // age (String to Integer)
System.out.print("\nName: [" + name + "] and... "); // results
System.out.printf("Age : [%d] ^_^", age);
}
}
실행결과
실습2 두 개의 숫자를 입력 받아 출력
import java.util.Scanner;
class TestScanner2 {
public static void main(String[] args) {
int num1, num2, total; // init numbers, total variable
String tmp; // init temp
Scanner sc = new Scanner(System.in);
System.out.print("input number one ");
tmp = sc.nextLine(); // input num1
num1 = Integer.parseInt(tmp); // num1 to Integer)
System.out.print("input number two ");
tmp = sc.nextLine(); // input num2
num2 = Integer.parseInt(tmp); // num1 to Integer)
total = num1 + num2; // 1+2
System.out.println("one + two = " + total); // result
}
}
class JavaEx01 {
public static void main(String[] args){
System.out.println("Java!");
System.out.print("Programming");
System.out.print(" print");
}
}
System.out.print : 줄바꿈 없음
주석
comment가 아주 중요. 자바의 주석은 두 가지. // or /**/
/*
작성자: AAA
일자: 2016-05-18
용도: 테스트
소속사: 00회사
*/
class JavaEx01 { //한 줄 주석
public static void main(String[] args){
/* 여러 범위 주석
System.out.println("Java!");
System.out.print("Programming");
System.out.print(" print"); */
System.out.println("Age: " + 10);
// System.out.println("Height: " + 170);
// 잠깐 실행에서 제외하고 싶을 때 주석을 사용하면 편리하다.
}
}
변수(Variable)
메모리에 확보한 공간에 붙이는 별칭(Alias)
변수의 선언
자료형 변수명;
종류
자료형
크기(Byte)
문자
char
2
숫자(정수)
byte
1
short
2
int
4
long
8
숫자(실수)
float
4
long
8
불린
Boolean
1
사용법
int score;
char ch;
값 대입(초기화)
변수명 = 상수;
변수: 무엇인가를 기억시키고, 사용할 수 있다는 것.
이러한 방식을 개발함: 폰 노이만
예제
int a=10
int b;
b = a; // a는 상수화되어 b에 저장됨.(등호의 오른쪽에 넣는 순간…)
Address(번지)
0x100 과 같이 표시.
0x로 시작하면 16진수임
이진수로 쓰면 길어지니까.
JVM이 변수가 저장될 메모리의 번지를 관리해준다.
변수: 그 번지에 별명을 붙여서 사용
변수명
소문자로 시작
두 단어 이상으로 이뤄졌으면 두 번째 단어를 대문자로
‘Camel 표기법에 의거’ 변수명을 지어보자.
2의 배수
1024
512
256
128
64
32
16
8
4
2
10승
9
8
7
6
5
4
3
2
1
비트/바이트
Bit
Byte
Kilo Byte
Mega Byte
Giga Byte
Tera Byte
Peta Byte
0 or 1
8Bit
1024Byte
1024KB
1024MB
1024GB
1024TB
영문자 1개
참고: 숫자 자료형 처리 시 Byte나 Short를 사용한다고 처리 속도가 빠르진 않지만(오히려 int가 빠르게 처리된다고 함) 구식 컴퓨터를 위해 낮은 단위들이 남아 있는 것이라고 한다.
byte 와 short 는 거의 예비용으로 남겨져 있다.
자료의 저장
1Byte = 8Bit (0~127 저장 가능)
Byte a;
a=127;
↑
MSB(Most Significant Bit, 부호비트)
0이면 양수, 1이면 음수
최상위 비트 (most significant bit, msb)는 최고값을 갖는 비트 위치이다. msb는 가장 큰 숫자를 왼쪽에 기록하는 자리 표기법의 규정 때문에 가끔 “left-most bit”를 뜻하기도 한다.
// 화면으로 출력을 실행하는 프로그램
public class Hello {
public static void main(String[] args){
System.out.println("처음 작성하는 Java 프로그램.");
System.out.println("화면으로 출력하고 있습니다.");
}
}
C++ Code. 강조 및 제목 삽입. cpp title=”제목” highlight=”1-3,6,9″ 이런 식으로 입력.
#include <iostream>
using namespace std;
/* 구조체 선언 */
struct person {
char name[20];
char address[70];
int age;
};
void main(){
struct person employee;
cout << "Please enter your name: \n";
cin >> employee.name;
cout << "당신의 주소를 입력하세요: \n";
cin >> employee.address;
cout << "Please enter your age\n";
cin >> employee.age;
cout << "당신의 이름은 " << employee.name << "이고,\n";
cout << "당신의 address는 " << employee.address << "이고, \n";
cout << "당신의 age는 " << employee.age << "입니다. \n";
}