객체 = 인스턴트 = 폴더 같은객체 변수 = 인스턴스 변수클래스 = 설계도
모든 변수는 메모리에 저장된다.int 변수는 4byte 이다.변수에는 오직 8byte 이하의 값만 넣을 수 있다. (1byte = 8bit)변수에 오직 값 1개만 넣을 수 있다.변수에 여러개 넣을 필요가 생겼다. (처리속도 향상, 관리 편함)그래서 생긴 것이 객체이다.
클래스를 이용한 함수와 변수 객체 활용
static > 변하지 않는 것들에 활용
method 선언 예시return 값이 없으면 voidreturn 형식이 있으면 그에 맞춰 기입매개변수 없으면 비운다매개변수를 받는다면 받는 형식과 인자 기입https://school.programmers.co.kr/learn/courses/5/lessons/
출력결과기본형 변수의 값을 다른 메소드에서 변경한 결과: 10참조형 변수의 값을 다른 메소드에서 변경한 결과: 11기본형 타입은 다른 메소드에 매개변수로 전달될때, 10이라는 값이 그대로 전달됩니다.따라서 addOne에서 1을 더하더라도 value라는 변수에는 아무 영
변수의 scope : 변수들에 따른 사용 가능한 범위
gender2에는 아래의 enum Gender에 속한 Male,Female만 사용될 수 있다.변수.getClass().getName()변수타입을 확인한다.
JAVA에서 상수를 선언할 때는 final을 사용하여 선언한다.final은 해당 객체를 단 한 번만 할당할 수 있다.클래스에 고정된 변수 혹은 값을 나타낸다.전역적으로 쉽게 사용하나 변하지 않는 변수 or 메서드를 사용할 때 주로 사용한다.클래스 로더가 클래스를 로딩
프로그램 실행 전 메모리에 로드(load)되어야 한다.프로그램에서 사용되는 변수들을 저장할 메모리 필요.컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공한다.프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지.( 메모리 < 코드,
Car리모콘을 저장할 수 있는 변수를 만들수있다.(=Car 객체의 래퍼런스를 저장할수 있다.)리모콘(래퍼런스)을 만든다.Car Car1; // 현재 null(초기값 > 가비지데이터가 들어있다.)Car1 = new Car(); // 객체를 생성한다컴파일 에러 중대한 문법
상속을 사용 시, 중복코드가 적거나 없다. 고양이의 공통 특성을 상속시킨다.
JAVA > 다중상속을 허용하지 않는다. (feat.죽음의 다이아몬드)
new 칼(); 칼 리모콘 생성된다.무기 a무기 = new칼(); 무기 형식에 때른 a무기에 칼 리모콘을 넣는다 무기에 없는 기능은 탈락된다.
참조변수는 앞의 객체를 참조하는 변수생성자를 통해서 객체를 만들라메모리에 만들어진 객체 > 인스턴스참조한다. >> 래퍼런스한다. >> 가리킨다. // 다 같다
소프트웨어 상에 구현해야 할 대상갹채룰 구현하기 위한 설계도클래스(설계도)에 따라 소프트웨어상에 구현된 실체 클래스를 메모리에 올려 인스턴스 만드는 과정실체화된 인스턴스는 메모리에 할당 됨.인스턴스 = 객체 > 인스턴스는 객체에 포함됨
클래스와 상속을 적절히 활용하여 동작하도록 만든 예시
인스턴스 변수를 다른 클래스에 전달하여 사용하는 방식 첫번째 (매개변수 사용 x) 두번째 (매개변수 사용 o)
생성자로 초기값(default)을 설정한다.
[좋은코드] 클래스와 생성자의 관계 각 클래스마다 적절한 생성자를 배치한다.
자동생성 생성자의 특이점
생성자는 오버라이딩 되며 차례대로 출력된다. class Main { public static void main(String[] args) { new 사람(); // 출력 : 사람이 태어났습니다. new 사람(10);
super > 자식class에서 부모 생성자 사용
오버라이딩 이용하여 적용
인터페이스는 다른 인터페이스들을 다중상속 가능.인터페이스에는 private 불가.
다중상속 / 다형성 > implements
◎ private 내부접근만 허용 ◎ public 외부접근 허용
void 말하다() { }구현이 되어있다.abstract void 쉬다();구현이 되지않아도 괜찮다?
private로 구성하여 필요한 값만 반환시킬 때안전성 ▲
java.lang.ArithmeticException
Main 클래스로 throws 되어 처리된다.main의 int rs = 계산기.나누다(10, 0); 객체 생성을 안하고 바로 사용 됨. 계산기 클래스에서 나누다 함수는 static으로 설정 해야한다.static을 사용하지 않을 시 new 계산기() 인스턴스
throw new 배열의\_사이즈\_오류\_Exception으로 자진 신고runtime 런타임프로그램이 실행되는 동작.프로그램이 실행되고 있는 때 존재하는 곳.프로그래밍 언어가 구동 되는 환경.
default method, static method 로 구현가능해졌다.static method 사용시 인터페이스명.메서드명() 으로 구성되어야 한다 cal.exec2 (x) Calculator.exec2 (o)
기본형 == 객체 비교는 .equals() 이용한다
S
쓸데없는 메모리 낭비 줄인다.
오버라이딩 적용 시 \- 객체의 출력 변경 가능 (커스텀)
객체가 문장화가 필요할때 알아서 .toString()가 활성화 되어 이용된다.
equal() 메서드를 통한 속성 검증.
추상적으로 가면 안전o > 자동 형변환구체적으로 바뀌면 안전x > (명시적) 형변환
기본형 > 객체int 객체화 > 박싱Integer iObj = new Integer(i); >> java_v5이전오토박싱 / 오토언박싱 >> 자동화Integer iObj = i; >> java_v5이후 언박싱i = iObj.intValue();
static > static 만 접근 가능 instance > static 접근 가능 instance > instance 접근 가능 instance method = 객체 매서드 = void xxx() Ex) static 접근 예제
객체비객체숫자계열 char,int,byte,long,short,float,double 논리계열 boolean
main문저장소를 하나로 통일 가능해 효율적 코드 양 줄어듬명시적 표현을 통해 사용하고자하는 main 문에서 적용제너릭 : (명시적)형변환 > 귀찮.. > T (암묵적 변수) 표현규칙 : 대부분 대문자로 표기한다. 로직이 비슷 할 때 사용.템플릿 같은 것main 문
스캐너 Scanner sc = new Scanner(System.in);스캐너로 반환형식에 맞는 값만 반환됨 sc.next반환형식(); sc.nextInt(); sc.nextString();대기열 = 큐(queue)sc.next변환형식(); 반환 후 큐에 남은 찌꺼기가
nextLine을 활용하여 split을 사용해 String\[] array 구조로 변환 및 저장array 변환 시 문장구조이기에 정수변환 필요Integer.parseInt(index) > index에 변환하고 싶은 값 투입
stream을 이용한 연산 python의 list와 비슷.배열과 비슷하고 연산에 용이peek(e -> System.out.println(e)) e에서 무슨일이 일어나는지 알아보는 기능mapToLong(e -> Long.parseLong(e)) e의 데이터를 원하는 형
자료 구조listmaptreeset
list에 값이 추가 될 수있다. 길이 변화 가능.
Map의 종류HashMapTreeMapLinkedHashMapHashTablearraylist 에서 문제 발생데이터 추가하거나 지우면 index가 변한다.그래서 hash map이 생겼다
main문 방법1 > class 구성 방법2 > map 구성
정렬 1 : 내림차순 ver1 return elemnet1 - element2; 정렬 2 : 오름차순 ver1 정렬 3 : 오름차순 ver2 정렬 4 : 내림차순 ver2 예시
main 실행문 for문 방식 Stream 기본 Stream 방식1 - foreach Stream 방식2 - 1줄이하의 단순구성 Stream 방식3 - 축약
for문 방식 stream 방식 1 stream 방식 1
main문 for문 - 배열연산 stream 방식 - 배열연산
main문 List + for문 Stream