package ch05;

public class Ch0506
{
 public Ch0506()
 {
  // TODO 자동 생성된 생성자 스텁
  int x=1, y=1;
  //기본자료형을 매개변수로 전달할 경우
  //사본을 전달하게 되므로 원본은 아무런 변화가 없다.
  valuechange(x,y);
  System.out.println("x : "+x+", y : "+y);
  Car  car = new Car("xxx","yyy");
  referenceChange(car);
  car.print();
 }
 public static void main(String[] args)
 {
  new Ch0506();
 }
 
 //클래스 자료형을 매개변수로 전달할 경우
 //원본이 전달되어 넘어오며 이의 멤버변수값을
 //바꿀 경우 원본을 바꾸는 것과 같다.
 public void referenceChange(Car carA)
 {
  carA.name="용대리";
  carA.owner="장하다";
 }
 
 public void valuechange(int a, int b)
 {
  a=10;
  b=11;
 }
}


****** Ch0507.java *****
package ch05;

public class Ch0507
{
 
 public static void main(String[] args)
 {
  //c는 2차원패턴, java는 3차원 패턴
  Car carA = new Car("소나타","주인장");
  //개체변수이므로 null이 되므로.. 먼저 할당해줘야 함.
  //Car내에 mission = new Mission();호출시.
  //carA.mission = new Mission();
  carA.mission.type = "오토";
  carA.mission.level = 5;
  carA.mission.print();
 
  Car carB = new Car("그랜져","홍길동");
  //Car내에 mission = new Mission();호출시.
  //carB.mission = new Mission();
  carB.mission.type = "스틱";
  carB.mission.level = 6;
  carB.mission.print();
 
  //속해있지 않는 Mission.
  Mission m = new Mission();
  m.level = 7;
  m.type = "세미스틱";
  m.print();
 }
}

Posted by 말없제이
,

package ch05;

public class Ch0505
{
 public static void main(String[] args)
 {
  //기본자료형의 경우 변수값을 대입하면
  //값의 사본이 복사되어 대입되며,
  //사본을 바꾼다고 해서 원본이 바뀌는것이 아니다.
  //고로 아래변수의 값은 1이된다.
  int a=1;
  int b=a;
  b=5;
  System.out.println(a);
 
  //★ 개체변수와 개체변수간의 대입은
  //대상의 원본이 전달되므로 아래의 경우
  //carB를 조작하면 원본 carA의 원본이 바뀌게 된다.
  //(개체변수를 레퍼런스라 부르는 이유가 바로 이거때문이다.)
  Car carA = new Car("주인장","뽀르세");
  Car carB = carA;
  carB.name="무대리";
  carB.owner="대포차";
  System.out.println(carA.name+":"+carA.owner);
 }
}

Posted by 말없제이
,

package ch05;

public class Ch0504
{
 public static void main(String[] args)
 {
  System.out.println(args[0]);
  System.out.println(args[1]);
 }
}

Posted by 말없제이
,

package ch05;

public class Ch0503
{
 //멤버변수는 값을 초기화 하지 않으면 기본값이 적용된다.
 public int a;
 public boolean c;
 //클래스자료형 멤버변수는 값을 초기화 하지 않으면 그값은 null을 가리킨다.
 public String d;
 public Car e;
 
 public Ch0503()
 {
  // TODO 자동 생성된 생성자 스텁
/*  Car car;
  car.print();*/
  //위내용 안됨, 초기화를 하지 않아서..
 
  /*int a;
  int b=a+1;*/
  //a초기값이 설정 안되어있어서...
  //public int a.. 전역변수 설정후(멤버변수 사용시) 에러 안남..
  int b=a+1;
  System.out.println("각 기본값은 \n숫자형 :  "+b+"\n진실은 : "+c+"\n스트링은 : "+d+"\nCar클래스 자료형 : "+e);
 }
 
 public static void main(String[] args)
 {
  new Ch0503();
 }
}

Posted by 말없제이
,

package ch05;

public class Ch0502
{
 public Ch0502()
 {
  // TODO 자동 생성된 생성자 스텁
  //print();
 }
 
