[Java] 오버로딩(Overloading)
·
📝 Study/Java
오버로딩(Overloading)같은 이름의 메서드를 여러 개 정의하는 것단, 매개변수(파라미터)가 다르면 허용됨. 오버로딩 조건셋 중 하나라도 다르면 OK메서드 이름은 동일해야 함매개변수 개수가 다르면 가능매개변수 타입이 다르면 가능매개변수 타입의 순서가 다르면 가능 오버로딩 가능한 경우public void add(int num1, int num2) { }public void add(int num1, double num2) { }public void add(int num1, int num2, int num3) { }public void add(double num1, int num2) { } 오버로딩 불가능한 경우리턴 타입만 다른 경우: 오버로딩 기준은 매개변수이지 리턴 타입이 아님타입과 개수가 같으면 이..
[Java] 생성자, this, 초기화 블록
·
📝 Study/Java
생성자public class B { public B(){ // 인스턴스 시점에 실행되는 특수메소드 // 인스턴스 변수가 생성 // 인스턴스 변수의 초기화 할당 // 객체가 생성된 이후 초기작업 진행 }class Data { Data() { System.out.println("생성자"); } Data(int a) { System.out.println("생성자1"); } Data(int a, int b) { System.out.println("생성자2"); }}생성자도 오버로딩 적용매개변수 있는 생성자를 만들면 기본 생성자를 안 만듦. 생성자가 하나도 없으면 기본 생성자를 만들어..
[Java] 객체, 인스턴스, static 변수 및 메서드
·
📝 Study/Java
객체 / 인스턴스클래스에 의해서 만들어진 객체를 인스턴스라고도 한다. 그렇다면 객체와 인스턴스의 차이는 무엇일까? Animal cat = new Animal() 이렇게 만들어진 cat은 객체이다. 그리고 cat이라는 객체는 Animal의 인스턴스이다. 인스턴스라는 말은 특정 객체(여기서는 cat)가 어떤 클래스(여기서는 Animal)의 객체인지를 관계 위주로 설명할 때 사용된다. 즉, ‘cat은 인스턴스’보다는 ‘cat은 객체’라는 표현이, ‘cat은 Animal의 객체’보다는 ‘cat은 Animal의 인스턴스’라는 표현이 훨씬 잘 어울린다.객체 변수 = 인스턴스 변수 = 멤버 변수 = 속성static 변수 = 클래스 변수멤버: 클래스 내부에 선언된 모든 구성요소. 멤버 변수, 멤버 메소드멤버필드는 초기..
[Java] Call by Value
·
📝 Study/Java
Java는 Call by Valueclass CallByTest { int memberVar = 10; static void change1(int var) { var += 10; System.out.printf("change1 : %d\\n", var); } static void change2(CallByTest cbt1) { cbt1.memberVar += 100; System.out.printf("change2 : %d\\n", cbt1.memberVar); } public static void main(String[] args) { CallByTest cbt = new CallByTest(); // 객체 ..
[Java] String 관련 메서드
·
📝 Study/Java
charAt(int index)문자열에서 지정한 인덱스의 문자(char)를 반환인덱스는 0부터 시작String str = "hello";char c = str.charAt(1); // 'e' substring(int beginIndex, int endIndex)문자열의 일부를 잘라냄beginIndex는 포함, endIndex는 제외String s = "abcdef";String sub = s.substring(1, 4); // "bcd" split(String regex)문자열을 정규표현식 기준으로 분할해 String[] 배열로 반환⚠️ 특수문자( ., |, *, ( 등 )는 반드시 이스케이프 필요 (\. 처럼)String data = "a,b,c";String[] arr = data.split(",")..
[Java] 컴파일 에러 vs 런타임 에러
·
📝 Study/Java
컴파일 에러 (Compile-time Error)발생 시점코드를 컴파일할 때 (javac)원인문법 오류, 타입 불일치, 잘못된 참조 등특징프로그램이 실행조차 안 됨예문법 오류(Syntax Error), 클래스/메서드 미존재, 타입 불일치 등public class CompileErrorExample { public static void main(String[] args) { int number = "123"; // ❌ 문자열을 int에 넣을 수 없음 (타입 불일치) }}error: incompatible types: String cannot be converted to int 런타임 에러 (Runtime Error)발생 시점프로그램 실행 중 (java 명령으로 실행할 때)원인예외(E..
[Java] 산술 연산 시 주의할 점들
·
📝 Study/Java
정수형 오버플로우, 형 변환의 시점, 산술 연산 처리 방식public static void main(String[] args) { int i1 = Integer.MAX_VALUE; // 2147483647 (int 최댓값) int i2 = i1 + 1; System.out.println(i2); // -2147483648 (오버플로우 발생) long l1 = i1 + 1; System.out.println(l1); // -2147483648 (오버플로우된 int 결과를 long에 넣음) long l2 = (long)(i1 + 1); System.out.println(l2); // -2147483648 (..
[Java] 반복문 타입
·
📝 Study/Java
switch에서 허용되는 타입들long, float, double, boolean 타입을 조건식으로 사용할 수 없다. ❌Java의 switch 문은 내부적으로 정수 기반의 분기 테이블(jump table) 을 사용해서 성능을 최적화byte, short, char, int기본 정수형 타입enum열거형StringJava 7부터 가능Integer, Character, Byte, Short오토박싱된 래퍼 클래스 (참조형)Java 14+에서는 패턴 매칭(preview)까지 지원됨 타입 안 되는 이유float, double부동소수점은 정밀도 문제가 있어 정확한 일치 비교가 어려움longswitch 문 설계 당시(초기 Java)에는 int 기반으로 설계됨boolean경우의 수가 2개뿐이라 if/else가 더 적합하..
[Java] 타입 변환
·
📝 Study/Java
기본형과 객체형의 형 변환기본형(int) → 참조형(Integer)Boxing (명시적) : Integer iw = Integer.valueOf(i);Auto-boxing(자동 박싱): Integer iw2 = i;참조형(Integer) → 기본형(int)Unboxing (명시적): ``int i2 = iw.intValue();Auto-unboxing(자동 언박싱): int i3 = iw;기본형(int) → 문자열(String)문자열로 변환: String s1 = String.valueOf(i);문자열 결합 방식: String s2 = "" + i;문자열(String) → 기본형(int)문자열을 int로 파싱: int i4 = Integer.parseInt(s1);문자열(String) → 참조형(Inte..
[Java] String
·
📝 Study/Java
String 리터럴과 객체 생성String은 기본형이 아닌 참조형단순히 literal을 할당하거나 생성자를 이용해서 생성 가능// ① 리터럴 방식String str1 = "Hello";// ② new 연산자 사용String str2 = new String("Hello"); String 비교리터럴 방식 (str1, str2)"Hello" 는 문자열 상수 풀(String Constant Pool)에 저장같은 리터럴은 동일 참조str1 == str2 → true 생성자 방식 (str3, str4)"Hello" 값이 같아도 Heap에 각각 다른 객체로 생성str3 == str4 → false == vs equals==: 주소(참조값) 비교. 같은 객체인지. 같은 메모리 주소를 참조하는지.equals(): 내..