수업기록(2022-07~2022-09) JAVA

20220802 수업기록

연삐 2022. 8. 2. 21:50
08-02(화) 수업진도

1.참조변수 기본변수
2.String
- string
- length
-charAt()
-concat()
-toUpperCase(),toLowerCase()
-equals()

1. 참조변수 기본변수

 

기본타입변수 - 정수 , 실수 , 논리

참조타입변수 - 배열, 열거, 클래스, 인터페이스 , String

  • JVM S/W 실행 순서
    • JVM SW가 메인 메모리에 올라감
    • JVM이 실행할 class files들을 기계어로 번역 후 메모리에 올림
    • CPU가 기계어로 된 응용 프로그램 1 line씩 실행
  • JVM이 사용하는 메모리 영역
메모리
(코드영역)
실행할 프로그램의 코드
(데이터영역)
전역변수
정적변수
(Heap영역)
사용자의 동적 할당

런타임에 크기가 결정됨
(Stack영역)
지역변수
매개변수

컴파일 타임에 크기가 결정됨

 

  • 변수의 메모리 사용
    • 기본 타입 변수 - 실제 값을 변수 안에 저장
    • 참조 타입 변수 - 주소를 통해 객체 참조
  • 참조변수
    • 예 ) String name = 홍길동;
    • 실제 'name'데이터는 heap영역에 있음 문자갯수대로 차례대로 나열되어 저장됨 (문자열값 알수있음)
    • stack영역에서 heap의 주소값을 가져옴 (참조) 즉 stack에서 기본변수는 값이 저장되어 있지만, 참조변수는 stack 에서 heap에 저장되어있는 메모리주소값이 저장되어 있다.
    • 기본변수보다 데이터를 가져오는속도가 느린편이다.

2.String변수

  • string (문자열)
    • 메모리에서 사용하는 데이터 크기가 가변적인 것이 특징임
      • 실제 데이터를 힙메모리에 저장하고, String type으로 선언된 변수에는 힙메모리의 주소값을 갖고 있음
        • 예 ) String message = "안녕하세요, 자바씨";인 경우
        • 변수 message에는 힙메모리에 저장된 "안녕하세요, 자바씨"; 데이터의 시작 주소값을 갖고 있다는 의미다.
      • 산술연산 기호 중에서 + 만 사용이 가능 => 문자열 합치기
        • 문자열 + 문자열 , 숫자+문자열, 문자열 + 숫자
        • 숫자가 더해질때 int가 String으로 promotion(자동형변환)이 된다.
  • length
    • String 문자데이터의 길이를 구하는 메소드 - 변수명.length();
    • 1. 한글과 영어글자 한 문자를 length에서는 1개로 인식한다.
      • 한글, 영어글자는 unicode로 구성되어 있음.
public class Main{
	public static void main (String[] args){
    	String s1 = "I like apple";
        System.out.println(s1.length());
    }  
 }
결과 >>  12
  • charAt()
    • String에서 특정 문자를 가져올수있는 메소드 - 변수명.charAt(index);
    • index가 0일 때 첫 번째 문자를 가리킴, index가 문자열전체길이-1일때 마지막 문자를 가리킴
public class Main{
	public static void main (String[] args){
    	String s1 = "I like apple";
        System.out.println(s1.charAt(3));
}
결과>> 3
  • concat() - concatenate
    • String을 합칠수있는 메소드 - 변수명.concat(변수명2) => 변수명 + 변수명2
public class Main{
	public static void main(String[] args){
    	String s1 = "I like apple";
        String s2 = " and I like peach";
        System.out.println(s1.concat(s2));
    }
}
결과 >> I like apple and i like peach 
  • toUpperCase(),toLowerCase()
    • toUpperCase는 String의 모든 문자를 대문자로 변환하는 메소드
    • toLowerCase는 String의 모든 문자를 소문자로 변환하는 메소드
public class Main{
	public static void main(String[] args){
    	String s1 = "Hello Java";
        System.out.println(s1.toUpperCase());
        System.out.println(s1.toLowerCase());
    }
}
결과>> HELLO JAVA      /     hello java
  • equals
    • String 내용 비교하는 메소드 - 변수명.equals(비교할변수명)
    • equl의 return값이 true이면 비교하는 문자열이 동일하다는 의미이다.
    • false면 동일하지 않다.
    • toLowerCase()나 toUpperCase()로 변환하여 equals 사용하는 것이 의미 있는 경우도 많음
public class Main{
	pubic static void main(String[] args){
    	String s1 = "God Bless you";
        String s2 = "God Bless you";
        String s3 = "god bless you";
        
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        //대문자로 변환해 내용이 동일한지 확인하는 로직
        System.out.println(s1.toUpperCase().equals(s3.toUpperCase()));
    }
}
결과 >>  true    /    false    /   true