반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[JAVA] 11/10 | 메소드의 매개변수 배열로 받기, 전역변수와 지역변수, 정적멤버 본문
데이터 엔지니어링 정복/JAVA & JSP
[JAVA] 11/10 | 메소드의 매개변수 배열로 받기, 전역변수와 지역변수, 정적멤버
eeaarrtthh 2020. 11. 10. 17:12728x90
반응형
ㅇ메소드의 매개변수 배열로 받기
... 연산자를 사용하면 된다.
아래 dogugu3 메소드는 매개변수를 배열로 받아서 해당 곱셈단의 곱셈을 출력해준다.
class Util {
void dogugu1(int a) {
for(int i=0; i<=9; i++) {
if (i==0) {
System.out.println("*****"+a+"단*****");
} else {
System.out.print(a+"X"+i+"="+a*i+"\t");
}
}
}
String dogugu2(int a) {
String result ="";
for(int i=0; i<=9; i++) {
if (i==0) {
result += "*****"+a+"단*****"+"\n";
} else {
result += a+"X"+i+"="+a*i+"\t";
}
}
return result;
}
String dogugu3(int ... datas) { //매개변수를 배열로 받아서 datas에 저장한다.
String result ="";
for (int data : datas) {
result += "****"+data+"단****\n";
for (int j=1; j<=9; j++) {
result += data+"x"+j+"="+(data*j)+"\t";
}
result += "\n";
}
return result;
}
}
public class Ex111002 {
public static void main(String[] args) {
Util z = new Util();
System.out.println(z.dogugu3(1, 3));
System.out.println(z.dogugu3(2, 4, 8)); //2, 4, 8이 배열로 들어간다.
}
}
ㅇ전역 변수와 지역 변수 사용
class Variable {
//전역
//멤버변수 - 자동 초기화
//제어문 사용불가
int data1;
void doFunc() {
//지역변수 - 지역변수는 초기화해야지 사용가능
//제어문 사용가능
int data2=1;
//전역변수를 메소드 안에서 재할당해도 사용가능하다.
int data1 = 10;
System.out.println("data1: "+data1);
System.out.println("data2: "+data2);
}
}
public class Ex111004 {
public static void main(String[] args) {
Variable v = new Variable();
v.doFunc();
}
}
만약 메소드 안에서 전역변수명과 지역변수명이 같을 경우 전역변수를 사용하고 싶으면 this. 연산자를 이용한다.
this. 는 this 가 있는 클래스 자기 자신을 의미하고 도트(.)는 클래스를 참조하는 연산자이다.
class Variable {
//전역
//멤버변수 - 자동 초기화
//제어문 사용불가
int data1;
void doFunc() {
//지역변수 - 지역변수는 초기화해야지 사용가능
//제어문 사용가능
int data2=1;
//전역변수를 메소드 안에서 재할당해도 사용가능하다.
int data1 = 10;
//만약 전역변수와 지역변수가 이름이 같은데 전역변수를 사용하고 싶으면
// this. 를 사용하면 된다.
System.out.println("data1: "+data1); //10
System.out.println("this.data1: "+this.data1); //0
System.out.println("data2: "+data2); //1
}
}
public class Ex111004 {
public static void main(String[] args) {
Variable v = new Variable();
v.doFunc();
System.out.println("v : "+v);
}
}
메소드도 마찬가지이다.
this.자기자신의 메소드 로 호출할 수 있다.
class Variable {
//전역변수 = 필드
int data = 10;
void doFunc1() {
//자가 자신 클래스의 필드와 메소드를 호출할 때는 다음과 같다.
System.out.println("doFunc1() ");
System.out.println("data : "+this.data);
this.doFunc2();
}
void doFunc2() {
System.out.println("doFunc2() ");
}
}
public class Ex111005 {
public static void main(String[] args) {
Variable v = new Variable();
v.doFunc1();
}
}
ㅇ정적 멤버
멤버변수(=필드)에는 인스턴스 필드와 스태틱 필드(=클래스 필드) 두 가지가 있다.
스태틱 필드는 한 번 선언하면 바뀌지 않느 값이다.
예를 들면 원의 넓이를 구할 때 원주율(파이) 같은 값을 의미한다.
인스턴스 필드는 객체마다 값이 변경될 여부가 있는 필드를 의미한다.
정적 필드는 객체를 만들지 않아도 클래스명.정적멤버명을 바로 이용할 수 있다.
그 이유는 클래스가 로딩되면 정적멤버는 메소드 영역에 적재되므로 객체를 만들지 않아도 바로 사용할 수 있다.
class Variable {
////멤버변수에는 인스턴스 필드와 스태틱필드가 있다.
//instance 필드
int data1 = 10;
//static 필드 = class 필드
static int data2 = 10;
void doFunc1() {
System.out.println("dofunc1 호출" );
}
static void doFunc2() {
System.out.println("dofunc2 호출" );
}
}
public class Ex111006 {
public static void main(String[] args) {
Variable v = new Variable();
System.out.println( v.data1);
System.out.println( v.data2);
v.doFunc1();
v.doFunc2();
System.out.println("----정적 멤버 바로 사용하기----" );
//객체변수 사용하지않고 바로 참조가능
System.out.println( Variable.data2);
Variable.doFunc2();
}
}
이번에는 인스턴스 멤버 안에서 정적 멤버를 호출할 수 있는지 알아보자.
사용가능하지만
정적 멤버안에서 this. 연산자와 인스턴스 멤버는 사용할 수 없다.
this. 를 사용하지 않는 경우 바로 클래스명을 사용한다.
728x90
반응형
'데이터 엔지니어링 정복 > JAVA & JSP' 카테고리의 다른 글
[JAVA] 11/12 | 접근제한자, getter와 setter, 패키지 (0) | 2020.11.12 |
---|---|
[JAVA] 11/11 | 생성자오버로딩, 정적초기화블럭, final필드, 상수, 객체배열, 상속, 메소드재정의, 부모메소드 호출, fianl클래스와 메소드 (0) | 2020.11.11 |
[JAVA] 인터페이스 (0) | 2020.11.04 |
[JAVA] 추상 클래스 (0) | 2020.11.04 |
[JAVA] 타입변환과 다형성 (0) | 2020.11.03 |
Comments