주체(스스로)를 제외한 모든 것
언어에서의 객체
class Main {
public static void main(String[] args) [
int a = 10;
// 변수 선언 및 초기화
int[] arr = new int[3];
// 변수 선언 및 초기화
// 객체 - 배열(데이터의 순서 존재 -> index)
// int[] : 정수들
// arr : 변수명
// = : 대입연산자
// new : 객체 하나를 만들겠다
// int[3] : new를 통해 만들어질 객체의 모양
int[0] = 10;
int[1] = 20;
int[2] = 30;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
// 각각 10,20,30 출력
// 인덱스에 접근하기 위해 배열이 리모컨을 누르는 방법
System.out.println(arr.length);
// 객체에 접근하기 위해서 리모컨을 누르는 방법
System.out.println(arr);
// arr의 주소 출력
int[] arr2 = {10,20,30};
// 배열 객체를 만드는 방법 -> 비어있는 공간을 만들 수 없어 잘 사용하지 않음
// 자바에서 유일하게 new 없이 객체를 만드는 방법 (배열)
int[][] arr3 = new int[3][5];
// 이차원배열 -> 정수 배열들 -> 객체 안에 객체를 저장
arr3[0][0] = 10;
arr3[0][1] = 20;
arr3[0][2] = 30;
arr3[0][3] = 40;
arr3[0][4] = 50;
오직 정수형 데이터들만 들어갈 수 있는 arr이라는 변수(하나의 공간)를 만들고,
int[3]모양으로 된 객체 하나를 만들고 해당 객체를 컨트롤 할 수 있는 리모컨을 연결 시킴
객체를 사용하는 이유
다량의 데이터를 한번에 빠르게 처리하기 위해서
ㄴ 객체를 사용하는 것이 무조건 좋은 것은 아님
public class Main{
public static void main(String[] args) {
// 크기 10짜리 배열 생성하기
int[] arr = new int[10];
// 10씩 증가하는 값을 하나씩 직접 넣기
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
arr[5] = 60;
arr[6] = 70;
arr[7] = 80;
arr[8] = 90;
arr[9] = 100;
// 반복문으로 값 넣기
for(int i = 0; i < arr.length; i ++) {
arr[i] = (i + 1) * 10;
// 인덱스는 0부터 1씩 증가, 값은 10부터 10씩 증가
}
// 배열 값 순서대로 출력하기
for(int i = 0; i < arr.length; i ++) {
System.out.println(arr[i]);
}
// 배열의 모든 값 합계 구하기
int s = 0;
for (int i = 0; i <arr.length; i ++) {
s += arr[i];
}
System.out.println("합계: " + s);
// 배열의 모든 값 평균 구하기
System.out.println("평균: ": + s / arr.length);
}
}
public class Main{
public static void main(String[] args) {
try {
int[] arr = new int[5];
for(int i = 0; i < 10; i ++) {
arr[i] = (i + 1) * 10;
System.out.println(arr[i]); // 예외가 발생할 가능성이 있는 코드
}
} catch (ArrayIndexOutOfBoundsException e) { // 예외가 발생했을 때 처리할 코드
System.out.println("배열의 인덱스 범위초과");
} catch (NumberFormatException e) {
System.out.println("숫자 양식 예외 발생");
} catch (Exception e) {
System.out.println("포괄적인 예외 발생");
} finally {
System.out.println("???"); // 선택 사항: 예외 발생 여부와 상관없이 항상 실행되는 코드
}
}
자바에서 전역변수의 개념을 대체할 수 있는 변수
클래스 변수 (static변수)
같은 공간 내에서 동일한 이름으로 변수를 선언할 수 없음
전역변수와 지역변수명이 값다면 지역변수가 쓰임
데이터 타입은 모두 클래스로 존재함
byte -> Byte
short -> Short
int -> Integer
long -> Long
floar -> Float
double -> Double
boolean -> Boolean
char -> Character
변수, 메서드
객체의 속성
변수(속성) → 객체를 표현하기 위한 데이터를 저장
public class Main {
public static void main(String[] args) {
// 사용자 정의 객체
// 각각의 이름과 나이
사람 a철수 = new 사람();
a철수.이름 = "철수";
a철수.나이 = 10;
System.out.println(a철수.이름 + ": " + a철수.나이);
사람 a영수 = new 사람();
a영수.이름 = "영수";
a영수.나이 = 20;
System.out.println(a영수.이름 + ": " + a영수.나이);
사람 a영희 = new 사람();
a영희.이름 = "영희";
a영희.나이 = 30;
System.out.println(a영희.이름 + ": " + a영희.나이);
}
}
// 설계도
class 사람 {
String 이름;
int 나이;
}
위 코드에는 3개의 객체가 존재 → new가 3번 쓰였기 때문
객체의 기능
메서드(기능) → 실행을 위한 기능, 동작
메서드를 만드는 방법
class 사람 {
String 이름;
int 나이;
void 메서드명() {
System.out.prinln(이름 + ": " + 나이)
}
}
// 메인클래스에 사용 불가
// 이름, 나이와 순서는 상관없지만, 일반적으로 메서드를 아래에 사용
// 메서드 안에 출력문, 조건문, 반복문 등 다 사용 가능
void : 허공이라는 의미 → 리턴을 안하겠다
메서드 활용법
public class Main {
public static void main(String[] args) {
// 사용자 정의 객체
// 각각의 이름과 나이
사람 a철수 = new 사람();
a철수.이름 = "철수";
a철수.나이 = 10;
a철수.메서드명(); // 메서드 호출문, 메서드 실행문, 함수 호출문, 함수 실행문
사람 a영수 = new 사람();
a영수.이름 = "영수";
a영수.나이 = 20;
a영수.메서드명();
}
}
// 설계도
class 사람 {
String 이름;
int 나이;
void 메서드명() {
System.out.println(이름 + ": " + 나이);
}
}
함수
전역공간에서 만들어진 함수
메서드
클래스 내부에서 만들어진 함수
→ 자바에서는 함수, 메서드를 같은 의미로 사용함
public class Main{
public static void main(String[] args) {
사람 a사람 = new 사람();
a사람.name = "Tom";
a사람.test();
}
}
class 사람{
String name;
int age;
void test() {
String name = "John";
System.out.println(this.name);
}
}
// this가 없다면 John이 출력됨