참조 데이터 타입(Reference type) - 0802

안씅👩🏻‍💻·2022년 8월 2일
0
post-thumbnail

🔗 복습하기

  • 반복문(loop)이란, 특정 명령어 집합을 반복 수행할 때 사용하는 제어문.

    • while문 do-while문 for문
  • while ( boolean ){ A; }

    • booleantrue인 동안에 A명령어 반복수행
  • do { A; } while (조건식)

    • 조건식true인 동안 A를 반복 실행
  • for (초기값; 조건식; 증감연산) {A}

    • for문 실행--> 초기값 실행--> 조건식 실행--> A실행--> 증감연산--> A실행--> ...조건식 끝날 때까지 반복 후, 프로그램 종료.
  • 중첩 반복문이란, 반복문이 다른 반복문을 내포함.



👩🏻‍💻 참조 타입(Reference type)

  • 데이터 타입기본 타입(primtive type)참조 타입(reference type)으로 나뉨.

참조 타입(reference type)

  • 배열타입 열거타입 클래스 인터페이스
  • 데이터의 길이가 가변적임.
    • 참조 타입(reference type)은 메모리를 heap메모리 영역으로 보냄.
    • 기본 타입(primtive type)보다 시간이 더 소요됨.



참조 타입(reference type) 변수의 메모리

  • 기본 타입(primtive type)은 값을 stack메모리에 있는 변수에 저장함.

  • 참조 타입(reference type)은 값을 heap메모리에 저장한 후 stack메모리에 있는 변수에 heap메모리 주소를 넣어 참조함.

  • 참조 타입에 들어온 값이 저장되는 과정
    stack메모리에 있는 변수 ➡️ heap메모리 저장 ➡️ stack메모리에 있는 변수heap메모리에 저장된 위치 주소를 저장
  • 기본 타입은 stack만 사용



👩🏻‍💻 클래스(Class) 타입

🔍클래스(Class)이란?

  • 객체를 정의하는 틀 또는 설계도와 같은 의미
  • 클래스(class)의 구성
    • 객체의 상태를 나타내는 필드(field)
    • 객체의 행동을 나타내는 메소드(method)




String 문자열 클래스(class) 타입

  • 데이터에서 사용하는 데이터의 크기가 가변적

    • 실제 데이터를 힙메모리에 저장

    • String타입으로 선언된 변수에는 힙메모리의 주소값을 갖음

      ➡️ 참조타입
      ex) String message = "안녕하세요";
      --> 변수 message에는 "안녕하세요"힙메모리 주소값을 갖고 있다는 의미.

  • 한글과 영어는 유니코드로 구성되어 저장함.

  • 산술 연산 기호 중에서 + 만 사용 가능

    • 문자열 합치기 가능
    • 문자열 + 문자열 숫자 + 문자열 문자열 + 숫자

<문자열 합치기 예시>

// 2+3+message; --> "5" + "안녕하세요. "
		message2 = 2+3+message;
		System.out.println(message2);
		
// 2+3+message; -->  "안녕하세요. " + "2" + "3"
		message2 = message+2+3;
		System.out.println(message2);

✍️ 문자열에서 특정 문자를 가져오기(실습)

  • charAt(index)사용
    • index에 몇 번째 문자열인지 가리킴.
    • index가 0이면, 첫번째 문자를 가리킴.
    • index - 1이면, 마지막 문자를 가리킴.

⌨️ coding ⤵️

String message = "wellcome to java";
		 int length = message.length();
		 
		 char firstChar = message.charAt(0);
		 char thirdChar = message.charAt(2);
		 char lastChar = message.charAt(length-1);
		 
		 System.out.println(message + "의 첫번쩨 글자는 "+firstChar);
		 System.out.println(message + "의 첫번쩨 글자는 "+thirdChar);
		 System.out.println(message + "의 첫번쩨 글자는 "+lastChar);
		 
		 for (int i = 0; i < message.length(); i++) {
			 System.out.println(message + "의" +(i+1)+" 첫번쩨 글자는 "+message.charAt(i));

🖥 print ⤵️




👩🏻‍💻 메소드(method)

🔍메소드(method)란?

  • 메소드(method) 또는 멤버함수(member funtion)라고도 불림.
  • 메소드는 특정 기능을 정의한 집합을 말함.

1️⃣ length() 메소드

  • string class 문자열 데이터의 길이 값을 return함.
  • 한글과 영어 글자 1문자를 length()메소드 사용

concat()

  • 문자열 합치기.

  • s3 = s2.concat(s1);

    • s2문자열에 s1을 붙임.

✍️ 문자열 붙이기(실습)

⌨️ coding ⤵️

String s1 = "wellcome to java";
		String s2 = "java";
		String s3;

		s3 = s1.concat(s2);
		System.out.println("s3 = " + s3);
		System.out.println("s1.length = " + s1.length());
		System.out.println("s2.length = " + s2.length());
		System.out.println("s3.length = " + s3.length());

		s3 = s2.concat(s1); 
		System.out.println("s3 = " + s3);

		s3 = s1 + s2;
		System.out.println("s3 = " + s3);
		
		s3 = s2 + s1;
		System.out.println("s3 = " + s3);

🖥 print ⤵️



toUpperCase() toLowerCase()

  • toUpperCase() : 문자열의 모든 문자를 대문자
  • toLowerCase() : 문자열의 모든 문자를 소문자

✍️ 모든 문자열 대문자, 소문자 출력(실습)

⌨️ coding ⤵️

		System.out.println("다음에 한 줄 입력하고 enter key를 입력하세요");
		String s4 = in.nextLine();	
		// 하나의 Line 전체 문자를 읽어 올 때 사용(s4에서는 enter key문자는 제외됨.)
		System.out.println("s4 = " + s4);

		System.out.println("s4 대문자 " + s4.toUpperCase());
		System.out.println("s4 소문자 " + s4.toLowerCase());

🖥 print ⤵️



next() nextLine()

  • next() : 스페이스로 구분된 문자열을 읽어올 때 사용
  • nextLine() : 하나의 Line 전체 문자를 읽어 올 때 사용
    • (s4에서는 enter key문자는 제외됨.)
    • \n : 1줄 띄우기. --> (CR)아스키코드 0A
    • \r : 문서 첫번째 위치로 이동 --> (LF)아스키코드 0D

✍️ next() nextLine()(실습)

⌨️ coding ⤵️

System.out.println("spase로 구분된 3개의 단어를 입력하세요.");

		String s1 = in.next();
		String s2 = in.next();
		String s3 = in.next();	// 문자열 string을 읽을 때

		System.out.println("s1 = " + s1);
		System.out.println("s2 = " + s2);
		System.out.println("s3 = " + s3);

		s3 =in.next(); // dummy
		
		System.out.println("다음에 한 줄 입력하고 enter key를 입력하세요");
		String s4 = in.nextLine();	
		// 하나의 Line 전체 문자를 읽어 올 때 사용(s4에서는 enter key문자는 제외됨.)
		System.out.println("s4 = " + s4);

equals

  • equals : 문자열 내용 비교하기.

  • return값이 참이면 문자열 내용이 동일하다는 의미,
    거짓이면 동일하지 않음을 의미함.

  • equals는 대소문자를 구별하지 못함.

    • toUpperCase()toLowerCase()로 변환하여 equals 사용하면 유용하게 사용할 수 있음.
profile
그냥 은근슬쩍 살다 가긴 싫어

0개의 댓글