본문 바로가기
language/Java

자바언어의 기본 구성

by 스파이디웹 2020. 2. 28.
728x90

※메소드(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){

}

 

-같은 역할을 하는 메소드는 같은 메솓 이름을 가져야 한다.

 

-생성자도 매개 변수에 따라서 다르게 인식(오버로드의 일종)

728x90

댓글