수업기록(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(자동형변환)이 된다.
- 실제 데이터를 힙메모리에 저장하고, String type으로 선언된 변수에는 힙메모리의 주소값을 갖고 있음
- 메모리에서 사용하는 데이터 크기가 가변적인 것이 특징임
- 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 |