728x90
반응형

<오늘의 학습>

1. 추상클래스

2. 인터페이스

3. 패키지

4. Object 클래스

5. Wrapper 클래스

6. String 객체

7. Math 클래스

 

 

6.  String 객체

▶ 특징

  1. 스트링 생성 방법 - 리터럴로 생성
    • String s = "Hello";
    • JVM이 리터럴을 관리하여 응용프로그램 내에서 공유된다.
  2. String 객체로 생성 - String t = new String("Hello");
    • 힙 메모리에 String 객체 생성
  3. 스트링 객체는 수정이 불가능하다.
  4. 스트링 비교 시 반드시 equals()를 사용해야 한다.
    • equals()로 내용을 비교한다.

 

 

주요 메소드

메소드 설명
char charAt(int index) intdex 인덱스에 있는 문자 값 리턴
int codePointAt(int index) index 인덱스에 있는 유니코드 값 리턴
int length() 스트링의 길이(문자 개수) 리턴
int compareTo(String anotherString) 두 스트링을 사전 순으로 비교하여 두 스트링이 같으면 0, 현 스트링이 anotherString보다 먼저 나오면 음수, 아니면 양수를 리턴
boolean contains(CharSequence s) s에 지정된 문자들을 포함하고 있으면 true 리턴
String replace(charsequence target, Charsequence replacement) target이 지정하는 일련의 문자들을 replacement가 지정하는 문자들로 변경한 스트링 리턴
String[] split(String regex) 정규식 regex에 일치하는 부분을 중심으로 스트링을 분리하고, 분리된 스트링들을 배열로 저장하여 리턴
String trim() 스트링 앞뒤 공백 문자들을 제거한 스트링 리턴.(\t,\n 포함)
String subString(int beginIdex) beginIndex 인덱스부터 시작하는 서브 스트링 리턴
String toLowerCase() 소문자로 변경한 스트링 리턴
String toUpperCase() 대문자로 변경한 스트링 리턴
String concat(String str) 현재 스트링 뒤에 str 스트링을 덧붙인 새로운 스트링 리턴

 

 

 

7.  Math 클래스

▶ 산술 연산 메소드 제공 - java.lang.Math

  • 모든 메소드는 static 타입 : 클래스 이름으로 바로 호출해야 한다.

 

 

▶ 주요 메소드

메소드 설명
static double max(double a, double b) 두 수 a, b 중에서 큰 수를 리턴
static double min(double a, double b) 두 수 a, b 중에서 작은 수를 리턴
static double abs(double a) 실수 a의 절댓값 리턴
static double random() 0.0보다 크거나 같고 1.0보다 작은 임의의 실수를 리턴
static double cos(double a) 실수 a의 cosine 리턴
static double sin(double a) 실수 a의 sine 리턴
static double tan(double a) 실수 a의 tangent 리턴
static double sqrt(double a)
실수 a의 제곱근 리턴
static double exp(double a) e^a 값 리턴
static double ceil(double a) 자릿수 올림. 실수 a보다 크거나 같은 수 중에서 가장 작은 정수를 실수 타입으로 리턴
static double floor(double a) 자릿수 내림. 실수 a보다 작거나 같은 수 중에서 가장 큰 정수를 실수 타입으로 리턴
static long round(double a) 반올림. 실수 a를 소수 첫째 자리에서 반올림한 정수를 long타입으로 반환

 

 

▶ Math 클래스를 활용한 난수 발생

  • java.util.Random 클래스 사용 
  • Random 구구단 실습 예제
 

[JAVA] 배열과 Random (5일차)

1. 배열 2. 이차원 배열 3. 삼차원 배열 4. Random 1. 배열 ▶ 자료형이 같은 자료 여러 개를 한 번에 관리할 수 있으며, 자료가 연속으로 나열된 자료 구조이다. 즉, 동일 자료형의 기억장소 집합체를