 public void print()
 {
  System.out.println("Hello()");
 }
 
 public static void main(String[] args)
 {
  //Ch0502 a = new Ch0502();
  //실체가 필요없으면... 아래와 같이 표현.
  new Ch0502();

  //main안에서 print() 호출하려면 어떻게 해야할까요?
  //main은 클래스안에 있어도 클래스안에 속해있는 존재로 보면 안된다.
  //이유 : static
  new Ch0502().print();
 

 }
}

Posted by 말없제이
,

package ch05;

public class Ch0501
{
 /*
  * 클래스 : 설계도라 생각하며 됨다.
  * 멤버변수 : 클래스에 속해있는 글로벌변수
  * 멤버함수 : 클래스에 속해있는 멤버함수
  * 개체 : 설계도에 입각하여 생산된 제품 즉 실체
  * 인스턴스 : 생성자에 의해 초기화된 변수
  * 속성 : 인스턴스개체변수안의 멤버변수를 의미
  * 메서드 : 인스턴스개체변수안의 멤버함수를 의미
  * */
 public static void main(String[] args)
 {
  //개체변수의 선언
  Car carA;
  //개체변수의 초기화( car개체변수:인스턴스)
  //개체변수 = new 클래스명() --> 자연스레 생성자 함수를 호출하게 된다.
 
  /* 초기 생성자 함수에 name, owner
  carA = new Car();
  //carA : 인스턴스
  carA.name ="소나타";
  carA.owner="홍길동";
  //carA.name : 속성
   */  
  carA = new Car("소나타","홍길동");

  carA.print();
  //carA.print() : 메소드
 
/*  //생성자 초기화 활것
  Car carC = new Car();
  //name에 좋아하는 자동차 대입
  carC.name = "티코";
  //owner에 이름 대입
  carC.owner = "아무게";
  //carC멤버함수 print()호출
  carC.print();*/    
 }
}

**** car.java ****
package ch05;

public class Car
{
 //Java는 file당 한 class만 존재.(c는 여러개 가능.)
 
 //현재는 public 용어 신경쓰지 말고...
 //Car클래스의 멤버변수 owner
 public String owner;
 
 //Car클래스의 벰버변수 name
 public String name;
 
 //Car클래스의 멤버함수 print() 정의
 public void print()
 {
   System.out.println("Owner : "+owner+", name : "+name );
 
 }
 
 //반환형 없는 함수이며 클래스이름과 같은 이름을
 //같은 함수를 생성자함수라고 부른다.
 //아래와 같은 이자없는 생성자는 프로그래머가
 //지정하지 않앙도 자여스레 컴파일러가 생상자함수를
 //강제로 만들어준다.
 
 //public void Car() // 생성자 함수가 아니라 일반함수로 인식.
 public Car(String name, String owner)
 {
  // TODO 자동 생성된 생성자 스텁
  System.out.println("Car생성자 실행");
  //매개변수와 멤버변수 이름이 같을때, 매개변수로 인식됨.
  //name = name;
  //반드시 클래스의 멤버변수를 가르킬때에는
  //this.멤버변수명을 사용하여야 한다.
  this.name = name;
  this.owner = owner;
  //생성자를 이용하여 멤버변수 조작하는 방법...이였음.
 
  //생성후 new Mission() 객체 일일이 생성해야하므로, 미리 호출될때 생성.
  mission = new Mission();

 }
 
 // Mission 클래스 추가후
 //멤버변수에 사용자 정의 클래스 레퍼런스를 지정할경우
 //Car클래스는 Mission클래스에 대해 소유관계를 맺는다고 한다.(집합)
 public Mission mission;
}

**** Mission.java *****
package ch05;

public class Mission
{
 //다중 객체 정의 설명...
 public String type;
 public int level;
 
 public void print()
 {
  System.out.println("미션타입 : "+type+", 기어 : "+level+"단");
 }
}

Posted by 말없제이
,

package ch03;

public class Work0529d
{
 //4. 출력결과 : 4!
 /*
  * 4*3*2*1
  * */
 public Work0529d()
 {
  long result = run(10);
  System.out.println("\r\n result : "+result);
 }
 
