# 변수의 초기값
정수형 0
실수형 0.0
문자형 공백
논리형 false
참조형(클래스형) null(주소가 없다)
참조형(배열형) null
# 변수의 종류
1 멤버변수 : 메서드의 블럭({})바깥쪽에 선언되는 변수
2 지역변수 : 메서드의 블럭({})안쪽에 선언되는 변수
3 매개변수 : 메서드의 괄호(())안쪽에 선언되는 변수
# 클래스형의 참조형변수 선언하기
클래스명 주소=new 클래스명();
주소.멤버변수명
[ex]
class A{
int a=10;
}
class B{
public static void main(String args[]){
System.out.println(a);
}
}
[ex]
class A{
int a=10;
}
class B{
public static void main(String args[]){
A address=new A();
System.out.println(address.a);
}
}
[ex]
class A{
int a=100; // 멤버변수
void m1(){
int b=200; // 지역변수
}
void m2(int d){ // 매개변수
int c=300; // 지역변수
}
}
class B{
public static void main(String args[]){
A o=new A();
System.out.println(o.a); // 접근가능
System.out.println(o.m1()); // 에러 리턴형이 void는 Sys안에 넣을수 없음
System.out.println(o.b); // 에러 지역변수라서
System.out.println(o.c); // "
System.out.println(o.d); // 에러 매개변수는 접근가능한게 아님
}
}
[ex] 클래스Dog,Cat의 변수값을 출력하는 소스코드를 작성하시오.
class A{
public static void main(String args[]){
//here
}
}
class Dog{
String type="개";
}
class Cat{
String type="고양이";
}
[ex] 초기값 알아보기
class A{
int a;
double b;
char c;
boolean d;
int[] e; //참조형(배열형)
B f; //참조형(클래스형) - 클래스이름 변수명;
}
class B{
public static void main(String args[]){
A a=new A();
System.out.println(a.a); // 0
System.out.println(a.b); // 0.0
System.out.println(a.c); // 공백
System.out.println(a.d); // false
System.out.println(a.e); // null
System.out.println(a.f); // null
}
}
[ex]
class Box{
String color="red";
int width=100;
int height=200;
}
class B{
public static void main(String args[]){
//here
}
}
[an]
Box box=new Box();
System.out.println(box.color);
System.out.println(box.width);
System.out.println(box.height);
# 메서드선언하기
1. 반환형이 없는 메서드
2. 반환형이 있는 메서드
class 클래스명{
void 메서드명(){} // 반환형이 없는 메서드
자료형 메서드명(){} // 반환형이 있는 메서드
}
자료형종류 - int char double boolean int[] char[] double[] boolean[] 클래스명
# 메서드호출하기
주소.메서드명();
[ex] 실행결과는?
class A{
void a(){
System.out.println(1);
}
void b(){
System.out.println(2);
}
void c(){
System.out.println(3);
}
}
class B{
public static void main(String args[]){
A o=new A();
o.a();
System.out.println("aa");
o.b();
o.c();
o.b();
}
}
[an]
1
aa
2
3
2
[ex] 변수type을 출력하고 메서드sound를 호출하는 소스코드를 작성하시오.
class Dog{
String type="개";
void sound(){
System.out.println("멍멍");
}
}
class B{
public static void main(String args[]){
//here
}
}
[an]
Dog dog=new Dog();
System.out.println(dog.type);
dog.sound();
# 매개변수가 있는 메서드 선언하기
[ex]
class A{
void m1(int a){
System.out.println(a);
}
void m2(int a, boolean b){
System.out.println(a+","+b);
}
void m3(String a){
System.out.println(a);
}
}
class B{
public static void main(String args[]){
A o=new A();
o.m1(0);
o.m2(0,true);
o.m3("aaa");
}
}
[ex] 메서드setColor와 printColor를 호출하는 소스코드를 작성하시오.
class Car{
String color;
void setColor(String c){
color=c;
}
void printColor(){
System.out.println(color); // red
}
}
class B{
public static void main(String args[]){
//here
}
}
[an]
Car car = new Car();
car.setColor("blue");
car.printColor();
# 반환형이 있는 메서드
[ex]
class A{
void a(){
System.out.println(1);
}
int b(){
System.out.println(2);
return 100;
}
String c(){
System.out.println(3);
return "aaa";
}
}
class B{
public static void main(String args[]){
A o=new A();
o.a();
int d=o.b();
String e=o.c();
System.out.println(d);
System.out.println(e);
}
}
[ex]
class A{
void a(){
System.out.println(1);
}
int b(){
System.out.println(2);
return 100;
}
String c(){
System.out.println(3);
return "aaa";
}
}
class B{
public static void main(String args[]){
A o=new A();
System.out.println(o.a()); // 컴파일에러 바로 Sys없이 o.a() 해야함
System.out.println(o.b());
System.out.println(o.c());
}
}
[ex]
class A{
void a(){
System.out.println(1);
}
int b(){
System.out.println(2);
return 100;
}
String c(){
System.out.println(3);
return "aaa";
}
}
class B{
public static void main(String args[]){
A o=new A();
int v1=o.a(); // 컴파일에러 타입 오류
int v2=o.b();
String v3=o.c();
}
}
[ex] 실행결과는?
class Box{
int width;
void setWidth(int w){
width=w;
}
int getWidth(){
return width;
}
}
class B{
public static void main(String args[]){
Box box=new Box();
box.setWidth(100);
int w=box.getWidth();
System.out.println(w);
}
}
[ex]
class A{
int a=100; // 멤버변수
void b(){ // 반환형이 없는 메서드
System.out.println(200);
}
int c(){ // 반환형이 있는 메서드
int d=300; // 지역변수
return d;
}
void e(int f){ // 매개변수
System.out.println(f);
}
}
class B{
public static void main(String args[]){
A o=new A();
System.out.println(o.a);
int n=o.a;
System.out.println(n);
o.b();
int n2=o.c();
System.out.println(n2);
}
}
[hw] 과제를 해오세요~
class Cal{
int[] operate(int a, int b){
//here
}
}
class A{
public static void main(String args[]){
Cal cal=new Cal();
//here
System.out.println(array[0]); // 15
System.out.println(array[1]); // 5
System.out.println(array[2]); // 50
System.out.println(array[3]); // 2
}
}
[an]
class Cal{
int[] operate(int a, int b){
int[] array= new int[4];
array[0] = a+b;
array[1] = a-b;
array[2] = a*b;
array[3] = a/b;
return array;
}
}
class A{
public static void main(String args[]){
Cal cal=new Cal();
int[] array = cal.operate(10,5);
System.out.println(array[0]); // 15
System.out.println(array[1]); // 5
System.out.println(array[2]); // 50
System.out.println(array[3]); // 2
}
}
# 메서드 선언과 호출
[ex]
class A{
public static void main(String args[]){
B o=new B();
o.m1(100); // 메서드호출
o.m2("aa",false);
}
}
class B{
void m1(int a){ // 메서드선언
System.out.println(a);
}
void m2(String a,boolean b){
System.out.println(a+","+b);
}
}
[ex] 실행결과는?
class A{
public static void main(String args[]){
B o=new B();
int n=o.m1();
System.out.println(n);
String s=o.m2("aa",false);
System.out.println(s);
}
}
class B{
int m1(){
return 100;
}
String m2(String a, boolean b){
return a+","+b;
}
}
[ex] 변수 v1~v6의 값을 할당하시오.
class A{
public static void main(String args[]){
int v1;
double v2;
char v3;
boolean v4;
int[] v5;
B v6;
System.out.println(v1);
System.out.println(v2);
System.out.println(v3);
System.out.println(v4);
System.out.println(v5);
System.out.println(v6);
}
}
class B{
int a=100;
}
[an]
int v1=100;
double v2=0.5;
char v3='A';
boolean v4=false;
//int[] v5=new int[3];
int[] v5={10,20,30,40,50}; //v5 : 주소값(배열형)
B v6=new B(); //v6 : 주소값(클래스형)
[ex] 클래스B의 메서드 b,c를 호출하는 소스코드를 작성하시오.
class A{
public static void main(String args[]){
B o=new B();
o.a(100);
//here
}
}
class B{
void a(int v){
System.out.println(v); // 100
}
void b(boolean[] v){
System.out.println(v); // [Boolean@주소
}
void c(C v){
System.out.println(v); // C@주소
}
}
class C{
}
[an]
o.a(100);
o.b(new boolean[3]);
o.c(new C());
# 멤버변수의 초기값
정수형 0 실수형 0.0 문자형 공백 논리형 false
참조형 null
멤버변수는 아래와 같은 초기값을 가지고 있지만
지역변수는 초기값을 가지고 있지 않다.
[ex]
class A{
public static void main(String args[]){
int a;
System.out.println(a); // 컴파일에러발생
}
}
[ex] //밑에 굵은것 4가지 비교
class A{
public static void main(String args[]){
B o=new B();
C c=o.a;
System.out.println(c.b);
}
}
class B{
C a=new C();
}
class C{
int b=100;
}
//100
class A{
public static void main(String args[]){
B o=new B();
C c=o.a();
System.out.println(c.b);
}
}
class B{
C a(){
return new C();
}
}
class C{
int b=100;
}
//100
class A{
public static void main(String args[]){
B o=new B();
o.a(new C());
}
}
class B{
void a(C obj){
C address=new C();
System.out.println(address.b);
}
}
class C{
int b=100;
}
//100
class A{
public static void main(String args[]){
B o=new B();
o.a(new C());
}
}
class B{
void a(C obj){
System.out.println(obj.b);
}
}
class C{
int b=100;
}
//100
# this란
[ex]
class A{
int a;
void b(int a){
a=a; // a=this.a; "
}
}
class B{
public static void main(String args[]){
A o=new A();
o.b(100);
System.out.println(o.a); // 100
}
}
[ex]
class A{
public static void main(String args[]){
B o1=new B(); o1.a=200; // o1,o2,o3 에 저장된 주소값은 다 다름
B o2=new B(); o2.a=300;
B o3=new B();
System.out.println("o1:"+o1);
System.out.println("o2:"+o2);
System.out.println("o3:"+o3);
o1.b(o2);
}
}
class B{
int a=100;
void b(B bobj){
System.out.println(bobj.a); // 300
System.out.println(this.a); // 200
}
}
[ex]
class A{
public static void main(String args[]){
B o1=new B(); o1.a=200;
B o2=new B(); o2.a=300;
B o3=new B();
System.out.println("o1:"+o1);
System.out.println("o2:"+o2);
System.out.println("o3:"+o3);
o2.b(o3);
}
}
class B{
int a=100;
void b(B bobj){
System.out.println(bobj.a); // 100
System.out.println(this.a); // 300
}
}
[ex]
class A{
public static void main(String args[]){
B o1=new B(); o1.a=200;
B o2=new B(); o2.a=300;
B o3=new B();
System.out.println("o1:"+o1);
System.out.println("o2:"+o2);
System.out.println("o3:"+o3);
o1.b(o3);
System.out.println("o1:"+o1.a);
System.out.println("o2:"+o2.a);
System.out.println("o3:"+o3.a);
}
}
class B{
int a=100;
void b(B c){
System.out.println(c);
System.out.println(this);
c.a=400;
this.a=500;
}
}
[ex]
class A{
public static void main(String args[]){
Car car1=new Car();
Car car2=new Car();
Car car3=new Car();
car1.color="gray";
car2.color="green";
car3.color="gold";
car1.changeColor(car2);
System.out.println(car1.color); // red
System.out.println(car2.color); // pink
System.out.println(car3.color); // gold
}
}
class Car{
String color;
void changeColor(Car car4){
//System.out.println(this.color); gray
//System.out.println(car4.color); green
this.color="red";
car4.color="pink";
}
}
[ex]
class 붕어빵 {
String 재료;
void 재료넣기(String 재료) {
this.재료 = 재료;
}
void 재료바꾸기() {
재료 = "김치";
}
}
class A {
public static void main(String args[]) {
붕어빵 붕어빵1 = new 붕어빵();
붕어빵 붕어빵2 = new 붕어빵();
붕어빵1.재료넣기("팥");
붕어빵2.재료넣기("슈크림");
System.out.println(붕어빵1.재료); // 팥
System.out.println(붕어빵2.재료); // 슈크림
붕어빵2.재료바꾸기();
System.out.println(붕어빵1.재료); // 팥
System.out.println(붕어빵2.재료); // 김치
}
}
[ex] 아래와 같이 출력될 수 있도록 setSize,
setColor메서드를 here부분에 호출하시오.
class Box {
int width, height;
String color;
void setSize(int w, int h) {
width = w;
height = h;
}
void setColor(String color) {
this.color = color;
}
void printInfo() {
System.out.println("width:" + width);
System.out.println("height:" + height);
System.out.println("color:" + color);
}
}
class B {
public static void main(String args[]) {
Box box1 = new Box();
Box box2 = new Box();
// here
box1.printInfo();
// width:10
// height:20
// color:red
box2.printInfo();
// width:30
// height:40
// color:green
}
}
[an]
box1.setSize(10,20);
box2.setSize(30,40);
box1.setColor("red");
box2.setColor("green");
box1.printInfo();
box2.printInfo();
[ex] 아래와 같이 출력될 수 있도록 here부분의 소스코드를 완성하시오.
class A {
public static void main(String args[]) {
Car car1 = new Car();
Car car2 = new Car();
Car car3 = new Car();
car1.color = "gray";
car2.color = "green";
car3.color = "gold";
// here
System.out.println(cars[2].color); // gold
}
}
class Car {
String color;
}
[an] Car[] cars={car1,car2,car3}; //car1,2,3에 저장된주소값은 자료형이
클래스형이므로 배열을 선언시 클래스형을 선언해준다
//배열안 car1,2,3도 자료형이 Car라는 클래스형이므로
배열선언시 Car이라는 클래스형 선언
[ex] 변수array1, array2, array3의 자료형은?
class A{
public static void main(String args[]){
Car car1=new Car();
Car car2=new Car();
Car car3=new Car();
car1.color="gray"; car1.speed=10;
car2.color="green"; car2.speed=20;
car3.color="gold"; car3.speed=30;
//here array1={car1,car2,car3};
//here array2={car1.color,car2.color,car3.color};
//here array3={car1.speed,car2.speed,car3.speed};
}
}
class Car{
String color;
int speed;
}
[an] Car[] array1={car1,car2,car3};
String[] array2={car1.color,car2.color,car3.color};
int[] array3={car1.speed,car2.speed,car3.speed};
'자바' 카테고리의 다른 글
[자바기초요약6] this(), super(), 다형적변수, instanceof연산자, 참조형간의 형변환 (0) | 2019.03.03 |
---|---|
[자바기초요약5] 메서드오버라이딩, 오버로딩, @Override, 생성자 (0) | 2019.03.03 |
[자바기초요약4] 패키지 , 상속 (0) | 2019.03.03 |
[자바기초요약2]while , do~while, continue, break, 배열 (0) | 2019.02.22 |
[자바기초요약1] 변수, 자료형, 조건문, 반복문, 연산자 (0) | 2019.02.18 |