deliciouscode.tistory.com

 

  • LOTTO 실습 예제
 

[JAVA] Math.random()을 이용한 LOTTO

문제 로또 번호를 입력 받아 로또 당첨 여부를 확인하시오. 6개를 다 맞추면 1등, 5개를 맞추고 보너스 번호까지 맞추면 2등, 5개만 맞추면 3등, 4개를 맞추면 4등, 3개를 맞추면 5등이다. ▶ 제한사

deliciouscode.tistory.com

 

 

 

단축키

alt+shift+a : 수정 모드로 전환. 여러 줄을 한 번에 수정할 수 있다.

alt+shift+r : 같은 단어를 한 번에 수정할 수 있다.

 

 

 

 


2023년 6월 5일 월요일

<15일차 수업 후기>

드디어 너무나도 배우고 싶었던 자바의 메소드를 학습했다. 당연히 전부 외우면 좋겠지만 다 외우기 어려울 수 있다고 중요한 개념을 몇 개 말씀해주셨다.

그동안 메소드를 많이 알지 못해서 속상하다고 후기에 많이 썼는데 여러 실습들과 오늘의 수업으로 조금은 익숙해진 것 같다. 메소드를 자연스럽게 사용하기 위해서 오늘 배운 내용을 열심히 복습하자.

728x90
반응형
728x90
반응형

<오늘의 학습>

1. 배열

2. 이차원 배열

3. 삼차원 배열

4. Random

 

 

1. 배열

자료형이 같은 자료 여러 개를 한 번에 관리할 수 있으며, 자료가 연속으로 나열된 자료 구조이다. 즉, 동일 자료형의 기억장소 집합체를 표현한다.

  1. int a=10; //변수(단독 주택에 비유)
    int b=20;
    int c=30;
  2. int arr[] = new int[3]; //배열(아파트에 비유)
    arr[0]=10;
    arr[1]=20;
    arr[2]=30;

 


1) 배열의 특징

  1. 배열의 장점 : 자료를 일괄 처리할 수 있다.
  2. 배열 순서는 0번부터 시작한다.
  3. 지역변수라도 자동 초기화가 된다.
  4. 배열은 new 연산자를 사용하여 생성한다. ex) int arr[]=new int[3];
  5. new연산자는 heap영역에 메모리를 할당받는다.
  6. cf(일반변수) : stack영역에 변수를 할당한다.
  7. 배열,클래스:new 연산자를 사용하여 heap 영역에 메모리를 할당받기 때문에 레퍼런스 자료형이라고 한다.
        ex) Test01 test01=new Test01[];
               └레퍼런스 변수(클래스 변수)&인스턴스&객체
  8. Garbage Collection(가비지 컬렌션) : 쓰레기 수집기
       - JVM에는 Garbage Collector가 존재한다.
       - 가비지 컬렉터는 더 이상 참조되지 않는 Garbage라고 불리는 불필요한 메모리를 알아서 정리해주는 역할을 한다.

 

  • stack영역 : 정적변수가 할당 됨(일반변수 선언,메서드가 포함됨)
  • heap영역 : 동적변수가 할당 됨(new 객체생성, new 배열생성)
  • 가비지 컬렉션 : JVM의 RunTime Data Area에서 사용하지 않은 heap메모리의 내용을 삭제하는 것.

 

 


2) 배열 선언 형식

  • 자료형[] 배열명;
  • 자료형 배열명[];
     배열명 = new 자료형[요소 갯수]; //위에서 선언 후 요소 갯수 넣기
    ex) int arr[];
           arr=new int[3];

  • 자료형[] 배열명 = new 자료형[요소갯수]; //선언과 동시에 생성
    ex) int arr[]=new int[3];

  • 자료형 배열명[]={초기값,초기값,,,}; //선언과 동시에 초기값을 준다
    ex) int a[]={10,20,30};

 

 


 예제) 배열 선언 및 값 초기화

		int a[]={10,20,30};
		for(int i=0;i<a.length;i++){
			System.out.printf("a[%d]:%d\n",i,a[i]);
		}
