[JAVA] 가변길이 매개변수
·
📆 Today I Learned(개발언어학습)/JAVA
매개변수의 개수가 매번 바뀐다면? 메소드 오버로딩을 계속해야될까? 아니다. 메소드를 호출할 때 매개변수의 개수에 상관없이 호출하기를 원한다면 가변길이 매개변수를 가진 메소드를 선언한다. int sum(int ··· values) { } 가변길이 매개변수는 메소드 호출 시 매개값을 쉼표로 구분해서 개수와 상관없이 사용할 수 있다. int result = sum(1,2,3); int result = sum(1,2,3,4,5); 매개값들은 자동으로 배열 항목으로 변환되어 메소드에서 사용된다. 그렇기 때문에 메소드 호출 시 직접 배열을 매개값으로 사용해도 된다. int[] values = { 1, 2, 3 }; int result = sum(values); // OR int result1 = sum(new in..
[JAVA] 배열(Array)
·
📆 Today I Learned(개발언어학습)/JAVA
T1 ) 배열(Array) 기본특징 기본적으로 변수는 하나의 값만 저장할 수 있다. 그렇기 떄문에 저장해서 사용해야하는 값이 늘어날수록 비효율적으로 코드를 작성하게 될 것이다. 배열은 많은 양의 값을 효율적으로 다루기 위해 사용할 수 있는 방법이다. 배열은 연속된 공간에 값을 나열시키고, 각 값에 인덱스(index)를 부여해 놓은 자료구조이다.(0부터 시작) 배열은 같은 타입의 값만 관리한다. ( int배열은 int타입의 값만, String배열은 문자열만 ) 배열의 길이는 늘리거나 줄일 수 없다. ( 배열은 생성과 동시에 길이가 결정된다. ) 배열 변수는 참조 변수이다. 배열도 객체이므로 힙 영역에 생성되고 배열 변수는 힙영역의 배열 주소를 저장한다. 참조할 배열이 없다면 배열 변수도 null로 초기화할..
[JAVA] 문자열 위치찾기 · 포함여부확인
·
📆 Today I Learned(개발언어학습)/JAVA
T1) 문자열 위치찾기 문자열에서 특정 문자열의 위치를 찾으려면 indexOf() 메소드를 사용한다. indexOf() 메소드는 주어진 문자열이 시작되는 인덱스를 리턴한다. 주어진 문자열이 포함되어 있지 않으면 indexOf() 메소드는 -1을 리턴한다. public static void main(String[] args) { String str = " 문자문지방문"; System.out.println(str.indexOf("방")); // 5 if(str.indexOf("앓") == -1) { System.out.println("포함되지않음"); }else { System.out.println("포함됨"); } // 포함되지않음 } T2 ) 문자열 포함여부확인 단순히 문자열안에 포함되어 있는지만 확인하..
[JAVA] 문자열 자르기 · 분리( substring() · split() )
·
📆 Today I Learned(개발언어학습)/JAVA
T1) 문자열 자르기 문자열에서 특정 부분의 문자열을 추출하고 싶다면 substring() 메소드를 사용한다. substring() 메소드에서도 당연히 공백도 포함한다. substring(시작지점) = 시작지점부터 끝까지 반환 substring(시작지점, 끝지점) = 시작지점부터 끝지점 -1 위치까지 반환 public class StringVarTest { public static void main(String[] args) { String str = " 문자문지방문"; System.out.println(str.substring(1));//문자문지방문 System.out.println(str.substring(1, 3));//문자 } } T2) 문자열 분리 문자열에서 특정 문자(구분자)를 기준으로 문자열..
[JAVA] 문자열 길이 · 문자열 대체
·
📆 Today I Learned(개발언어학습)/JAVA
T1) 문자열 길이 문자열의 길이를 알고 싶다면 length() 메소드를 사용한다. 문자열의 길이는 공백을 포함한다. public class StringVarTest { public static void main(String[] args) { String str = ""; String str1 = "문자열"; String str2 = "문 자 열"; System.out.println(str.length()); // 0 System.out.println(str1.length()); // 3 System.out.println(str2.length()); // 5 } } T2) 문자열 대체 문자열 일부분을 다른 문자열로 대체하고 싶으면 replace() · replaceAll() · replaceFirst()..
[JAVA] 메모리 사용 영역
·
📆 Today I Learned(개발언어학습)/JAVA
T1) java 명령어로 JVM이 구동된다면 JVM은 운영체제에서 할당받은 메모리 영역(Runtime Data Area)을 어떻게 구분해서 사용할까? 메소드 영역(Method) : 바이트코드 파일을 읽은 내용이 저장되는 영역이다. 클래스별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등이 저장된다. 힙 영역(Heap) : 객체가 생성되는 영역이다. 객체의 번지(주소)는 메소드 영역과 스택 영역의 상수와 변수에서 참조할 수 있다. 스택 영역(Stack) : 메소드를 호출할 때마다 생성되는 프레임(Frame)이 저장되는 영역이다. 메소드 호출이 끝나면 프레임은 자동 제거된다. 프레임 내부에는 로컬 변수 스택이 있다. 프레임 내부에서 기본 타입 변수와 참조 타입 변수가 생성되고 제거된다. 결론 : ==, ..
[JAVA] 데이터 타입 분류
·
📆 Today I Learned(개발언어학습)/JAVA
데이터 타입(Data Type) 기본 타입(primitive type) 정수 타입 byte char short int long 실수 타입 float double 논리타입 boolean 참조 타입(reference type) 배열 타입 열거타입 클래스 인터페이스 기본 타입으로 선언된 변수는 값 자체를 저장하고, 참조 타입으로 선언된 변수는 *객체가 생성된 메모리 번지를 저장한다. 기본 타입 변수 ( 값 ) 참조 타입 변수 ( 메모리 번지 ) → ( 메모리 번지) 객체 변수들은 스택(stack)이라는 메모리 영역에 생성이 된다. 스택에 저장된 변수들 중 기본타입 변수들은 직접 값을 들고 있지만, 참조 타입 변수들은 참조할 데이터의 번지(주소)값을 저장하고 그 주소를 통해 힙(heap) 영역의 객체를 참조한다..
[JAVA] Switch Expressions (Java 12이후)
·
📆 Today I Learned(개발언어학습)/JAVA
Switch & Switch Expressions 사용예시 public class SwitchValueExample { public static void main(String[] args) { String grade = "B"; //Java 11 이전 문법 int score1 = 0; switch(grade) { case "A": score1 = 100; break; case "B": int result = 100 - 20; score1 = result; break; default: score1 = 60; } System.out.println("score1: " + score1); //Java 12부터 가능 int score2 = switch(grade) { case "A" -> 100; case "B"..