※메소드(method)
-어떤 값을 주고 결과를 넘겨주는 것
ex)public boolean checkpassword(String password){ //밑줄 친 부분이 메소드 이름
//중괄호 안의 내용이 메소드 내용
}
-'checkpassword 메소드' 라고 부름.
※매개 변수(parameter)
-없어도 되고, 몇 개가 와도 상관 없다.
ex)public boolean checkpassword(string password){ //밑줄 친 부분이 매개 변수, 앞의 string은 매개변수의 리턴 타입
}
※리턴 타입(return type)
-메소드가 리턴 하는 타입을 나타냄
ex)public boolean checkpassword(string password){ //밑줄 친 부분이 리턴타입, boolean은 참 혹은 거짓을 리턴함
}
※접근 제어자(access modifier)
ex)public boolean checkpassword(string password){ //밑줄 친 부분이 접근 제어자
}
※클래스(class)
-자바의 가장 작은 단위
-메소드가 소속 되는 곳.
-한 개의 클래스 안에는 0개이상의 여러 메소드가 존재 할 수 있다.
-상태(state)와 행동(behavior)이 있어야만 한다.(없어도 되긴 한다.)
-상태(state)는 클래스안에, 메소드 밖에 정의한다.
ex)public class DoorLockManager { //밑줄 친 부분이 클래스 이름
String currentpassword;//밑줄 친 부분이 변수(variable),클래스의 특성을 결정짓는 상태에 해당
//메소드 정의(행동에 해당)
}
※자바 컴파일 및 실행 절차
※메인 메소드(main method)
-실행을 목적으로 하는 모든 자바 클래스는 main()메소드가 반드시 있어야 한다.
-public static void main(string[] args){
}
-main method()도 클래스안에 포함되어 있어야 한다.(메소드이기 때문에)
※System.out.println(),System.out.print()
-println()메소드는 줄바꿈을 하여 출력
-print()메소드는 줄바꿈을 하지 않고 연달아 출력
-println(),print() 안에 객체.메소드()형태가 들어갈 수 있다.
ex)1. System.out.println(dogCar.getCurrentSpeed());
2. System.out.println("add="+calc.add(a,b)); → add= 객체.메소드결과
"표현하고자하는 문장"+ 객체.메소드처럼 +로 묶어준다.
※객체
-자바는 객체 지향 언어(object oriented language)이다.
-이 세상의 모든 사물들은 객체로 되어 있다.
-인스턴스(instance):설게도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
ex)public class car {
public Car(){//Car를 생성자(Constructor)라고 부른다.
}
}
※생성자(Constructor)
-객체를 생성할 때 필요하다
-기본 생성자(default constructor): 매개 변수가 없는 생성자
-기본 생성자는 클래스를 컴파일할 때 javac를 실행하면 클래스 파일 안에 자동으로 만들어진다.
-선언부에 리턴 타입이 없고, 메소드 이름 대신 클래스 이름과 동일하게 이름을 지정하는 것
-생성자에 리턴 타입이 없는이유는 생성자의 리턴 타입은 클래스의 객체이기 때문.
-클래스와 이름이 동일해야 컴파일러가 생성자임을 인식
-매개변수가 없는 생성자는 다른 생성자가 없을 경우 기본으로 컴파일할 때 만들어짐.
-매개변수가 있는 생성자는 매개변수가없는 생성자 선언 후, 매개변수있는 생성자를 또 선언.
-생성자는 개수가 상관이 없다.
ex)public class 클래스이름
public Car(){
} 처럼 생성자 선언.
ex)Car dogCar=new Car();
클래스(껍데기), 객체 , 예약어 new ,생성자; 순으로 객체를 만든다.
미리 만들어둔 메소드가 있으면 객체.메소드; 로 객체를 행동 시킬 수 있다
※변수
1.지역 변수(local variables)
-중괄호 내에서 선언된 변수
-지역 변수를 선언한 중괄호 내에서만 유효하다.
2.매개 변수(parameters)
-메소드에 넘겨주는 변수
메소드가 호출될 때 생명이 시작되고, 메소드가 끝나면 소멸된다
3.인스턴스 변수(instance variables)
-메소드 밖에, 클래스 안에 선언된 변수, 앞에는 static이라는 예약어가 없어야 한다.
-객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸된다.
4.클래스 변수(class variables)
-인스턴스 변수처럼 메소드 밖에, 클래스 안에 선언된 변수 중에서 타입 선언 앞에 static이라는 예약어가 있는 변수
-클래스가 처음 호출될 때 생명이 시작되고, 자바 프로그램이 끝날 때 소멸된다.
ex)
public class VariableTypesKor {
int 인스턴스_변수;
static int 클래스_변수;
public void method(int 매개_변수) {
int 지역_변수;
}
}
※가비지 콜렉터(garbage collector)
-자바에서는 객체를 더 이상 사용하지 않으면 자동으로 없어진다.
-가비지 콜렉터가 때가 되면 메모리를 청소해준다.
※변수이름 짓는 규칙
1.길이의 제한은 없다
2.첫 문자는 유니코드 문자, 알파벳, $(달러표시),_(언더스코어)만 올 수 있다.(보통 변수 이름은 일반적으로 $와_로 시작하지 않는다.)
3.두 번째 문자부터는 유니코드 문자, 알파벳, 숫자, $,_중 아무것이나 사용할 수 있다.
4.보통은 메소드 이름처럼 지정해서 사용한다. 첫 문자는 소문자로 시작하는 단어이고, 두 번째 단어의 첫 문자만 대문자로 시작하면 된다.
ex)godOfJava, BASIC_JAVA,godOfJava1,godOfJava2
※자바의 자료형
1.기본 자료형(primitive data type)
-바로 초기화가 가능한 것
●정수형: byte, short, int, long, char
●소수형: float, double
●기타: boolean
byte(8bit)
short(16bit)
int(32bit)
long(64bit)
char(문자열과 관련된 부분에서 사용, 정의할 때 홑따옴표를 사용)
char charMin= '\u0000';
System.out.println("charMin=["+charMin+"]"); → charMin=[ ]
//밑줄 친 부분들이 출력됨 총 3개로 나뉘어있으므로 +가 2개
float(부호 1자리+지수8자리+기수23자리=32비트)
double(부호 1자리+지수11자리+기수52자리=64비트)
boolean(참 혹은 거짓)
-더하기나 빼기 등의 기본 연산도 사용할 수도 없다.
2.참조 자료형(reference data type)
-new를 사용해서 초기화하는 것
-String은 예외이다.
-String bookName1 = "God Of Java"; 처럼 바로 초기화 할 수 있다.
-String bookName2 = new String("God Of Java"); 로 해도 된다.
※형 변환
-해당 결과를 원하는 타입으로 바꾸는 것
ex)byteMin=(byte)(byteMin-1); //밑줄 친 부분이 형 변환
※연산자(operator)
-String이라는 클래스만 +연산이 가능하다.
-계산을 위한 산술 연산자는 기본 자료형 중에서 boolean을 제외한 나머지 타입에서 사용
1.+:더하기 연산자(additive operator)
2.-: 빼기 연산자(subtraction operator)
3.*: 곱하기 연산자(multiplication operator)
4./: 나누기 연산자(division operator)
5.%: 나머지 연산자(remainder operator)
※복합대입연산자(Compound Assignment Operator)
1)+=: 기존 값에 우측 항의 값을 더함
2)-=: 기존 값에 우측 항의 값을 뺌
3)*=:기존 값에 우측 항의 곲을 함
4)/=:기존 값을 우측 항의 값으로 나눔
5)%=:기존 값을 우측 항의 값으로 나눈 나머지
※단항연산자
+:단항 플로스 연산자(Unary plus operator)
-:단항 마이너스 연산자(Unary minus operatior)
++:증가 연산자(Increment operator)
--:감소 연산자(Decrement operator)
!: 논리 부정 연산자(Logical complement operator)-boolean타입에서만 이 연산자를 사용할 수 있다.
※비교연산자
==: 같음
!=: 같지 않음
>: (왼쪽 값이) 큼
>=: (왼쪽 값이) 같거나 큼
<:(왼쪽 값이) 작음
<=:(왼쪽 값이) 같거나 작음
==,!=는 모든 기본 자료형과 차마조 자료형에서 사용 가능
char==int, double==int, boolean == boolean은 비교가능
boolean == int, boolean == char은 비교 불가능
※논리 연산자(Conditional Operator)
&&: AND결합. Conditional AND
||: OR결합. Conditional OR
(? : ): 삼항연산자. Conditional operator ? : -변수=(boolean조건식) ? true일때값 : false일때값;
※형 변환(Casting)
-자바의 형 변환은 기본 자료형과 참조 자료형 모두 괄호로 묶어주면 된다.
-boolean타입은 숫자로 변환할 수 없기 때문에, 형 변환이 불가능
-기본자료형 → 참조자료형, 참조자료형 → 기본자료형으로의 형 변환은 절대 안된다.
※&&와 &, ||와 |의 차이
-&&의 경우 좌측에 있는 연산이 false면 우측에 있는 연산을 수행하지 않는다.
-&의 경우는 좌측에 있는 연산과 우측에 있는 연산을 비교해야되기 때문에 모든 연산을 수행한다.
-boolean 비교를 할 때에는 &&나||를 사용할 것을 권장
-||의 경우 좌측이 true면 우측 연산을 수행 하지않음
-|의 경우 좌측이 true여도 우측 연산과 비교를 위해 모든 연산을 수행
※조건문 if
-if(boolean값) 처리문장;
ex)if(true) System.out.println("It's true");
-if(boolean값) 처리문장1;
else 처리문장2;
-if(boolean값) {
처리문장1;
처리문장2;
.....;
} else {
처리문장3;
처리문장4;
......;
}
-if(boolean값){
처리문장1;
} else if(boolean값) {
처리문장2;
} else if(boolean값){
처리문장3;
} else {
처리문장4;
}
※Switch문
-switch(비교대상변수) {//매개변수가 비교대상변수 자리에 들어감
case 점검값1:
처리문장1;
...
break; //switch문 빠져나감
case 점검값2:
처리문장2;
...
break;
default://앞에 있는 조건에 맞지 않은 경우에 수행
처리문장3;
...
break;
}
※반복문
-for루프,while문 두 개의 반복문이 있다.
-while(boolean조건) {
처리문장;
......
}
-continue
그 뒤에 있는 문장은 건너뛰고, boolean조건 점검 부분으로 다시 가라는 의미
-do {
처리문장;
.....
} while(boolean조건);
-for(초기화;종료조건;조건 값 증가){
반복문장;
}
※배열
-한 변수에 여러 개의 값을 넣을 수 있는 것.
-자료구조 중에서 list구조에 해당(선입선출구조인 Queue,키-값(key-value)구조인 Map,데이터가 앞뒤로 연결된 LinkedList등이 있음)
-한 가지 타입에 대해서만 가능함.
-배열 변수를 정의할 때 대괄호 안에는 아무것도 써주면 안 된다.
-배열을 선언할 때 중괄호를 사용하여 초기화시키면서 선언도 할 수 있다.(절대 변경되지 않는 값을 지정할 때 사용 ex)12개의 달)
ex)
int [] lottoNumbers;
int lottoNumbers[];
이렇게 선언한 경우, 몇 개의 데이터가 들어가는지 알 수가 없으므로 초기화를 해야한다.
ex)
int lottoNumbers[]=new int[7];
int lottoNumbers;
lottoNumbers =new int[7];
ex)
int lottoNumbers[]={5,12,23,25,38,41,2};
int oneDim[]=new int[]{1,2,3,4,5,6,7,8,9,10};
-배열의 인덱스는 0부터시작
-배열의 기본값
byte: 0
short: 0
int: 0
long: 0
float: 0.0
double: 0.0
char: [ ]//\u0000 이다
boolean: false
string:null
마음대로 만든 참조 자료형(class):null
참조자료형은 public String toString()이라는 메소드를 만들지 않으면 타입이름@고유번호 순으로 내용이 출력됨
-배열을 선언하지 않고 그냥 출력할 시의 기본값
byteArray=[B@고유번호
shortArray=[S@고유번호
intArray=[I@고유번호
longArray=[J@고유번호
floatArray=[F@고유번호
doubleArray=[D@고유번호
charArray=[C@고유번호
booleanArray=[Z@고유번호
String=[Ljava.lang.String;@고유번호
직접만든 class=[L클래스이름;@고유번호
[는 배열을 나타냄
[바로뒤에 알파벳은 타입을 나타냄
(L은 참조자료형을 나타냄)
※배열의 길이를 알아내는 법
-배열 이름.length를 붙여주면 int타입으로 된 배열 크기를 리턴해 준다.
ex)System.out.println(oneDim.legnth);
-int 와 같은 모든 기본자료형에는 절대로.length와 같이 점을 찍어서 기능을 호출하거나 계산x
-배열,클래스와 같은 참조 자료형에서만 점(.)을 찍을 수 있다.
※배열을 위한 for루프
-for (타입이름 임시변수명 : 반복대상객체) {
}
ex)public void newFor() {
int oneDim[]=new int[]{1,2,3,4,5,6,7,8,9,10};
for(int data:oneDim) {
System.out.println(data);
}
}
※자바 실행할 때 원하는 값 넘기기
-main()메소드의 매개변수인 args라는 String타입의 배열에 값을 전달하는방법:
$ Java 클래스이름 a b c d
a
b
c
d
$
처럼 클래스 이름 뒤에 공백으로 분리한 문자열을 나열하면 이 문자열들이 args라는 배열에 전달.
-애플리케이션이 시작할 때 전달해야 할 값들이 있다면, 이와 같은 방법을 사용
※자바 코드의 영역들
public class ReferenceString{
String instanceVariable; //인스턴스 변수
public ReferenceString() {}
public ReferenceString(String arg) {}//여기까지가 생성자영역
public static void main(String args[]) {
ReferenceString reference = new ReferenceString();
}
public String getString(){
retrun instanceVariable;
}
public void setString(String str){
instanceVariable=str;
}
}//여기까지가 메소드 영역
※예약어 this
-객체의 변수와 매개 변수의 이름이 동일할 때, 인스턴스의 변수를 구분하기 위해서 사용
public MemberDTO(String name){
this.name = name;
}
-변수뿐만 아니라 메소드에도 this를 지정할 수 있다.
※method overloading
-메소드 이름은 같게하고 매개 변수들을 다르게 하여 만드는 것.
-개수가 같아도 타입의 순서가 다르면 다른 메소드처럼 인식
ex)public void print(int intData,String stringData){
}
public void print(String stringData,int intData){
}
-같은 역할을 하는 메소드는 같은 메솓 이름을 가져야 한다.
-생성자도 매개 변수에 따라서 다르게 인식(오버로드의 일종)
'language > Java' 카테고리의 다른 글
[Java] Compile과 Decompile (feat. .JAR, .WAR, .class, .java) + JAD (0) | 2023.02.17 |
---|---|
[Java] public static void main(String args[]){}란? 이유 (0) | 2022.09.05 |
[Java] Guava란? Guava를 써야되는 이유 (0) | 2021.05.09 |
캡슐화와 정보은닉 (0) | 2020.06.09 |
자바의 기본구성2 (0) | 2020.03.02 |
댓글