a[0]:10
a[1]:20
a[2]:30

 

 


 예제) 배열의 자동 초기화

	int max=1000;
	int hi=3;
	static int a;

	public static void main(String[] args) {
		//main()메서드가 static되어 있기 때문에 main()안에서는 static이 붙은 전역변수만 사용 가능함
		//main()안에서 객체 생성하면 static으로 선언하지 않아도 사용이 가능함

		int max=100;
		Practice p=new Practice();

		System.out.println(p.max);	//전역 변수 1000
		System.out.println(max);	//지역 변수 100
        
		System.out.println(a);	//0 출력. 전역 변수 a는 자동 초기화된다.
		int b; //지역 변수 b는 자동초기화가 되지 않는다.
		System.out.println(b); //오류. 지역 변수는 자동초기화가 되지 않는다.

		int c[]=new int[3];
		System.out.println(c[0]);	//0 출력. 배열은 자동으로 초기화된다.
		
	}//main_end
1000
100
0
0
  1. 전역변수:메서드 밖에서 선언된 변수로 자동으로 값이 초기화된다.
  2. 지역변수:자동으로 값이 초기화되지 않는다.
  3. 배열:지역변수일지라도 자동으로 초기화가 된다.
     

 


 예제) 배열끼리의 값 할당

		int a[]={10,20,30};
		int b[];//선언
		b=a;//a값을 b에 할당
		
		for(int i=0;i<a.length;i++){
			System.out.printf("a[%d]:%d, b[%d]:%d\n",i,a[i],i,b[i]);
		}
a[0]:10, b[0]:10
a[1]:20, b[1]:20
a[2]:30, b[2]:30

 

 

 

2. 이차원 배열

  • 행렬을 이용하여 평면을 구현하기 위한 배열
  • 이차원 이상으로 구현한 배열을 다차원 배열이라고 한다.
		int a[][]={{10,20},{30,40,50}};
		System.out.println("배열 a의 행 갯수:"+a.length);
		System.out.println("a[0] 열 갯수:"+a[0].length);
		System.out.println("a[1] 열 갯수:"+a[1].length);
배열 a의 행 갯수:2
a[0] 열 갯수:2
a[1] 열 갯수:3

 

 


 예제) 이차원 배열 출력

		int row,column;
		for(row=0;row<a.length;row++){
			for(column=0;column<a[row].length;column++){
				System.out.print(a[row][column]+" ");
			}//inner_for_end
			System.out.println();//줄바꿈
		}//for_end
10 20 
30 40 50

 

▷ 위 예제에서 행렬 표시

		for(row=0;row<a.length;row++){
			for(column=0;column<a[row].length;column++){
				System.out.printf("a[%d][%d]:%d\n",row,column,a[row][column]);
			}//inner_for_end
			System.out.println();//줄바꿈
		}//out_for_end
a[0][0]:10
a[0][1]:20

a[1][0]:30
a[1][1]:40
a[1][2]:50
a[0] 10 20  
a[1] 30 40 50

 

 


 예제) 이차원 배열 내용 출력

		double ki[][]={{162.5,175.5},{163.7,188.8}};

		for(int i=0;i<ki.length;i++){
			for(int j=0;j<ki[i].length;j++){
				System.out.print(ki[i][j]+"\t");
			}//inner_for_end
			System.out.println();
		}//out_for_end
162.5	175.5	
163.7	188.8

 

 

 

3. 삼차원 배열

 예제) 삼차원 배열 출력

		/*삼차원 배열 출력
		abc
		def

		ghi 
		jkl
		 */
		
		char c[][][]={
				{{'a','b','c'},{'d','e','f'}},
				{{'g','h','i'},{'j','k','l'}}
		};
        
		//출력
		for(int i=0;i<c.length;i++){
			for(int j=0;j<c[i].length;j++){
				for(int k=0;k<c[i][j].length;k++){
					System.out.print(c[i][j][k]);;

				}
				System.out.println();
			}
			System.out.println();
		}
