-
KOSA - 4일차 - 1 Java 기초 | Array, Method, 메모리 구조, String메서드KOSA 2024. 3. 29. 19:49728x90
What it Arrays?(https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html)
- An array is a container object that holds a fixed number of values of a single type. The length of an array is established when the array is created. After creation, its length is fixed. You have seen an example of arrays already, in the main method of the "Hello World!" application. This section discusses arrays in greater detail.
- 동일한 type의 값들을 하나의 묶음으로 저장한 자료 구조이다.
methods use intance variables.
메서드는 인스턴스 변수를 이용하는 것도 맞지만, 좀 더 이해하기 쉽게 풀어보자면
- class의 내부에 존재하는 영역으로, 특정 기능을 하는 코드를 묶어서 나타내는 것이다. 즉, 특정 기능을 수행하기 위한 코드들의 집합체라고 보면 된다.
parameter와 argument를 갑자기 들으면 헷갈릴 수도 있다. 이 용어도 한번 정리하고 넘어가자.
parameter
- 함수를 정의할 때 사용되는 변수를 사용한다.
argument
- 실제로 함수가 호출될 때, 넘기는 변수값을 의미한다.
당장 이렇게 보면 이해가 어려울 수도 있으니 코드를 보며 이해해 보자.
public class ArgumentParameter { public static void main(String[] args) { int argument = 10; operattion(argument);// 전달인자(argument) } private static int operattion(int parameter) {// 매개변수(Parameter) parameter += 10; return parameter; } }
자, 그럼 이제 자바 메모리 구조에 대해 알아보자.
1. 메소드(method)영역
- Static 영역이라고도 하며, 전역 변수와 정적 멤버변수(static 변수)가 저장되는 영역이다.
2. 스택(stack)영역
- 지역변수, 인자값, 리턴값이 저장되는 영역이고 메소드 안에서 사용되는 기본형 변수들이 값과 함께 저장되고 Heap영역에 생성된 객체들을 참조하는 주소값이 할당된다.
3. 힙(Heap)영역
- 모든 인스턴스 변수(객체)들이 저장되는 영역이다. 힙 영역은 메모리 공간이 동적으로 할당된다.
그리고 수업 중, == 과 equals()를 비교하는 게 나왔는데 개념적으로 확실히 정리되어 있지 않아 정리 한번 하고 넘어가자(https://coding-factory.tistory.com/536#google_vignette)
String str1 = "apple"; //리터럴을 이용한 방식 String str2 = "apple"; //리터럴을 이용한 방식 String str3 = new String("example"); //new 연산자를 이용한 방식 String str4 = new String("example"); //new 연산자를 이용한 방식
public class compare { public static void main(String[] args) { String s1 = "abcd"; String s2 = new String("abcd"); if(s1 == s2) { System.out.println("두개의 값이 같습니다."); }else { System.out.println("두개의 값이 같지 않습니다."); } } }
public class compare { public static void main(String[] args) { String s1 = "abcd"; String s2 = new String("abcd"); if(s1.equals(s2)) { System.out.println("두개의 값이 같습니다."); }else { System.out.println("두개의 값이 같지 않습니다."); } } }
==연산자와 equals()메소드의 가장 큰 차이점은 == 연산자는 비교하고자 하는 두 개의 대상의 주소값을 비교하는데 반해 String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다는 것이다.
String 메소드중 다른 것이 궁금하다면
https://youngjinmo.github.io/2020/05/java-string-methods/#indexof
Java - String 클래스 메서드 정리
String 클래스가 내장하고 있는 메서드들에 대해 정리해보았다. append() length() concat() substring() indexOf() lastIndexOf() charAt() isEmpty() replace() toUpperCase() toLowerCase() trim() split() toCharArray(
youngjinmo.github.io
를 참고하고, 나중에 한번 블로깅할 예정이다.
상속과 다형성까지 다루면 너무 길어질 거 같아 나눠서 정리하자.
'KOSA' 카테고리의 다른 글
KOSA - 6일차 Java 기초 | 생성자 (0) 2024.04.04 KOSA - 5일차 - 2 Java 기초 | 객체 지향을 적용한 디자인 패턴(전략 패턴) (0) 2024.04.02 KOSA - 5일차 - 1 Java 기초 | 다형성, 인터페이스 (0) 2024.04.02 KOSA - 4일차 - 2 Java 기초 | 상속 (0) 2024.03.29 KOSA - 3일차 Java 기초 (0) 2024.03.28