Java 81

[Java]Static block

동일 클래스 안의 main보다 먼저 실행됨 즉 main에 실행코드가 없어도 static블락안에 있는 내용이 실행된다. 단, 다른 클래스에 main이 있는 경우는 main이 순차적으로 실행되다 static블락이 있는 클래스를 인스턴스화 할때 그때 생성자보다 먼저 static블락이 실행된다. static 블락안에서는 정적 멤버만 사용가능 구조는 아래와 같다. ▲ 클래스안에 메소드와 맴버들을 만들어보자. ▲ 그리고 그 아래에 이어서 static block을 만들어보자. statc block안에는 당연히 인스턴스형 맴버는 올 수 없다는 것을 이제는 알 것이다. 이렇게 StaticBlock이라는 자바파일에서 클래스를 만들고 같은 패키지의 다른 파일에서 호출해보자. ▲ StaticBlockApp이라는 자바파일안에서..

Java 2022.03.07

[Java]modifier part.2

※이전 포스팅과 이어지는 내용입니다. 이전 포스팅에서 정적맴버와 인스턴스형 맴버까지 알아보았다. 이제는 예제를 보면서 이해해보자. ▲ static이 붙지않은 맴버변수들은 반드시 인스턴스화를 해서 메모리를 만들어야지 사용가능하다. 하지만 static이 붙은 정적맴버변수들은 생성과 동시에 이미 자동초기화되어 메모리가 있으므로 바로 사용가능하다. 인스턴스형 메소드는 JVM에서 마지막 단계에 실행되므로 모든 맴버를 사용할 수 있지만, 정적메소드는 JVM에서 첫 단계에서 실행되므로 첫 단계에서는 인스턴스형 맴버들이 아직 생성되지 않았으므로 사용할 수 없다. ▲ 새로운 클래스에 인스턴스형 맴버와 정적맴버를 만들었다. ▲ 같은 개념의 반복이다. 정적맴버는 인스턴스화 할 필요없이 클래스명으로 접근해서 사용하면된다. 인..

Java 2022.03.07

[Java]전역변수와 지역변수 & modifier

멤버변수(클래스안에서 선언된 변수)는 해당 클래스안의 모든 메서드에서 사용 가능하고 전역변수(Global variable)와 같다. 멤버변수는 초기화를 하지 않고 사용해도 해당 자료형의 기본값으로 초기화 된다. 예] int : 0, double : 0.0 참조형 : null, boolean : false 등 지역변수(Local Variable)는 특정 지역 안에서 선언되어 그 지역에서만 사용되는 변수로 그 지역을 벗어나면 그 변수는 메모리에서 사라진다. 메소드 안에서 선언된 변수 혹은 Block(if문,while문,for문,try문등) ({ })안에서 선언된 변수를 지역변수라 한다. 또한 매개변수도 지역변수이다. 지역변수는 선언된 곳을 벗어나면 메모리가 해제된다. 지역변수는 사용시 반드시 초기화를 하고 ..

Java 2022.03.07

[Java]접근지정자(Access Modifier)

접근지정자란? 클래스와 클래스 사이 혹은 클래스의 맴버간의 접근을 제어하는 기능을 가진 한정자 접근지정자의 크기) Public > protected > default > private 순이다. 여기서 default는 생략형 또는 package 접근지정자라고도 한다. 아무 접근지정자도 사용하지 않으면 default인 것이다. ▲ class앞에 아무것도 붙지 않았으므로 package 접근지정자가 생략되어 있는 것이다. public을 사용하면 모든 클래스에서 접근가능하다. private을 사용하면 자기 클래스안에서만 접근가능하며 다른 클래스에서는 접근 불가능하다. 접근지정자는 인터페이스와 클래스, 클래스의 모든 맴버에는 다 붙일 수 있다. 하지만 지역변수(메소드 안에서 선언한 변수 등)에는 붙일 수 없다. 또..

Java 2022.03.07

[Java]Class - part.3

part.1에서 만든 Class Person을 사용하기 위해 하나의 클래스를 더 만들어보자. 이번에는 자동차를 추상화해보자 즉, 자동차 설계도를 만들자 즉, 자동차 클래스를 만들자. ▲ 클래스명은 Car로 하고 이번에는 상수도 사용해보았다. 우리가 자동차하면 생각나는 속성들 몇가지를 맴버변수로 만들었다. 여기서 소유주 owner의 자료형은 우리가 class - part.1에서 만들었던 class Person을 자료형으로 사용하였다. ▲ 맴버메소드로 자동차의 대표적인 행동(?)으로 운전을 가져와 만들었다. ▲ 마지막으로 맴버변수초기화를 위한 메소드와 최종 정보를 출력하기 위한 메소드를 만들었다. 이제 출력하기위한 CarApp.java파일에서 출력해보자. ▲ main메소드안에서 car1이라는 이름의 인스턴스..

Java 2022.03.05

[Java]Class - part.2

