- 목적을 정하는 것이 중요하다. ->안드로이드 or 웹 개발
JVM |
API |
JAVA언어 |
int i = 10;
int j = 10;
// i와 j가 같은지 비교하는 연산자
System.out.println(i == j ); // true
// i와 j가 다른지 비교하는 연산자
System.out.println(i != j ); // false
// i가 j보다 작은지 비교하는 연산자
System.out.println(i < j); // false
// i가 j보다 작거나 같은지 비교하는 연산자
System.out.println( i <= j); // true
// i가 j보다 큰지 비교하는 연산자
System.out.println(i > j); // false
// i가 j보다 크거나 같은지 비교하는 연산자
System.out.println(i >= j); // true
- Class 변수+함수
↓JVM은 여기서부터, 자바언어의 진입점
- Public static void main (String[]main)
- 자바는 대소문자를 구분
- 메인 자동생성코드
- JVM은 main에서 부터
- public 이 붙을때는 class명과 파일명이 반드시 같아야한다. ( 1파일>1클래스)
- Object 가장최상위 클래스
- 밑의 함수가 오브젝트함수에 포함된다.
- 자바언어 키워드44개 (c,c++23개+java11개)
- 객체 > 변수+함수
이름 | 정의 | 특징 |
오버로딩 | 같은함수이지만 매개변수를 다르게함으로 하나의 함수 이름으로 데이터 처리 | |
System.out.println( 공백 ); | 한칸 밑으로 띄우는 역할 | |
System.out.println( A ); | A 출력 | |
System.out.print( A ); |
Ab단일출력 한줄로 붙여서 나옴 |
|
System.out.println( b ); | ||
반복문 | ||
for문 |
for(초기화;조건식;증감){ } |
|
while문 |
while(조건식) { ↑true,flase } |
flase일때 빠져나옴 |
do-while문 |
do{ }while(조건식) |
한번은 반드시 실행 |
선택문 | ||
if~else |
if(조건식) 명령어; else{ 명령어; } |
if(조건식) 명령어; else if(조건식){ 명령어; } |
switch문 |
switch(정수형 표현식) case 값1; 수행식 break; case 값2; 수행식 break; default: 수행식 break;
|
float사용못함 |
continue |
주로 반복문과 사용 반복문안에서 하나의 조건( if)에 해당되었을때 반복문 하단. 밑에 부분을 실행하지않고 다시 반복문 실행 |
if문 조건이 true일때 다시 for부터 반복 for(){ if(조건) conitonue; 수행 } |
break |
가장가까운 반복문을 빠져나가게함 |
기본기능+라벨 break A; 를만난다면 A라벨이 앞에 붙어있는 A : while(){}문을 빠져나가게함 |
배열 | 일차원배열 |
배열
일차원배열 이차원배열
기본속성
같은변수명+같은데이터형 다수의변수 int Array[100]
배열
일차원배열 이차원배열
기본속성
같은변수명+같은데이터형 다수의변수 int Array[100]
일차원배열
int[]nArray; 참조형배열변수
일차원배열
int[]nArray; 참조형배열변수
- 행과열을 값/개수확정 /new /하나의 독립된 객체
- 함수:변수를 바꿔주기,계산,값을 저장,읽기
선언
이차원배열
int[][]nArray; 행과열을 참조할수있는 참조형배열변수
행과열이 같은 배열생성
데이터형[][]배열변수명 =new 데이터형 [행개수][열개수]
int[][]nArray= new int[2][2]; ----2행2열
선언
이차원배열
int[][]nArray; 행과열을 참조할수있는 참조형배열변수
행과열이 같은 배열생성
데이터형[][]배열변수명 =new 데이터형 [행개수][열개수]
int[][]nArray= new int[2][2]; ----2행2열
생성
데이터형[]배열변수명 =new 데이터형[개수]
int[]nArray = new int[10] 배열 객체생성
데이터형[]배열변수명 =new 데이터형[개수]
int[]nArray = new int[10] 배열 객체생성
선언과 동시에 초기화
int[]nArray = {1,2,3};
int[]nArray = {1,2,3};
객체생성과 사용 | ||
클래스 = (변수+함수) 첫문자 대문자{field constructor and method declaration} | ||
멤버변수,필드 | 클래스안에 선언된 변수 |
공용변수 전역변수와 유사 객체속성은 곧 멤버변수 |
메소드 | 클래스안에 선언된 함수 | |
Static : 생성하지않고도 사용할 수 있는~ | ||
. (dot) |
멤버변수와 함수에 접근할 때 사용 |
|
new | 메모리와 관련하여 무언가를해줄때는 전부다 new를 이용 | |
get메소드{} |
Get{ 읽어온다} get메소드{멤버변수의 값을 읽어오거라~ } |
|
set메소드{} |
Set{저장한다} set메소드{외부로부터 값을 받아서 그 값을 이클래스 내부에있는 변수에 값을 넣는경우 } |
|
GC(가비지컬렉터) |
사용하지않는 메모리는자동으로 해지해버림 |
C++ C 는 아닌 자바만의 특별한 기능 |
접근제어자 |
|
접근제어자는 가장선두에 쓴다. |
Private(사적인) |
클래스 안에서만 접근가능 |
부모끼리만/// 자식은 자식끼리만 외부에서 사용을 못하게 하도록 할때 (호출을 못한다. ) |
Publice(공적인) |
전체에서 접근가능 |
|
Protected(보호) |
같은클래스와 패키지,하위패키지에접근가능 |
가족끼리만 사용가능 /상속 |
Friendly(친근하게) 생략된 제어자 |
지정자가 없으면 외부에서 접근가능/호출가능 같은 클래스와 패키지안에서만 접근가능 |
잘 쓰이지않음 같은클래스/패키지안에서만 접근 |
|
|
|
오버로딩 |
하나의 함수로 여러기능을 하게끔하는것 |
|
생성자 |
객체가 생성될떄 한번만 생성 자동으로 호출되는 메소드함수 리턴형이 없어서 리턴을 사용못합 클래스면=함수명 반드시 public의 속성을 가질것 |
매개변수를 통해 어떤것을 호출할지 결정 매개변수 있음 public MyClass(int A, int B){ } ←호출 매개변수 없음 public MyClass( ){ } ←호출 |
default(기본생성자) |
생성자가 없을때 기본생성자가 호출됨 |
class안에 들어가는 한 요소로 무조건 존재 하며, 주소의 기본 초기값을 초기화해줌 |
실제 출력되는 것은 유니코드 참조형 4byte 메모리주소를 저장하는 데이터형 클래스형 배열 인터페이스 |
변수(데이터 이름지정방법) 상수 메모리를 저장하는 공산 |
상수 불변의값
문자상수 유니코드 ‘a’ 숫자상수 |
- 메소드:일반함수형태와 같다(일반함수를 메소드안에 샥 집어넣은것과 똑같다.)
- 멤버변수들 앞에만 m_ 를 붙인다.
Book JavaBook = new Book();
JavaBook.SetTitle(“자바”) --자바북에는 여러 가지 이름이 있다. 지금은 텅텅 비어있겠지만 SetTitle에서 외부에서 너는 어떤 페이지수와 어떤타이틀명을 가지고있다는것을 집어넣어준다.
Book JavaBook = new Book();
JavaBook.SetTitle(“자바”) --자바북에는 여러 가지 이름이 있다. 지금은 텅텅 비어있겠지만 SetTitle에서 외부에서 너는 어떤 페이지수와 어떤타이틀명을 가지고있다는것을 집어넣어준다.
class book{
String m_str책의정보
int m_멤버변수
}
메소드형식
Set메소드( ){
}
get메소드( ){
}
class Card{ 속성
String 문자열;
Int 멤버변수}
함수들 나열
set메소드{외부로부터 값을 받아서 그 값을 이클래스 내부에있는 변수에 값을 넣는경우 }
get메소드{멤버변수의 값을 읽어오거라~ }
class Card{ 속성
String 문자열;
Int 멤버변수}
함수들 나열
set메소드{외부로부터 값을 받아서 그 값을 이클래스 내부에있는 변수에 값을 넣는경우 }
get메소드{멤버변수의 값을 읽어오거라~ }
- 접근제어자: 멤버변수와 멤버함수의 접근을 제어
- 함수 외부사용에 태클을 건다.
1. 접근제어자 사용형식
1. 접근제어자 사용형식
1) 접근제어자 데이터형 변수명
public int m_A;
2) 접근제어자 리턴형 함수명
private int getB(){
return m_A;
}
1) 접근제어자 데이터형 변수명
public int m_A;
2) 접근제어자 리턴형 함수명
private int getB(){
return m_A;
}
1.객체지향 언어
- 기존의 프로그래밍 언어의 몇가지 규칙을 추가한 보다 발전된 형태이다.
- 규칙을 이용해서 코드간에 서로 관계를 맺어 줌으로서 유지적인 프로그래밍이 가능하다.
- 객체지향언어특징:
:코드의 재사용성이 높다.
:코드의 관리가 용이하다.
:신뢰성이 높은 프로그래밍이 가능하다.
2.클래스와 객체
- 클래스란?
: 객체를 정의해 놓은것이다.
: 객체의 설계도 또는 틀이다. // 클래스= 레시피
클래스 객체
tv설게도 tv
붕어빵틀 붕어빵
:클래스의 선언
[접근제어자][지정예약어]class 클래스명 [extends 클래스명][implements인터페이스명]{}
:객체란?
실제로 존재하는것, (사물또는 개념 (ex)컴퓨터 모니터 형광등 ...)
:객체의 구성요소
-(속성/필드/상태)멤버변수
(ex)크기 길이 뮤게 높이 색상....
-기능 (메서드,function,행위,함수
(ex)켜기,끄기,볼륨올리기...
2.메서드
- 메서드란?
: 어떠한 작업을 수행하기 위한 명령문의 집합
: 주호 어떠한 값을 입력받아서 처리하고 그결과를 돌려준다.
: 입력받는 값이 없을 수도 결과를 반환하지않을 수도 있다.
: 반복적을 사용되는 코드를 줄이기 위해-> 코드량도 줄고 유지보수가 편리하다.
:뭔가를 받아야할때는 변수타입 변수면 적기 <- 얘네를 매개변수라고 한다. 값은 인자값이라고 부름
_작성방법_
반환타입 메서드명(변수타입 변수명,변수타입 변수명....)- 메서드의 선언부
{-메서드의구현부
수행될 코드
return;반환값
} ---반환값의 타입을 맨 마지막에 적어준다.
add(int a, intb){
re=a+b;
return;반환값
}
6.return문
- 메서드가 정상적으로 종료되는 경우
: 메서드의 블럭{}내의 마지막문장까지 수행하였을떄
: 메서드의 블럭{}내에서 return문을 만났을떄
- 반환값
:없는경우에는
return;하고 끝내버리기//생략도 가능하다.
return 반환값 ;
7.매개변수
- 매서드를 호출할떄 매개변수로 지정한값을 메서드의 매개변수에 복사해서 넘겨준다.
: 기본현 매개변수
: 단순히 저장된 값만을 복사한다.
: 변수의 값을 읽기만 할수있다.
: 참조형 매개변수
: 인스턴스 주소를 복사한다.
: 변수의 값을 읽고 변경할수있다.
8.메서드의 종류
- 클래스메서두
: 객체생성없이 '클래스명. 메서드명()'으로 호출항다.
: 인스턴스 친구와 관련없는 작업을 수행한다.
: 매서드내에서 인스턴스 친구들을 호출할수 없다.
: 매서드내에서 인스턴스 변수를 사용하지않는다면 클래스 메서드로 만들면 된다.
-인스턴스 메서드
: 인스턴스를 생성 후, '참조변수명. 메서드명()'으로 호출합니다.
: 인스턴스변수나 인스턴스 메서드와 관련된 작업을 수행한다.
9.클래스멤버와 인스턴스 멤버간의 참조와 호출
- 클래스멤버에서는 인스턴스멤버를 호출할수 없다.
- 인스턴스 멤버에서는 클래스 멤버를 호출할수 있다.
-
- 같은 클래스의 멤버간에는 객체생성이나 참조변수없이 참조할수있다.
10. 재귀호출(Recursive call)
- 메서드 내부에서 메서드 자기자신을 다시 호출하는것
11. 매서드 오버로딩
1.7 → api → sistem → println(종류)
- 한 클래스내에 같은 이름의 매서드를 여러개 정의하는것 //ex) change 메서드
-조건
:메서드명이 동일해야한다
:매개변수의 개슈 또는 타입이 달라야한다.
:리턴타입은 전혀 상관이 없다.
-오버로딩의 장점
:매서드를 이름만으로 구분한다면 한클래스내의 모든 매서드의 명칭이 달라야한다.
:근본적으로 같은기능을 하는것인데 다른이름으로 표현되면 기억하기가 어렵다.
:매서드의 이름을 짓는데 고미ㄴ을 덜수있다. 하하하하하
12.생성자
- 인스턴스가 생성될때 호출되는 인스턴스 초기화 메서드
-특징
: 메서드처럼 클래스내에 선언된다.
: 리턴값이 없다.
(생성자도 메서드이기때뭉데 맅언되는값이 없는 void를 적어야하지만
모든 생성자가 리턴값이 없기때문에 생략한다.
- 정의방법
:기본 생성자
클래스명(){
}
:매개변수가 있는생성자
클래스명(변수타입,변수명,... ){
}
13.변수의 초기화
- 변수를 선언하고 처음으로 값을 이력하는것을 '변수의 초기화'라고한다.
- 초기화방법
int a = 10;
: 명시적초기화
: 생성자를 이용한 초기화
: 초기화 블럭을 이용한 초기화
함수란? 약간.. 자동으로 해주는 명령어..
오버라이딩(overriding)
면접질문 ex) 오버로딩은 메서드를 같은 이름으로 한번 더 쓰깅 오버로딩은 타입이 달라야함 매서드명은 같아야하고 반환타입은 상관없다.
오버라이딩은부모에있는 메서드가 만에 안들어서 바꾸는것 오버라이딩은 같아도됨
스프링 : 일하기위한 공통 틀
여러가지 객체배열 | Vector | 고무줄바지 같은 전자동의 의미 |
Vector() | 10개의객체를 저장할수있는 Vector의 인스턴스를 생성한다. | 구매내역을 저장하는데 사용하거나.. |
add() | 객체하나를삭제한다. | Vector에객체를 추가한다. |
remove() | Vector에 들어있는 객체의 수량 | 객체하나를 삭제한다. |
get(int index) | index번째의 방의 객체를 반환한다. | |
size() | Vector에 들어있는 객체의 수량 | |
isEmpty() | 비어있는공간이야? 결과값이 boolean타입 |
- this. 지역변수와 인스턴스변수의 명칭이 같은때 구분하기위해사용
- (이 인스턴스의~ 라는 뜻을 담고있음 둘다 클래스에서 사용 못함 )
- super. 자손의 멤버와 부모의 멤버의 명칭이 같을때 구분하기 위해 사용한다.
- (이 인스턴스의~ 라는 뜻을 담고있음 둘다 클래스에서 사용 못함 )
int a; - 변수 선언
int a = 1 -변수 저장 (값)
선언 ->변수 사용 가능 ->초기화
(반드시 하는 루트)
초기화란 기초 값을 지정해준다고 생각하면됨.
int a= 1; 이다 나중에 바꿀 수도 있지만... 일단....🙆♂️
_$ 특수기호이지만 허용 숫자로 시작은 안됨
상수 - 대문자
클래스 첫글자 - 대문자
변수를 선언할때는 타입과 이름을 함께 써주어야한다.
참조변수의 타입은 클래스이름
타입이 클래스 이름인것들은 모두 참조변수이다
앞에 class 가 붙으면 무조건 클래스변수 클래스메소드
뒤에 소가로가 붙으면 무조건 메소드()
대문자 집합은 상수
String 은 대문자부터
static은 클래스
int [] a = new int [];
인트형 배열 a를 생성함을 선언하고 초기화한다.
Tv t1 = new Tv();
Tv클래스의 인스턴스t1을 생성한 후에 Tv참조변수 주소값을 찾아간다
매서드호출: 참조변수.메서드이름(값,값);
오버로딩: 한클래스내에 같은이름메서드 여러개있는것
인프런
무료 자바 강의사이트 인프런
형식
오버로딩
오버로딩
|
중복되는 메소드명을 클래스안에서 정의할수있도록하는 것 메소드에만 적용가능
같은 함수명으로 다양한 값을 받아처리-함수명 하나만 기억하면 됨 리턴값으로는 구분하지못함 매개변수로 구분가능하기에 매개변수를 명확하게 지정하고 확인필수
Ex) add(){} |
하나의 클래스 |
오버라이딩
|
상속관계에서 이루어짐 부모클래스의 메소드를 자식클래스에서 다시 재정의하는것
|
자식이 재활용할라하는뎅 추가토핑하는것.. 자식이기는부모없다고 자식이 다이김
주의사항 함수명이 같아야한다. 함수의 매개변수가 같아야한다. 리턴형이 같아야한다. |
생성자 | ||
this
|
this객체자신을 참조하는 참조형 클래스변수
사용방법 This.멤버변수 This.메소드() 내부에서 사용됨 |
|
this() | super() 랑 동시 사용 불가 // *첫줄에 사용 | |
final | final이 붙으면 상속과 오버라이딩이 불가 | 클래스와 메소드 맨 앞쪽에 위치 |
상속관계에서 호출순서 | 상위생성자에서부터 하위생성자 호출 | |
생성자에 매개변수가 있는 경우 자동호출 안됨 | super 키워드사용 | |
super |
하위클래스에서 상위클래스에 접근할때 super.멤버변수명 super.메소드명(매개변수) super() *첫줄에 사용 |
|
참조변수를 이용한 형변환과 호출 |
캐스트연산자 ( ) 사용 하위클래스 → 상위클래스 형변환 가능 접근지정자에 따라 접근이 결정된다. 생성된 하위 클래스에서 상위클래스형 변환을 통해 하위클래스의 멤버에 접근불가
상위클래스의 메소드 가 하위클래스에 오버라이딩(재정의)된 경우에 상위 클래스 참조변수에서 오버라이딩된 메소드를 호출 하면 하위클래스의 메소드가 실행
|
|
abstract 추상클래스 |
하위클래스에서 구현할 메소드의 원형을 가진 상위 클래스이다. 상위 클래스로만 존재 자체를 객체로 생성할수없다. |
1) 생성자 |
class이름{ } |
2) 초기화블럭 |
이름 { } |
3) 메소드 |
반환타입 메소드명(매개변수){
return 값; } (값에 따라 반환타입이 달라짐 반환값이 없을때는 void) |
4) abstract |
abstract class 클래스명{ 일반 멤버변수; 메소드들; 생성자; abstract 반환형 메소드명(); } extend 키워드를 이용하여 추상 클래스를 상속 추상메소드를 하위에서 모두 구현 할 필요없다. |
접근지정자 키워드
하나의 커다란 틀 클래스
목적에 맞는 변수와 함수들
+생성자
추상클래스 = 일반멤버 +추상메소드
인터페이스 =추상메소드 +상수
- 상위클래스로만 사용가능
- 하위에서 구현할 함수의원형을 선언
- 추상클래스는 추상메소드를 일부구현가능
- 인터페이스는 모두 구현해야함(강제적으로 하나라도 놓치면 안됨
- interface 인터페이스명 끝에 ~able 붙일것
interface 인터페이스명~able끝에붙일것
{
데이터형 변수명 = 값;
리턴형 메소드명(매개변수0...n);
}
인터페이스의 상속형식
- 인터페이스가 인터페이스를 다중상속
- 추상클래스는 단일상속
- 인터페이스는 다중상속가능
interface 인터페이스명~able끝에붙일것
{
데이터형 변수명 = 값;
리턴형 메소드명(매개변수0...n);
}
class 클래스명 implements 인터페이스명
{
}
형식
멤버 상속
부모님의 상속과 유사함
객체와 객체를 연관시킨다
클래스와 클래스를 연과시킨다.
오버라이딩final
상속관계에서 생성자의 호출순서
참조변수를 이용한 형변환과 호출
상속(inheritance)
- 하위클래스는 상위클래스의 만들거나 정의한 변수들을 그대로 사용가능하다.
- 코드의 재사용으로 효율성이 높고 안정적
상속형식
class 클래스명 extends 상속클래스명{
} ↑자식클래스 ↑ 부모클래스
- 모든 클래스의 부모클래스 -> Object
- 상위클래스 접근지정자에 따라 접근이 제한
멤버상속
상위클래스에 지정된 private멤버는 해당 클래스 외 호출,사용 불가
상위클래스에 지정된 public멤버는 해당클래스,하위클래스, 외부 객체생성 호출 사용가능
protected 상위클래스 멤버는 같은패키지일때는 public멤버처럼 사용되지만
다른패키지인경우 상위멤버를 하위클래스안에서만 사용할뿐 외부사용은 할수없다.
패키지가 같은 경우 상위클래스에서 default멤버들은 public멤버처럼 사용가능
패키지가 다른 경우 하위클래스 → 상위클래스 default멤버 호출,외부 사용불가
import | import 패키지명.클래스명; |
import 패키지명.*; 아스트릭스 사용시 클래스명을 따로 입력하지않아도 임폴트한 패키지내부클래스를 전부 사용하겠다 선언 |
static
package import
'it공부 > Java' 카테고리의 다른 글
프로그래머스 자바강의 요점정리 (0) | 2020.07.05 |
---|---|
자바 [Eclipse] 이클립스 단축키 정리모음 (0) | 2020.07.05 |
JAVA 개념 공부 요점정리( 2 ) (0) | 2020.07.05 |
JAVA 수업개념 요점 정리( 1 ) (0) | 2020.07.05 |
Thread 와 Array 를 이용한 예제 (0) | 2020.07.05 |