abc
def

ghi
jkl

 

위 예제에서 선언할 때 값을 넣지 않고 'a'부터 'l'까지 초기 값을 넣어서 출력

		char arr[][][]=new char[2][2][3];
        
		//abc/def/ghi/jkl 초기값 넣기
		char ch='a';
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				for(int k=0;k<arr[i][j].length;k++){
					arr[i][j][k]=ch;
					ch++;
				}
			}
		}
        
		//출력
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				for(int k=0;k<arr[i][j].length;k++){
					System.out.print(arr[i][j][k]);;

				}
				System.out.println();
			}
			System.out.println();
		}
abc
def

ghi
jkl

 

 

 

4. Random

  • Math 참고 사이트 : https://docs.oracle.com/javase/1.5.0/docs/api/
  • 0 < Math.random() < 1
  • Math.random()*갯수+나올 수 있는 가장 작은 수
  • Math.random()*(큰 수-작은 수+1) +1 : 1부터 값이 시작될 때 큰 수와 작은 수 값을 이용할 수도 있다.
  • Math.random() 은 double형으로 출력되기 때문에 정수형으로 받고 싶다면 정수형으로 강제 형변환을 해주어야 한다.

 

 


 예제) 주사위 값을 랜덤으로 5번 출력

		/*
		int a=(int)(Math.random()*가지수+나올 수 있는 가장 작은 수);

		주사위가 나올 수 있는 총 숫자:6개
		int a=(int)(Math.random()*6+1); // 1~6까지의 랜덤 숫자가 a에 저장된다.
		 */

		//주사위 5번 돌리기
		for(int i=0;i<5;i++){
			int random_num=(int)(Math.random()*6+1);
			System.out.println(random_num);
		}
5
1
5
3
1

 

 


 예제) 로또 번호를 랜덤으로 출력

		/*랜덤 로또 번호(1~45) 출력*/
		int lotto[]=new int[6];//선언&생성

		for(int i=0;i<lotto.length;i++){
			lotto[i]=(int)(Math.random()*45+1);
			for(int j=0;j<i;j++){
				if(lotto[i]==lotto[j]){//이미 나온 값이 들어가면 무효화. 다시 랜덤 출력
					i--;
					break;//inner_for_out
				}//if_end
			}//inner_for_end
		}//out_for_end

		//출력
		System.out.print("로또 번호:");
		for(int i=0;i<lotto.length;i++)
			System.out.print(lotto[i]+" ");
로또 번호:38 5 13 23 6 20

 

 

 

 

 


2023년 5월 18일 목요일

<5일차 수업 후기>

예전에 C언어를 배울 때, rand() 함수를 이용해서 랜덤 값을 받아왔던 적이 있었다. C언어에서는 srand 함수와 time 함수를 이용하지 않으면 랜덤 값이 매번 똑같이 출력됐는데 JAVA에서는 다른 함수를 추가로 사용하지 않아도 값이 계속 바뀌어서 신기했다.

이번주 주말에는 로또 번호를 입력하고, 로또 번호를 뽑아서 당첨됐는지 출력하는 코드를 만들어보고 싶다.

728x90
반응형

'HRD_훈련 > JAVA' 카테고리의 다른 글

[JAVA] 생성자와 상속 (7일차)  (0) 2023.05.22
[JAVA] 객체 지향 프로그래밍 (6일차)  (0) 2023.05.19
[JAVA] 반복문 (4일차)  (0) 2023.05.18
[JAVA] 조건문 (4일차)  (0) 2023.05.17
[JAVA] 연산자(Operation) (3일차)  (0) 2023.05.17

+ Recent posts