※Java
**메소드(method())
- 특정 기능을 수행하기 위한 코드 묶음
*메소드 구조
접근제어자 반환형 메소드명(전달값){
명령문1;
명령문2;
...
}
ex) public static void print(){
sout("안녕");
}
public static void main(String[] args){
print(); 메소드 호출
}
**전달값(Parameter)
- 메소드 호출 시 전달하는 값
*메소드 구조
접근제어자 반환형 메소드명(전달값){
명령문1
명령문2
...
}
ex) public static void print(int a){ //전달값이 있는 메소드
sout(a);
}
public static void main(String[] args){
int a = 3;
print(a); 메소드 호출
print(5);
}
public static void print(int a, int b){ //전달값이 있는 메소드
sout(a + b);
}
public static void main(String[] args){
int a = 3;
int b = 4;
print(a,b); 메소드 호출
print(5,3); 메소드 호출
}
**반환값 (return)
- 메소드 실행 결과를 반환
*메소드 구조
접근제어자 반환형 메소드명(){
명령문1
명령문2
...
return 반환값;
}
ex)
public static - 접근제어자
int 반환형
getMaxLottoNumber - 메소드명
public static int getMaxLottoNumber(){
return 45;
}
public static void main(String[] args){
int num = getMaxLottoNumber(); // 호출
sout(num); // 45로 나옴.
}
**전달값과 반환값
- 전달값과 반환값이 있는 경우.
**메소드 구조
접근제어자 반환형 메소드명(전달값){
명령문1
명령문2
...
return 반환값;
}
ex)
public static int add(int a, int b){
return a+b;
}
public static void main(String[] args){
int result = add(1,2)(전달값);
sout("1+2=" + result(반환값);
}
**메소드 오버로딩
- 같은 이름, 다른(개수,자료형) 매개변수
*메소드 구조
접근제어자 반환형 메소드명(정수 전달값){}
접근제어자 반환형 메소드명(정수 전달값1, 정수 전달값2){}
접근제어자 반환형 메소드명(실수 전달값){}
ex)
전달값 2개
public static int add(int a, int b){
return a+b;
}
전달값 3개
public static int add(int a, int b, int c){
return a+b+c;
}
실수 전달값 2개
public static double add(double a, double b){
return a+b;
}
public static void main(String[] args){
sout(add(1,2));
sout(add(1,2,3));
sout(add(5.3,1.2));
}
**변수의 범위
- 변수가 유효한 영역(변수가 쓸 수 있는 영역)
ex) public static void scope(){
sout(a); // a 변수 사용 X
}
public static void main(String[] args){
int a = 10; // 선언된 영역{} 내에서만 사용 가능
sout(a)
;
public static void scope(){
int a = 10; // 선언된 영역{} 내에서만 사용 가능
sout(a); // a
}
public static void main(String[] args){
sout(b) // 사용 불가.
}
public static void main(String[] args){
int c = 30;
if(c>10){
int d = 40;
sout(d); d = 40 // { } 선언된 영역 내에서만!
}
sout(d); 출력 X
}
**클래스
- 데이터와 기능을 포함하는 코드 묶음이다.
: 클래스에서 만들어진 결과물 - 객체라고 한다.
ex) 클래스 : 종이접기 책 , 객체 : 책을 보고 접은 종이학
class 클래스명 {
}
ex)
클래스
class Person{
}
객체 생성
public static void main(String[] args){
Person person = new Person() // 객체 생성
}
**인스턴스 변수
- 클래스 내에 선언된 변수
class 클래스명{
인스턴스변수1
인스턴스변수2
...
}
ex)
class Person{
String name; // 인스턴스 변수
int age; // 인스턴스 변수
}
public static void main(String[] args){
Person person = new Person() // 객체 생성
// 인스턴스 변수 : 객체마다 서로 다른 값을 가질 수 있다.
person.name = "철수"; // 인스턴스 변수에 값을 지정
person.age = 20;
}
**클래스 변수
- 클래스 내에 static으로 선언된 변수(쉽게 말해 모든 객체가 공유하는 변수)
class 클래스명{
static 클래스 변수1
static 클래스 변수2
...
}
ex)
class Person{
String name;
int age;
static int personCount = 0; // 클래스 변수
}
public static void main(String[] args){
Person.personCount = 10; // 객체 생성 없이 Person으로 바로 호출.
sout(Person.personCount);
}
**클래스 변수 : 객체를 만들 필요 없이 클래스 명으로 접근이 가능하다.
**인스턴스 메소드
- 클래스 내에 정의된 메소드
class 클래스명{
인스턴스 메소드1
인스턴스 메소드2
...
}
ex)
class Person{
String name;
int age;
static int personCount = 0;
public void introduce(){ // 인스턴스 메소드
sout("이름 : " + name);
sout("나이 : " + age);
}
}
public static void main(String[] args){
Person person = new Person();
person.name = "철수";
person.age = 20;
person.introduce(); // 메소드 호출;
** 점(.) 으로 인스턴스 변수 or 메소드에 접근이 가능.
}
**클래스 메소드
- 클래스 내에 static으로 정의된 메소드.
class 클래스명{
static 클래스 메소드1
static 클래스 메소드2
...
}
ex)
class Person{
String name;
int age;
static int personCount = 0;
public static void printPersonCount(){ // 클래스 메소드
sout(personCount);
}
}
public static void main(String[] args){
Person.personCount = 10;
Person.printPersonCount();
}
**This
- 자기 자신 의미 (인스턴스 / 지역 변수 구분)할때 사용
- this.인스턴스변수;
ex)
class Person{
String name; 클래스 변수
public void setName(String name){
// 클래스 내의 변수와 메소드에 선언된 변수와 동일해서
this로 구분을 해준다.
this.name = name;
**this.name: 클래스 변수
** name: 메소드 변수
}
}
**생성자
- 객체가 생성될 때 호출되는 메소드
클래스명(전달값){
초기화 명령문
}
ex)
class Person{
String name;
int age;
// 생성자
Person(String name, int age){
// 초기화 작업 수행
this.name = name;
this.age = age;
}
}
public static void main(String[] args){
Person person = new Person("철수",20); // 객체가 생성될 때 호출하는(되는) 메소드!
}
**Getter와 Setter
- Getter : 인스턴스 변수의 값 반환
반환형 get이름(){
return 반환값;
}
ex)
class Person{
int age;
public int getAge(){
return age;
}
}
- Setter : 인스턴스 변수의 값 설정
void set이름(전달값){
}
ex)
class Person{
int age;
public void setAge(int age){
this.age = age;
}
}
public static void main(String[] args){
Person person = new Person();
person.setAge(20); 값 설정하기(setter) 이용 방법 // 변수에 값을 설정! this.age = 20;
sout(person.getAge()); // 값가져오기 (getter) setter로 변수 설정한 값을 가져와서 출력 return 20;
}
**접근제어자
- 접근 권한 지정 (private, public, protected)
class 클래스명{
인스턴스 변수
인스턴스 메소드
}
ex)
class Person{
int age;
private int age; // 클래스 외부에서는 직접 접근 불가능
public void setAge(int age){
this.age = age;
}
}
**접근제어자
- 접근 가능 범위
private : 해당 클래스 내에서만 사용
public : 모든 클래스에서
default : 같은 패키지 내에서만(아무것도 적지 않았을 때)
protected : 같은 패키지 내에서, 다른 패키지인 경우 자식 클래스에서만
**패키지
- 서로 관련 클래스들을 그룹화(폴더) 한것
package 패키지명;
폴더구조
JavaWorkspace
.idea
out
src
sample
MyClass.java
package sample;
public class MyClass{
}
다른 패키지를 사용하기 위해서
import 패키지명.클래스명
import java.util.Random;
import java.util.*; 패키지 내 여러 클래스를 사용할 경우
public class MyClass{
public static void main(String[] args){
Random random = new Random();
int num = random.nextInt();
}
}
'JAVA 공부' 카테고리의 다른 글
| [프로그래머스 - Java] 배열 뒤집기 (1) | 2025.03.10 |
|---|---|
| 02 - JAVA 기초&기본 개념 공부 (0) | 2025.03.10 |
| 00-JAVA 기초&기본 개념 공부 (1) | 2025.03.09 |
| [프로그래머스 - Java] 숫자 비교하기. (0) | 2025.02.27 |
| [프로그래머스 - Java] 정수 부분 (0) | 2025.02.26 |