자바 컴파일러에 의해 해석되는 자료형
-- 참조형
클래스를 사용자 정의 자료형이라고 하며, 클래스를 자료형으로 하여 선언된 변수를 레퍼런스 변수라고 한다.
자유메모리 영역인 힙 메모리에 생성된 객체의 주소를 저장한다.
자바에서는 메모리 주소를 직접 소스코드로 참조하는 것은 불가능하다.
*주의할점 = String은 기본 자료형이 아님. 앞글자가 무조건 대문자여야 하고 큰따옴표를 사용해서 선언해야함
대소문자가 구분된다.
예약어를 사용할 수 없다.
숫자로 시작해서는 안된다***
특수문자는 _와 $만 허용한다.
여러단어가 합쳐진 변수명일 경우 각각의 단어의 첫 글자를 대문자로 작성.
-- 클래스, 메소드, 상수변수의 이름 작성
클래스는 대문자로 시작하는것이 관례
메소드이름은 소문자로 시작하고 단어가 여러개 합쳐지면 낙타등.
상수변수의 이름은 모두 대문자로 작성하고 _를 넣어 단어를 구분한다.
(ex) MAX_SIZE)
묵시적 형변환과, 명시적 형변환이 존재함.
묵시적 형변환은 크기가 작은 변수형이 메모리 할당 크기가 큰 변수명으로 바뀔때 자동으로 변환되는것을 의미
int 에서 double로 갈 경우 따로 명시를 하지 않아도 1이 1.0으로 바뀐다.
ex) (int)1.24546
public class Mak {
public static void main(String[] args) {
int num = 1;
int sum = 0;
do {sum += num;
num++;
}while(num<=100);
System.out.println(sum);
}
}
do의 수행문 각각의 줄에 세미콜론
while(조건문) 이후에 세미콜론 주의
public static void main(String[] args) {
int num;
int sum = 0;
for(num = 1; num <= 100; num++) {
sum += num;
}
System.out.println(sum);
}
}
변수 sum의 값을 0으로 설정하는것 주의
public static void main(String[] args) {
int num = 1;
int sum = 0;
while(num <= 100) {
sum += num;
num++;
}
System.out.println(sum);
}
num과 sum의 초기값 모두 지정해야됨
public static void main(String[] args) {
int a = 1;
String drink = " ";
switch(a) {
case 1 :
drink = "커피";
break;
case 2 :
drink = "홍차";
break;
default :
drink = "에러";
}
System.out.println(drink);
}
}
switch(값)
{
case 경우 : 수행 + ;
break;
...
default : 수행 + ;
}
세미콜론 위치와 break, 케이스를 쓰는 구조 주의
-> (유사한 속성, 접근 제어, 연속 나열)
-> (메서드 밖, 객체가 생성될떄, 인스턴스 스태틱)
-> (명령문의 집합, 코드의 중복)
-> (객체생성인스턴스, 리턴값, 클래스명)
부모클래스 포유류의 move()
자식 클래스 사람, 사자, 호랑이의 move()
같은 이름의 메소드를 쓰지만 자식 클래스가 좀 더 구체적인 의미를 가지게 한다.
캡슐화에는 정보은닉이 기본적으로 포함된다.(정보은닉이 캡슐화를 의미하는것은 아니다.)
외부클래스 하위클래스 동일패키지내 내부클래스
public : O O O O
protected : X O O O
(default) : X X O O
private : X X X O
스택과 큐는 보통 데이터 처리시에 데이터를 임시로 저장하거나
입/출력 장치의 데이터를 일시적으로 저장할 때 사용됩니다.
출처: https://namsieon.com/245 [남시언닷컴:티스토리]
LIFO (Last In, First Out) 후입선출 방식
이처럼 입력을 111 222 333 순으로 했다면
출력은 333 222 111 순으로 나온다.
FIFO (First In, First Out) 선입선출 방식
큐는 스택과 반대의 순서로 나온다.
111 222 333 순서로 입력했다면
111 222 333 순으로 나온다.
** LIFO 스택 - 푸쉬, 팝 => 게임 무르기 기능, 최근 자료 추출 등에 쓰임
FIFO 큐 - 인큐, 디큐 => 선착순, 서비스 대기열 버퍼
클래스를 정의할 떄 이미 구현된 클래스를 상속받아서 속성이나 기능이 확장되는 클래스를 구현함.
상속하는 클래스를 상위클래스 부모, 베이스, 슈퍼클래스라고 함
상속받는 클래스를 하위, 자식, derived, 서브클래스라고 함
보통 상위 클래스는 보다 일반적인 의미를 가지고
하위가 더 구체적인 의미를 가진다
B extend A 에서 A(부모)에는 단 하나의 클래스만 사용할 수 있음(자바는 하나의상속만 지원)
수업시간에 Customer에서 지정했던 customerGrade나 bonusRatio를
VIPCustomer클래스에서 새로운 값을 대입하거나, 추가로 saleRatio, agentID를 만들었음.
클래스에 대한 객체 생성 시 인스턴스 변수의 초기화를 담당한다.
->(클래스를 인스턴스화해서 객체로 만드는 역할을 한다.)
(클래스명) (인스턴스명) = new 생성자([초기값])
== 멤버함수
클래스 {} 내에 작성되는 함수로 멤버변수들에대한 기능 및 동작을 정의한다.
객체를 그룹 단위의 데이터로 저장하는 기본적인 자료구조들의 모음
다수의 데이터를 그룹으로 묶어 관리할 수 있으므로 프로그래밍이 보다 편리해지고, 코드의 재사용성을 늘릴 수 있다.
객체를 일렬로 늘어놓은 구조
순서를 유지하고 저장
중복으로 저장이 가능
ArrayList, Vector, LinkedList 등의 클래스에 사용됨.
LinkedList는 데이터값 뒤에 다음 요소에 대한 참조값이 붙어 수정에 빠르다는 장점을 가지고 있다.
순서와 상관없이 저장 = 입력 순서와 출력 순서가 관계없음.
중복으로 저장이 불가능.
HashSet, TreeSet 등의 클래스에 사용됨.
아이디, 주민등록번호, 사번 등 유일한 값이나 객체를 관리할 떄 사용
키와 값의 쌍으로 구성됨.
키는 중복해서 저장 불가능하지만, 값은 중복해서 저장할 수 있음.
HashMap, TreeMap 등의 클래스에 사용.
스택과 큐가 뭔지 다시한번 공부
선형자료구조이다.
.
.
.
.
.
.
.
.
배열은 선언과 동시에 초기화할 수 있음
배열을 초기화할떄는 배열의 개수를 명시하지 않음
아무런 초기화 값이 없이 선언만 한 경우, 정수는 0, 실수는 0.0 객체 배열은 null로 초기화됨
int[] studentIDs = new int[] {101, 102, 103}; //배열 초기화 시에 갯수는 생략함
int[] studentIDs = new int[3] {101, 102, 103}; //오류발생
int[] studentIDs = {101, 102, 103}; //가능