 public int run(int x)
 {
  int result = 1;
  for(int i=x;i>=1;i--)
  {
   result *= i;
   System.out.print(i);
   
   if(i>1)
   {
    System.out.print("*");
   }
   else
   {
    System.out.print("=");
   }
  }
 
  System.out.print(result);
  return result;
 }
 
 public static void main(String[] args)
 {
  new Work0529d();
 }
}

Posted by 말없제이
,

package ch03;

public class Work0529c
{
 //3. 출력결과 :
 /*
  * int result=sum(1,10);
  * 1+2+..+10. 같은결과, x가 큰경우는 하고경우만..
  * System.out.println("resut : "+result);
  * hint : 반복문
  * */
 /* 기존 방식.new Work0529c(1,10); 방식으로 바꾸기..
 public Work0529c()
 {
  int result = sum(1,10);
  System.out.print(result);
  System.out.println("\r\nresut : "+result);
 }
 */
 public int x;
 public int y;
 
 //public Work0529c()
 public Work0529c(int x, int y)
 {
  //기존에서 추가 ...
  this.x = x;
  this.y = y;
  //int result = sum(1,10);
  int result = sum();
  System.out.print(result);
  System.out.println("\r\nresut : "+result);
 }
 
 //public int sum(int x, int y)
 public int sum()
 {
  /*if(x>y)
  {
   int temp = x;
   x = y;
   y = temp;
  }*/
 
  if(this.x>this.y)
  {
   int temp = this.x;
   this.x = this.y;
   this.y = temp;
  }
 
  int result=0;
 
  /*do
  {
   result += x;
   System.out.print(x);
   if(x<y)
   {
    System.out.print("+");
   }
   else
   {
    System.out.print("=");
   }
   x++;
  }
  while(x<=y);*/
 
  do
  {
   result += this.x;
   System.out.print(this.x);
   if(this.x<this.y)
   {
    System.out.print("+");
   }
   else
   {
    System.out.print("=");
   }
   this.x++;
  }
  while(this.x<=this.y);
   
  return result;  
 }
 
 public static void main(String[] args)
 {
  //new Work0529c();
  //기존에서 생성자 매개변수 전달방식.
  new Work0529c(1,10);
 }
}

Posted by 말없제이
,

package ch03;

public class Work0529b
{
 //2. 출력결과 : 함수써도 그만 main 그만..
 /*
  *
  * *****
  * ****
  * ***
  * **
  * *
  *
  * */
 
 public Work0529b()
 {
  stringLoad(5);
 }
 
 public void stringLoad(int startNum)
 {
  for(int i=startNum;i>0;i--)
  {
   for(int j=i;j>0;j--)
   {
    System.out.print("*");    
   }
   System.out.print("\n");
  }
 }
 
 public static void main(String[] args)
 {
  new Work0529b();
 }
}

Posted by 말없제이
,

package ch03;

public class Work0529a
{
 //1. 반복문을 사용해서 매개변수 2개사용 구구단 출력 ex)run(9,9);
 /*
  * http://java.sun.com
  * 1. JDK가 설치되어 있어야 한다
  * 2. 환경변수가 잡혀있어야 한다 p.38
  *
  * 퍼가야하는 폴더
  * 1. c:\eclipse 전체
  * 2. c:\project 폴더
  * */
 
 public Work0529a()
 {
  //5장 클래스 배운후.. main에서 바로 실행 구조로 바꿔라..
  //run(9,9);
 }
 
 public void run(int a, int b)
 {
  //반복한다(1부터 a까지)
  for(int i=1;i<=a;i++)
  {
   //반복한다(1부터 b까지)
   for(int j=1;j<=b;j++)
   {
    System.out.println(i+"*"+j+"="+(i*j));
   }
   System.out.println("\n");
  }
 }
 
 public static void main(String[] args)
 {
  //new Work0529a()
  //5장 클래스 배운후.. main에서 바로 실행 구조로 바꿔라..
  new Work0529a().run(9,8);
 }
}

Posted by 말없제이
,