contents
자바개념정리
chapter06
클래스
코드읽는법
-------------------------------------------------------
자바개념정리
chapter06
클래스
참조변수 | 데이터가 저장되어 있는 주소 연산자 new에 의해서 인스턴스(객체)가 메모리(Ram)의 빈 공간에 생성되고 난 다음 대입 연산자(=)에 의해서 인스턴스가 저장된 메모리의 주소 값이 참조변수에 저장됨 |
cf) 변수: 데이터를 저장하는 상자 |
보라색: int float boolean char
call by value(변수) call by reference(객체) - > 참조변수 검은색: String 참조변수(주소) => 직접적인 비교연산자를 쓰면 안됨(a==b) |
참조변수로 인스턴스에 접근하는 방법?
|
변수에 접근: 참조변수.변수명 메서드를 실행: 참조변수.메서드명(); |
. : ~안에 | |
인스턴스 | 구조는 같되 데이터는 다를 수 있음 | ||
객체 생성? | new | ||
객체의 변수 or 함수불러오는 법?
|
. | ||
인스턴스 타입 | 객체생성 new 참조변수.변수 => 그외 필요할 때마다 생성 |
구분해서 만드는 이유? => 리소스 관리하기위해 | |
클래스 타입 | 미리 클래스이름.변수 => 필수적 공통 요소 |
||
인스턴스 변수 |
클래스의 자식
객체마다 가지는 고유한 변수(전역변수) 인스턴스를 생성할 때 만들어지며 인스턴스마다 고유의 저장 공간을 가지므로 각각 다른 값을 가질 수 있음 |
||
클래스 변수 | 클래스가 처음 메모리에 로딩될 때 생성(미리 생성되어 있음) static 키워드 사용 공통된 값을 공유 |
||
static과 instance 접근방법?
|
static: 클래스명.변수 or 함수(); instance: Cars x = new Cars(); x.변수명; |
||
차이점? | 인스턴스: 각각의 값을 가짐 ex)복제 static: 1개만 존재 ex) 분신(실체 하나) |
||
객체생성의 단위?
|
클래스 | ||
메서드 | 함수(코드의 묶음) -> 한 번 정해 놓으면 언제든 호출하면 됨 => 재사용 특정한 작업(실행)이나 논리(연산)을 구성하는 코드를 묶어 놓은 것 역할: 1.코드 실행 2.결과반환 |
||
함수를 만드는 방법
|
반환타입 메서드명(타입변수명(매개변수, 지역변수),....){ 내용 return 값; => 필수 } |
순서 1.함수생성 => 이름( ){ } 2.반환타입 적기 => int 이름 ( ) { } 3.매개변수와 return값 넣기 = >매개변수 정수 2개 이름(9, 4); 4.인스턴스 또는 static 여부 확인 => instance 객체생성() |
|
반환타입 종류 (Data type) |
1.정수(int) 실수(float) 논리(boolean) 문자(char) 참조(해당이름) 2.void => 반환 값이 x return(x) |
||
매개변수 | 호출될 때 전달값을 받음 | ||
지역변수 | 함수 안에 존재하는 변수 | ||
값 | 파라미터 = 전달값 | ex) a(int a) { } <- a(9); 매개변수, 지역변수 파라미터(전달값) |
|
클래스 멤버와 인스턴스 멤버간의 참조 및 호출
|
static -> instance를 호출x 만들 당시에 있나 없나의 여부에 따라서 |
객체생성방식: static instance |
|
오버로딩 | 함수, 겹쳐서 생성 이름이 같은 메서드의 매개변수의 개수와 타입이 다름 |
*this. : 현재클래스의 전역변수 앞. : 클래스 구분 |
|
생성자 | 함수 객체 생성시 전역변수의 값을 변경 가능 모든 클래스에는 하나 이상의 생성자가 있어야 함(자동으로 생성자추가) |
기본생성자: 클래스 이름( ) { } 매개변수를 갖고 있는 생성자: 클래스 이름(String color, int num) { } |
구별: 리턴 타입 없음(반환데이터타입없음) 클래스와 이름 같음 |
<메서드>
1)
package ch06;
public class method { static void printer() { System.out.println("안녕"); System.out.println("안녕"); System.out.println("안녕"); System.out.println("안녕"); System.out.println("안녕"); } public static void main(String[] args) { printer(); printer(); } } |
실행 결과
안녕
안녕 안녕 안녕 안녕 안녕 안녕 안녕 안녕 안녕 |
2)
package ch06;
public class method2 { public static void main(String[] args) { // System.out.println(test()); //참조변수 method2 t = new method2(); int result = t.test(); System.out.println(result); } // test(){} 함수생성 int test() { return 9; //반환값 필수 } // test(); 함수호출 } |
실행 결과
9
|
<클래스 생성과 호출>
1)
package ch06;
public class 나 { int money = 10000; public static void main(String[] args) { //step 1 : 주소를 담을 변수생성 다은.money2; //클래스이름.변수 다은 friend1 = new 친구(); // 참조변수.변수 System.out.println(friend1.money); // String a = "안녕"; //검은색 참조변수: 주소 // String b = "안녕"; // // a == b // 직접적인 비교연산자를 쓰면 안됨 } } |
package ch06;
public class 친구 { int money = 2000; static int money2 = 10; //클래스타입의 변수 미리 만들어둠 } |
2)
package ch06;
public class start { public static void main(String[] args) { //변수 생성 cal test; test = new cal(); int v = test.plus(1, 2); System.out.println(v); cal test2; test2 = new cal(); int value = test2.minus(7, 4); System.out.println(value); cal test3 = new cal(); boolean value2 = test3.mul(true, false); System.out.println(value2); cal test4 = new cal(); char value3 = test4.div('a', 'b'); System.out.println(value3); cal test5 = new cal(); double value4 = test5.db(2.3, 1.2); System.out.println(value4); cal test6 = new cal(); String value5 = test6.str("A", "B"); System.out.println(value5); cal test7 = new cal(); float value6 = test7.fl(1.5f, 2.2f); System.out.println(value6); } } |
package ch06;
public class cal { //데이터 타입의 종류: int, float, boolean, char, String(참조) int plus(int a, int b){ //3.매개변수 생성 int result = a + b; return result; //2.반환타입 이름(){return 값;} }//1.함수생성 이름(){} //4.인스턴스 스태틱 결정 int minus(int c, int d){ int result2 = c - d; return result2; } boolean mul(boolean e, boolean f){ boolean result3 = e&&f; return result3; } char div(char g, char h){ char result4 = (char)(g + h); return result4; } double db(double d, double e) { double result5 = d + e; return result5; } String str(String i, String j){ String result6 = i + j; return result6; } float fl(float k, float l) { float result7 = k + l; return result7; } } |
실행결과
3
3 false à (유효한 범위 값 아님) 3.5 AB 3.7 |
3)
package ch06;
public class refer { public static void main(String[] args) { // 재료 수집 : 변수 //변수생성 : 데이터타입(클래스명) 변수명 cal ttt; //재료 가공 객체생성 호출 //ttt변수는 참조변수 new 주소 ttt = new cal(); ttt.plus(0, 0); //제어문 //결과 } } |
<생성자>
package ch06;
class Car { String color; String model; // 생성자 Car(String color, String model) { this.color = color; this.model = model; } void displayInfo() { System.out.println("Car model: " + model + ", Color: " + color); } } public class test { public static void main(String[] args) { Car myCar = new Car("Red", "Toyota"); myCar.displayInfo(); // 출력: Car model: Toyota, Color: Red } } |
<생성자>
package ch06;
class Car { String color; String model; // 기본 생성자 // Car() { // this.color = "Unknown"; // this.model = "Unknown"; // } // 매개변수 생성자 Car(String color, String model) { this.color = color; this.model = model; } void displayInfo() { System.out.println("Car model: " + model + ", Color: " + color); } } public class test { public static void main(String[] args) { // Car myCar = new Car(); Car myCar = new Car("Red", "Toyota"); // 매개변수 생성자 호출 myCar.displayInfo(); // 출력: Car model: Toyota, Color: Red } } |
코드 읽는법
*코드읽는법 변수: 파란색(클래스 전역)/ 갈색(함수 지역) 명령어: 보라색 데이터: ' ', " " 글자데이터, 숫자 그냥 적음 =>나머지 검은색 함수: ( ) 클래스명. 연산자 ex) student.length; (부모)참조변수 (자식)파란색 new객체->상속 cf) (int) (데이터타입): 수동형변환 |
'프로그래밍 > java' 카테고리의 다른 글
JAVA 프로그래밍 49일차 (25/1/20) (2) | 2025.01.20 |
---|---|
JAVA 프로그래밍 48일차 (25/1/17) (0) | 2025.01.17 |
JAVA 프로그래밍 46일차 (25/1/15) (0) | 2025.01.15 |
JAVA 프로그래밍 45일차 (25/1/14) (0) | 2025.01.14 |
JAVA 프로그래밍 44일차 (25/1/13) (0) | 2025.01.13 |