Sponsored By
















 

배열 에 관한 사용방법임.

 

 

 

 

먼저, 문법은

 

-> 타입 [] 변수명 = new (동일)타입 [ 배열갯수 ;

 

이다.

 

 

 

 

배열이 만들어지면 메모리 순서가 1부터 시작이 아니라 0부터 시작임을 주의하자.

 

 

 

 

00. 간단하게 6개짜리 배열을 lotto라는 이름으로 만들어보자.








01. 배열시키는데 랜덤하게 들어가도록 난수를 사용해서 만들어보자.











ㅁ. Enhaced For() 문을 사용해보자.

 

 

 

 

 

먼저, 문법은

 

-> for (값 : 배열)

 

이다. 

 

기본 for문 for (초기값 ; 조건 ; 증감) { 기능 } 과 다르다는 것을 기억하자.!!!

 

 

 

 

00. 여기서는 위에 코드를 가지고 for문을 쓴 것이다.

 

    임의의 값을 value 라고 놓고 lotto 배열이 for문을 타고 돌아갈때 value에 저장돼서 

    System.out.print()로 출력시키는 것을 의미한다.

 

 

 

 

 

 


※. 코드

 

 

 

public class Test {

 

public static void main(String[] args) {

 

/* Array */

// 문법: 타입 [] 변수이름 = new 타입[메모리 수];

 

int [] lotto = new int [6];

int i;

 

for(i=0; i< lotto.length ; i++)

{

//lotto[i] = i * 2;  //  lotto 에 있는 i 번째 값에 i *2 를 대입한다. 

lotto[i] = (int)(Math.random() * 45 + 1);

}

 

for (i = 0 ; i < lotto.length ; i++)

{

// lotto[0] = 0

// lotto[1] = 2 로 출력하고자 한다.

System.out.print("lotto[" + i + "] = " + lotto[i] + "\t");

 

}

System.out.println("");

 

//Enhanced For()

//

// for (초기값 ; 조건 ; 증감)

//

// for (값 : 배열)

//

for (int value : lotto)  // 임의의 값을 value 라고 놓고 lotto 배열이 돌아갈때의 value 값을 출력한다.

{

System.out.print(value + "\t");

}

 

int[] array = new int[1000000000];

System.out.println("Okay");

 

 

 

}// main

 

}// Class

 

 

 

 

 

여의도 IFC몰 - 남기분면
>






'ETC > 먹방' 카테고리의 다른 글

2019. 08. 01. 목. 저녁.  (0) 2019.08.02
2019. 07. 31. 수. 저녁.  (0) 2019.07.31
2019. 07. 03. 수. 저녁.  (0) 2019.07.04
2019. 06. 10. 월. 점심  (0) 2019.06.10
2019. 06. 04. 화. 점심  (0) 2019.06.04

 

Static 에 관한 사용방법임.

 

 

 

 

 

ㅁ. 보통 static변수를 정적변수라고 많이 말하는데 공유메모리(공유변수)라고 생각하면 편리하다.

   객체가 만들어지고 메모리나 변수가 생기는것이 아니라 객체와 무관하게 가져다 사용한다고 생각하면 된다.

 

(※ 코드는 이전 코드참고)

 

 

 

 




00. 'Car'클래스에 'static'으로 접근권한을 주고 'count'변수를 하나 만들자.

 

 

 

 

 

01. 메인클래스에서 'taxi', 'bus', 'truck객체를 만들고 각각 객체의 count를 재정의 해서 taxi.count를 출력해보면 30으로 출력되는 것을 확인할 수 있다.

앞서 말했듯이, 객체마다 있는 변수가 아니라 하나의 메모리에 저장이 되기때문에 가장 마지막에 재정의된 값으로 출력해준 것이다.








02. 바람직한 Static변수 사용방법은 객체를 만들어서 각각하기보다는 클래스 자체에 변수를 재정의 시키는 것이다.






 

ㅁ. static method

 

특징1 : 객체를 만들지 않고, 단발성(일회성)으로 실행할 때 사용하는 메소드이다.

특징2 : static method 는 static method 만 호출 할 수 있다.

 

 





00. 또한, 메인클래스에 result = add(1,2); 로 해서 3을 출력하고 싶어서 메인클래스 밖에다 새롭게 메소드를 만들면 실행이 되지 않는다. 그 이유는, 기본으로 제공되는 메인클래스가 public static void main[]~ 으로 시작하기 때문이다. 

 

 

 

 

 

※. 코드

 

 

class Car{

private String color;  // 원칙적으로 변수는 private

private int speed;

static int count;

 

 

 

public String getColor()

{

return color;

}

 

public void setColor(String color)  // return type이 필요없는경우 void  // default 값으로 String c를 color에 셋팅해라.

{

this.color =color;  // this 는 자기 자신을 나타내는 객체(여기서는 제일위에 선언된 color)

}

 

 

private void printError()

{

System.out.println("Error while Processing");

}

 

public void setSpeed(int speed)  // setter가 없으면 다른 사람들이 값을 setting 할 수 없으므로 제공해줘야함.

{

if(speed <0)

{

printError();

speed = 0;

}

this.speed = speed;  // = set 한 speed 값을 우리가 처음 선언한 speed 값으로 재정의해라.

}

 

public void setSpeed(double speed)

{

this.speed = (int)speed;  //34.5를 집어넣으면 34로 강제 캐스팅하는 효과.

}

 

/* 생성자(Constructor) - 초기화 메소드 */

// 

// 특징1 : 리턴타입이 없다.

// 특징2 : 클래스 이름과 동일하다.

// 특징3 : 초기화를 수행할 때 사용한다.

// 특징4 : 생성자가 없으면, 시스템이 알아서 만들어준다.

// 특징5 : 생성자가 하나라도 있으면, 프로그래머의 의지를 반영한다. -> 없는 생성자는 메인클래스에서 사용할 수 없다.

//

 

public Car()  // 리턴타입이 없으니 Car에 String 등을 안써줘도된다.

{

this("GRAY", 0);  // 생성자를 호출 할 수 있다.  / 첫번째 순서로 위치시켜줘야만 한다.

System.out.println("Car()");

//this.color = "GRAY";  // Car()로 객체생성시 기본 컬러와 스피드를 GRAY와 0 으로 자동 Setting한다.

//this.speed = 0;

}

 

public Car(String color)  // 객체생성시 Car bus = new Car("Pink"); 로 하면 이 메소드가 작동한다.

{

System.out.println("Car(String)");

this.color = color;

this.speed = 0;

}

 

public Car(String color, int speed)

{

System.out.println("Car(String, int)");

this.color = color;

this.speed = speed;

}

 

 

 

 

public int getSpeed()

{

return speed;

}

 

public String toString()

{

return "(speed, color) = (" + speed + "," + color + ")";

}

 

}// Car Class

 

 

public class Test {

 

public static void main(String[] args) {

 

Car taxi = new Car();

Car bus = new Car("Pink");  // PINK, 0 이 나와야한다.

 

System.out.println(bus);

 

Car truck = new Car("Green", 66);

System.out.println(truck);

  

taxi.setSpeed(-20);  //taxi.speed = 50; 대신에 setter를 이용해서 사용  

int taxiSpeed =taxi.getSpeed();

taxi.setSpeed(77);  //taxi.speed = 50; 대신에 setter를 이용해서 사용

int taxiSpeed2 =taxi.getSpeed();

 

taxi.setSpeed(-101);  // 파라미터가 int 타입으로 셋팅

taxi.setSpeed(34.5);  // 파라미터가 double 타입으로 셋팅

 

taxi.setColor("BLACK");

 

System.out.println(taxiSpeed);

System.out.println(taxiSpeed2);

System.out.println(taxi.getSpeed());

System.out.println(taxi.getColor());

 

taxi.count = 10;

bus.count = 20;

truck.count = 30;

 

System.out.println("taxi.count= " + taxi.count);

 

/* 바람직한 static 변수를 사용하는 방법 */

//

//  static 변수는 공유메모리(shared memory)

//  static method : 대표적으로 main(){}

//  특징1 : 객체를 만들지 않고, 단발성(휘발성)으로 실행할 때 사용하는 메소드이다.

//  특징2 : static method 는 static method 만 호출할 수 있다.  

//

 

Car.count = 40;  //Car라는 클래스에서 공통으로 count를 사용한다.

System.out.println("Car.count= " + Car.count);

 

int result = add(1,2);

System.out.println(result);

 

 

 

 

}// main

 

static int add(int a, int b)  // static 이 아니면 main클래스에서 사용 할 수 없다. 따라서 앞에 static을 사용해줘야한다.

{

return a + b ;

}

 

}// Class

 

 

 

 

 

접근권한 에 대한 사용방법임.

 

 

 

 

 

ㅁ. 접근제어(권한) 은 크게 세가지 타입이 있다.

 

1. public ; 변수를 제외하고 거의 모든것을 public으로 놓는다. -> 누구나 사용이 가능하다.

2. private ; 변수를 보통 private으로 놓는다. -> 같은 클래스에서만 사용이 가능하다.

3. 無 ; 아무것도 없을 수 도 있다. -> 같은 패키지내에서만 사용이 가능하다.

 

 

 

 

대부분은 1,2,3 대로 변수와 아닌것으로 구분해서 놓으면 되지만 예외가 한가지 있다.

 

 

 

예외. 아래에서 보는것처럼 내부적으로만 사용가능하게 하기 위할때는 private을 사용한다.

 

(만약 private이 아니라 public으로 놓으면, 메인클래스에서 

Car s = new Car();

s.printError();

를 입력해도 출력이 되기 때문이다. )




this.변수 를 쓰는 이유는 새로 정의하려는 변수와 기존에 있던 변수값이 충돌해서 모호해지기 떄문이다. 

따라서, this를 써서 지금 클래스에서 사용하는 변수라고 지정해 주는 것이다.




 

 

생성자(Constructor) 사용방법임. (※ 초기화 메소드라고도 불림)

 

 

 

 

 

ㅁ. 생성자는 변수가 많아지면 겟터셋터를 관리하기 힘들어지기 때문에 사용함이다. 

 

 

 

 

 

ㅁ. 중복정의(overloading)가 가능하기 때문이다.

 

  예, print()

      print(int) {}

      print(double) {}

      print(int, int) {}

      print(int, double) {}

      print(double, int) {}

즉, 파라미터의 갯수나 순서가 구분이 되면 가능하다. 이 구분이 되는 것을 signature라고 한다.

  예2, int print(int);

        double print(int);

라고 정의해놓으면 c = print(3)일때 에는 타입이 다르기때문에 signature로 인정하지 않는다.

 

따라서 타입이 아니라 파라미터(타입)만 다르면 오버로딩 할 수 있다.

 

 

 

 

 

ㅁ. 생성자의 특징에 대해 알아보자.

특징1 : 리턴타입이 없다.

특징2: 클래스 이름과 동일하다.

특징3: 초기화를 수행할 때 사용한다.

특징4: 생성자가 없으면 시스템에서 자동으로 만들어준다.

특징5: 생성자가 하나라도 있으면, 프로그래머의 의지를 반영한다. -> 생성자가 없으면 메인클래스에서 사용할 수 없다.

 

 

 

 

 

 

 

00. 기본구조는 다름과 같다. 나중에 객체생성시 생성자에 따라서 객체를 만들어 줄 수 있다. 

    (따라서, 메인클래스 밖에다 만들어줘야 사용가능.)







 

01. 조금 더 다양하게 만들어보기위해 조금 더 작성해보자.







02. 생성자에 다음과 같은 동작을 하게 작성하고 실행시켜보자. 결과창에 세개가 맞게 출력됨을 확인할 수 있다.







03. 초기화를 해보자. 메인클래스에서 객체를 생성했을때 미리 들어와있는 값으로 초기화 되는 방법이다.

 

 

 

 

 

04. 메인클래스에 다음과 같이 입력하고 출력을 누르면 알맞게 나오게된다.

    (※. 만약 나오지 않는다면 toString()이 제대로 적혀있는지 확인해본다.)

 

 

 

 

 

 






 



Sponsored By















+ Recent posts