이번에는 학생을 추상화 시켜보자 즉, 설계도를 만들어보자 즉, 클래스를 만들어보자. 1) Student 클래스 만들고 맴버변수 및 맴버메소드 만들기 2) 다른 java 파일에서 실행시켜보자 ▲Student형의 인스턴스변수 student1을 선언과 동시에 객체화(메모리 할당)시켰다. 이후 student1이 참조하고 있는 주소값을 출력해보자. ▲ 인스턴스 변수 선언과 객체화 모두 잘 된 것을 볼 수 있다. ▼이제 여기서 student1이 상속받은 Student클래스의 맴버메소드를 사용해보자. 출력하게 되면 아래와 같은 결과값이 출력된다. ▲ NullPointerException 이라는 Run-time error가 발생하는데 왜그럴까?? 바로 .printStudent를 호출하면 우리가 정한 맴버메소드를 보다시..

Java 2022.03.04

[Java]Class - part.1

Java, JavaScript, C++, C#과 같은 언어들은 객체지향 프로그래밍언어라고 한다. 객체지향 프로그래밍(OOP : Object Oriented Programming)이란? : 인간의 현실세계를 정보화 시스템으로 반영하기 위해 모든 개념(사물, 현상, 사건)등을 객체화 시켜 프로그램에 반영하는 것. 여기서 말하는 객체(Object)란 유무형의 물체, 현상, 사건 등을 의미한다. 쉽게 말해 자동차, 컴퓨터, 사람 등등이 바로 객체이다. 이러한 객체는 행동과 속성(성질or상태)를 가지고 있다. 사람은 이름,키,몸무게,혈액형 등의 속성(성질or상태)를 가지고 있고 밥을 먹는다, 잔다, 운동한다 등과 같은 행동이 있다. 자동차는 브랜드, 차종, 엔진 등의 속성(성질or상태)를 가지고 있고 주행한다, ..

Java 2022.03.04

[Java]method없이 가위바위보게임 만들기

제목이 곧 내용이다. method를 사용하지 않고 컴퓨터와 가위바위보 게임을 하는 코드를 만들어보자 컴퓨터는 랜덤으로 가위or바위or보를 낼 것이고, 우리는 사용자의 입력을 받아서 승패 또는 무를 비교할 것이다. 컴퓨터는 1부터 3까지의 숫자 중 무작위로 하나를 리턴할 것이고, 1은 '가위', 2는 '바위', 3은 '보'라고하자. 0) 상수 선언 ▲ 우선 숫자로 입력하고 출력하려니 숫자와 가위or바위or보라는 문자를 비교하는 것이 귀찮아서 상수로 해당 숫자와 연결하자. 1) 출력메뉴 만들기 ▲ 가위바위보 선택과 종료를 위한 출력용 메뉴를 만들었다. 2) 컴퓨터 숫자 랜덤발생기 만들기 특정범위에서 숫자를 랜덤하게 발생시키는 코드는 아래와 같은 규칙이 있다. ▲ Math라는 class에서 random이라는 ..

Java 2022.03.04

[Java]Call By Value & Call By Reference

Call By Value 와 Call By Reference는 메소드 호출과 관련된 개념으로 매개변수에 값을 전달(복사)할 때는 Call By Value를, 매개변수에 메모리의 주소값을 전달(복수)하는 경우에는 Call By Reference를 사용한다. 1) Call By Value 매개변수의 타입이 기본자료형인 경우에 사용한다. 간단한 예제를 통해서 알아보자. ▲ callByValue메소드를 이용해서 처음입력값과 두번째입력값의 데이터 값을 swap하려고 한다. main메소드에서 first를 1, second을 10으로 변수선언 및 초기화까지하고 출력을 먼저해본다. 그리고 callByValue메소드를 호출해본 후 다시 first와 second의 값을 출력해봤다. 결과는 아래와 같다. ▲ callByVa..

Java 2022.03.03

[Java]method - type4

네번째 형식의 메소드는 매개변수도 있고 반환값도 있는 경우이며, 가장 활용빈도가 높은 메소드 타입이다. 바로 예제를 통해서 알아보자 1)인원 수를 매개변수로 전달받아 인원 수만큼 나이를 사용자로부터 입력받고 그 나이의 평균을 반환하는 메소드 ▲ 평균을 반환하기 때문에 double형으로 메소드를 정의했고 인원수를 받을 매개변수도 정해주었다. 호출하여 결과를 보면 ▲ 인자로 받은 3번만큼 입력을 받고 마지막에는 return값을 출력하고 있다. 2) 예제2번 배열을 사용하는 경우와 배열을 사용하지 않는 경우로 나눠볼 수 있다. 배열을 사용하는 경우부터 보자. ▲ 반환하는 값의 타입이 숫자이므로 int형으로 메소드를 정의했고 숫자의 갯수를 받을 매개변수 number를 지정해주었다. 배열에서 최대값을 비교하기 위..

Java 2022.03.03