[Java] Array,Variable Array

package day0203;

 

public class UseArray1 {

 

public UseArray1() {

//1.선언 : 데이터형[] 배열명=null;

int[] arr=null;

//2.생성 : 배열명=new 데이퍼형[방의수]; // heap생성, 모든방 초기화, 크기변경

arr=new int[5];

System.out.println("arr의 주소" + arr + "arr.length" + arr.length);

 

//3.값할당 : 배열명[방의번호]=값;

arr[0]=2025;

arr[1]=2;

arr[2]=3;

arr[3]=16;

arr[4]=46;

//4.값사용 : 배열명[방의번호]

System.out.printf("arr[0]=%d, arr[1]=%d, arr[2]=%d, arr[3]=%d, arr[4]=%d\n",

arr[0],arr[1],arr[2],arr[3],arr[4]);

 

//일괄처리 : 모든 방의 값을 한번에 처리한다.

int sum=0;

for(int i=0; i< arr.length; i++) {

System.out.printf("arr[%d]=%d\n",i,arr[i]);

sum += arr[i]; // sum 변수에 값 추가

}//end for

System.out.println("arr배열 방의 합 : " + sum);

 

//배열 모든 방의 값을 더한 후 평균을 출력, 소수점 이하 두자리 까지만 출력.

double average = sum / arr.length;

System.out.printf("arr 배열 방의 평균: %.2f\n", average);

 

}//UseArray1

 

public static void main(String[] args) {

new UseArray1();

 

}//main

 

}//class

콘솔 출력

arr의 주소[I@1f32e575arr.length5

arr[0]=2025, arr[1]=2, arr[2]=3, arr[3]=16, arr[4]=46

arr[0]=2025

arr[1]=2

arr[2]=3

arr[3]=16

arr[4]=46

arr배열 방의 합 : 2092

arr 배열 방의 평균: 418.00

 

package day0203;

 

/**

* java.lang.String 클래스의 사용.

*/

public class UseString {

 

public UseString() {

String str=""; //empty 초기화

String str2=null; //null 초기화

 

//null 비교 == 연산자 사용

System.out.println("str2의 null 비교:"+(str2== null));

System.out.println("str에 null 비교:"+str== null);

 

//null 인 값을 가진 문자열 객체는 method 를 호출했을때 error 가 발생

// if( str2 !=null) {

// str2.isEmpty();

// }//end if

 

System.out.println(str);//empty : 에러는 발생하지 않고, 아무값도 출력되지 않는다.

//empty 비교

System.out.println("str empty 비교:"+(str.length()==0));//JDK1.5까지 length() 사용

//JDK1.6부터는 isEmpty() 사용 : 가독성 유리

System.out.println("str empty 비교:"+str.isEmpty() );// true

 

if(str != null && !str.isEmpty() ) { // 객체가 생성되어있고, "empty 가 아니었을때

//일해!

 

}//end if

 

str = " A BC ";

// 문자열의 앞뒤공백 제거

str2=str.trim(); // "A BC"할당

System.out.printf( "[%s]의 앞 뒤 공백 제거[%s]\n", str , str2 );

 

str="자바는 OOP언어!";

//문자열의 비교

//문자열에 모든 값을 알아야 비교 : equals()

System.out.println(str.equals("자바는 OOP언어!") ); //true

System.out.println(str.equals("자바는 OoP언어!") ); //false

System.out.println(str.equals("자바는OOP언어!") ); //false

 

//문자열의 일부분의 값만 알아도 비교.

//해당 문자열로 시작 했는지? :startsWith("시작문자열")

str="홍길동";

str2="드래곤";

String str3="다람쥐";

 

//특정 문자열로 시작했는지?

System.out.println(str+"은 '홍' 씨인가?"+str.startsWith("홍") );

System.out.println(str+"은 '홍' 씨인가?"+(str.indexOf("홍")==0) );

System.out.println(str2+"은 '홍' 씨인가?"+str2.startsWith("홍") );

System.out.println(str3+"은 '홍' 씨인가?"+str3.startsWith("홍") );

 

 

//특정 문자열로 끝났는지?

System.out.println(str+"의 이름이 '길동'인가?"+str.endsWith("길동") );

System.out.println(str2+"의 이름이 '길동'인가?"+str2.endsWith("길동") );

System.out.println(str3+"의 이름이 '길동'인가?"+str3.endsWith("길동") );

 

//특정문자열을 포함하고 있는지?

System.out.println(str+"에 '드'이 포함되었는가?"+str.contains("드") );

System.out.println(str+"에 '드'이 포함되었는가?"+(str.indexOf("드")!= -1) );

System.out.println(str2+"에 '드'이 포함되었는가?"+str2.contains("드") );

System.out.println(str2+"에 '드'이 포함되었는가?"+(str2.indexOf("드")!= -1));

System.out.println(str3+"에 '드'이 포함되었는가?"+str3.contains("드") );

 

//문자열 치환

str="Java Oracle";

str2=str.replace("a","A");

 

System.out.println(str2);

 

str2=str.replaceAll("a", "AA");

System.out.println(str2);

 

 

String msg ="나 여기,넌 어디니 슈방?";

 

// String filter=msg.replaceAll("씨방", "**");

// String filter=msg.replaceAll("씨", "*");

// filter=filter.replaceAll("방", "*");

// filter=filter.replaceAll("ㅆ", "*");

 

//method chain 사용.(method 의 반환형이 참조형 일때 method 를 연결하여 계속 호출하는 것.)

//객체명.method명().method 명().method 명().,,,,,,,,,,,

String filter=msg.replaceAll("슈", "*").replaceAll("방","*").replaceAll("ㅅㅂ","*");

 

System.out.println("원본:"+ msg );

System.out.println("필터:"+filter);

 

//원하는 형식의 문자열 생성

int year=2025;

double height=175.2;

 

String formatStr=String.format("올해는 %d년 내 키는 %.1f",year,height);

System.out.println(formatStr);

 

// 정규식 (RegEx)

msg="hello 자바 010-1234-5678 내 나이는 25살이고 우리집 번지 19-1번지";

 

// 숫자 패턴 \\d

// 문자열에서 모든 숫자를 x 로 처리

str=msg.replaceAll("\\d", "*");

System.out.println("원본 문자열:" +msg );

System.out.println("치환된 문자열:" + str );

// 문자열 안에서 전화번호 형식을 변경

str=msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})", "***-****-****" );

System.out.println("치환된 문자열 :"+str);

//그룹의 값을 보여줄때

str=msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})" , "$1-****-$3" );

System.out.println("그룹의 값 노출: :"+str);

//010-x234-6789

str=msg.replaceAll("(\\d{3})-(\\d{1})(\\d{3}-\\d{4})" , " $1-*$3" );

System.out.println("둘째 자리 하나만 없애기: "+str);

//긍정형 전방탐색 ( (?=값) )

str=msg.replaceAll("(\\d{2})(?=살)" , "**" );

System.out.println("전방탐색으로 나이뽑기"+str);

//긍정형 후방탐색 ( (?<=값) )

str=msg.replaceAll("(?<=나이는 )(\\d{2})" , "**" );

System.out.println("후방탐색으로 나이뽑기"+str);

 

//문자열

msg="가나다 Test ~0abc test 자바 z Z1o9!";

//'T', 'e', 's', 't'를 각각 찾는다. : 범위 x

System.out.println(msg.replaceAll("[Test]", ""));

System.out.println(msg.replaceAll("[A-Z]", "")); //대문자만 치환

System.out.println(msg.replaceAll("[a-z]", "")); //소문자만 치환

System.out.println(msg.replaceAll("[0-9]", "")); //숫자만 치환

System.out.println(msg.replaceAll("[~!.,@#$%^&*_)(}{+</;']", "")); //특수문자만 치환

System.out.println(msg.replaceAll("[ㄱ-힣]", "")); //한글만 치환

 

// String id="Test12ㄱ34~+";

// if(!"".equals(id.replaceAll("[A-Za-z0-9~+]", ""))) {

// System.out.println("아이디어 허용하지 않는 문자가 포함되었습니다.");

// return;

// }//end if

 

msg="hello! 내 이메일은 test@test.com 입니다.";

str=msg.replaceAll("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b",

"xxx@xxx.xxx");

System.out.println("원본 : " + msg);

System.out.println("치환 : " + str);

 

int i=3;

// str=i;//error

str=String.valueOf(i);

 

System.out.printf("str=%s, i=%d\n",str,i);

 

boolean b=false;

str=String.valueOf(b);

System.out.printf("str=%s, b=%b\n",str,b);

 

}//UseString

 

 

public static void main(String[] args) {

 

// UseString us=new UseString(); // us 라는 객체명으로 변수나 method 를 호출하지 않는다.

// 변수(객체)를 사용하지않는다 . 경고가 발생.

// => 해결 : 객체명을 선언하지 않는 객체화 : new 생성자();

new UseString();

}//main

 

}//class

콘솔 출력

str2의 null 비교:true

false

 

str empty 비교:true

str empty 비교:true

[ A BC ]의 앞 뒤 공백 제거[A BC]

true

false

false

홍길동은 '홍' 씨인가?true

홍길동은 '홍' 씨인가?true

드래곤은 '홍' 씨인가?false

다람쥐은 '홍' 씨인가?false

홍길동의 이름이 '길동'인가?true

드래곤의 이름이 '길동'인가?false

다람쥐의 이름이 '길동'인가?false

홍길동에 '드'이 포함되었는가?false

홍길동에 '드'이 포함되었는가?false

드래곤에 '드'이 포함되었는가?true

드래곤에 '드'이 포함되었는가?true

다람쥐에 '드'이 포함되었는가?false

JAvA OrAcle

JAAvAA OrAAcle

원본:나 여기,넌 어디니 슈방?

필터:나 여기,넌 어디니 **?

올해는 2025년 내 키는 175.2

원본 문자열:hello 자바 010-1234-5678 내 나이는 25살이고 우리집 번지 19-1번지

치환된 문자열:hello 자바 ***-****-**** 내 나이는 **살이고 우리집 번지 **-*번지

치환된 문자열 :hello 자바 ***-****-**** 내 나이는 25살이고 우리집 번지 19-1번지

그룹의 값 노출: :hello 자바 010-****-5678 내 나이는 25살이고 우리집 번지 19-1번지

둘째 자리 하나만 없애기: hello 자바 010-*234-5678 내 나이는 25살이고 우리집 번지 19-1번지

전방탐색으로 나이뽑기hello 자바 010-1234-5678 내 나이는 **살이고 우리집 번지 19-1번지

후방탐색으로 나이뽑기hello 자바 010-1234-5678 내 나이는 **살이고 우리집 번지 19-1번지

가나다 ~0abc 자바 z Z1o9!

가나다 est ~0abc test 자바 z 1o9!

가나다 T ~0 자바 Z19!

가나다 Test ~abc test 자바 z Zo!

가나다 Test 0abc test 자바 z Z1o9

Test ~0abc test z Z1o9!

원본 : hello! 내 이메일은 test@test.com 입니다.

치환 : hello! 내 이메일은 xxx@xxx.xxx 입니다.

str=3, i=3

str=false, b=false

 

package day0203;

 

/**

* java.lang.String 클래스의 사용.

*/

public class UseString {

 

public UseString() {

String str=""; //empty 초기화

String str2=null; //null 초기화

 

//null 비교 == 연산자 사용

System.out.println("str2의 null 비교:"+(str2== null));

System.out.println("str에 null 비교:"+str== null);

 

//null 인 값을 가진 문자열 객체는 method 를 호출했을때 error 가 발생

// if( str2 !=null) {

// str2.isEmpty();

// }//end if

 

System.out.println(str);//empty : 에러는 발생하지 않고, 아무값도 출력되지 않는다.

//empty 비교

System.out.println("str empty 비교:"+(str.length()==0));//JDK1.5까지 length() 사용

//JDK1.6부터는 isEmpty() 사용 : 가독성 유리

System.out.println("str empty 비교:"+str.isEmpty() );// true

 

if(str != null && !str.isEmpty() ) { // 객체가 생성되어있고, "empty 가 아니었을때

//일해!

 

}//end if

 

str = " A BC ";

// 문자열의 앞뒤공백 제거

str2=str.trim(); // "A BC"할당

System.out.printf( "[%s]의 앞 뒤 공백 제거[%s]\n", str , str2 );

 

str="자바는 OOP언어!";

//문자열의 비교

//문자열에 모든 값을 알아야 비교 : equals()

System.out.println(str.equals("자바는 OOP언어!") ); //true

System.out.println(str.equals("자바는 OoP언어!") ); //false

System.out.println(str.equals("자바는OOP언어!") ); //false

 

//문자열의 일부분의 값만 알아도 비교.

//해당 문자열로 시작 했는지? :startsWith("시작문자열")

str="홍길동";

str2="드래곤";

String str3="다람쥐";

 

//특정 문자열로 시작했는지?

System.out.println(str+"은 '홍' 씨인가?"+str.startsWith("홍") );

System.out.println(str+"은 '홍' 씨인가?"+(str.indexOf("홍")==0) );

System.out.println(str2+"은 '홍' 씨인가?"+str2.startsWith("홍") );

System.out.println(str3+"은 '홍' 씨인가?"+str3.startsWith("홍") );

 

 

//특정 문자열로 끝났는지?

System.out.println(str+"의 이름이 '길동'인가?"+str.endsWith("길동") );

System.out.println(str2+"의 이름이 '길동'인가?"+str2.endsWith("길동") );

System.out.println(str3+"의 이름이 '길동'인가?"+str3.endsWith("길동") );

 

//특정문자열을 포함하고 있는지?

System.out.println(str+"에 '드'이 포함되었는가?"+str.contains("드") );

System.out.println(str+"에 '드'이 포함되었는가?"+(str.indexOf("드")!= -1) );

System.out.println(str2+"에 '드'이 포함되었는가?"+str2.contains("드") );

System.out.println(str2+"에 '드'이 포함되었는가?"+(str2.indexOf("드")!= -1));

System.out.println(str3+"에 '드'이 포함되었는가?"+str3.contains("드") );

 

//문자열 치환

str="Java Oracle";

str2=str.replace("a","A");

 

System.out.println(str2);

 

str2=str.replaceAll("a", "AA");

System.out.println(str2);

 

 

String msg ="나 여기,넌 어디니 슈방?";

 

// String filter=msg.replaceAll("씨방", "**");

// String filter=msg.replaceAll("씨", "*");

// filter=filter.replaceAll("방", "*");

// filter=filter.replaceAll("ㅆ", "*");

 

//method chain 사용.(method 의 반환형이 참조형 일때 method 를 연결하여 계속 호출하는 것.)

//객체명.method명().method 명().method 명().,,,,,,,,,,,

String filter=msg.replaceAll("슈", "*").replaceAll("방","*").replaceAll("ㅅㅂ","*");

 

System.out.println("원본:"+ msg );

System.out.println("필터:"+filter);

 

//원하는 형식의 문자열 생성

int year=2025;

double height=175.2;

 

String formatStr=String.format("올해는 %d년 내 키는 %.1f",year,height);

System.out.println(formatStr);

 

// 정규식 (RegEx)

msg="hello 자바 010-1234-5678 내 나이는 25살이고 우리집 번지 19-1번지";

 

// 숫자 패턴 \\d

// 문자열에서 모든 숫자를 x 로 처리

str=msg.replaceAll("\\d", "*");

System.out.println("원본 문자열:" +msg );

System.out.println("치환된 문자열:" + str );

// 문자열 안에서 전화번호 형식을 변경

str=msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})", "***-****-****" );

System.out.println("치환된 문자열 :"+str);

//그룹의 값을 보여줄때

str=msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})" , "$1-****-$3" );

System.out.println("그룹의 값 노출: :"+str);

//010-x234-6789

str=msg.replaceAll("(\\d{3})-(\\d{1})(\\d{3}-\\d{4})" , " $1-*$3" );

System.out.println("둘째 자리 하나만 없애기: "+str);

//긍정형 전방탐색 ( (?=값) )

str=msg.replaceAll("(\\d{2})(?=살)" , "**" );

System.out.println("전방탐색으로 나이뽑기"+str);

//긍정형 후방탐색 ( (?<=값) )

str=msg.replaceAll("(?<=나이는 )(\\d{2})" , "**" );

System.out.println("후방탐색으로 나이뽑기"+str);

 

//문자열

msg="가나다 Test ~0abc test 자바 z Z1o9!";

//'T', 'e', 's', 't'를 각각 찾는다. : 범위 x

System.out.println(msg.replaceAll("[Test]", ""));

System.out.println(msg.replaceAll("[A-Z]", "")); //대문자만 치환

System.out.println(msg.replaceAll("[a-z]", "")); //소문자만 치환

System.out.println(msg.replaceAll("[0-9]", "")); //숫자만 치환

System.out.println(msg.replaceAll("[~!.,@#$%^&*_)(}{+</;']", "")); //특수문자만 치환

System.out.println(msg.replaceAll("[ㄱ-힣]", "")); //한글만 치환

 

// String id="Test12ㄱ34~+";

// if(!"".equals(id.replaceAll("[A-Za-z0-9~+]", ""))) {

// System.out.println("아이디어 허용하지 않는 문자가 포함되었습니다.");

// return;

// }//end if

 

msg="hello! 내 이메일은 test@test.com 입니다.";

str=msg.replaceAll("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b",

"xxx@xxx.xxx");

System.out.println("원본 : " + msg);

System.out.println("치환 : " + str);

 

int i=3;

// str=i;//error

str=String.valueOf(i);

 

System.out.printf("str=%s, i=%d\n",str,i);

 

boolean b=false;

str=String.valueOf(b);

System.out.printf("str=%s, b=%b\n",str,b);

 

}//UseString

 

 

public static void main(String[] args) {

 

// UseString us=new UseString(); // us 라는 객체명으로 변수나 method 를 호출하지 않는다.

// 변수(객체)를 사용하지않는다 . 경고가 발생.

// => 해결 : 객체명을 선언하지 않는 객체화 : new 생성자();

new UseString();

}//main

 

}//class

콘솔 출력

-----------------------------------------------------------

시험결과

응시인원[5]명

-----------------------------------------------------------

번호 이름 JavaSE Oracle JDBC HTML 총점 평균

===========================================================

1 루피 57 58 42 90 247 61

2 상디 75 77 79 89 320 80

3 쵸파 97 100 98 100 395 98

4 조로 87 88 88 84 347 86

5 나미 95 91 99 93 378 94

===========================================================

 

과목 총점:

JavaSE: 411 Oracle: 414 JDBC: 406 HTML: 456

과목 평균:

JavaSE: 82.20 Oracle: 82.80 JDBC: 81.20 HTML: 91.20

1등 학생: 쵸파 (총점: 395)

1등 학생 점수 (오름차순): 97 98 100 100

 

package day0204;

 

public class VariableArray {

 

public VariableArray() {

//1.선언) 데이터형[][] 배열명=null;

int[][] arr=null;

//2.생성) 배열명=new 데이터형[행의수][];//열의 수를 설정하지 않는다.

arr=new int[5][];

//3.행마다 열을 생성) 배열명[행의번호]=new 데이터형[열의수];

arr[0]=new int[3];

arr[1]=new int[2];

arr[2]=new int[]{1,2,3,4,5};

arr[3]=new int[]{1};

arr[4]=new int[]{10,20,30};

 

for(int i=0; i <arr.length;i++) {

System.out.printf("arr[%d]행에 열의 수 %d개\n",i,arr[i].length);

}//end for

 

//4.값할당) 배열명[행의번호][열의번호]=값;

arr[0][0]=10;

arr[1][1]=10;

arr[2][3]=50;

 

//5.값사용) 배열명[행의번호][열의번호]

for(int[] oneArr : arr ) {//이차원 배열의 한행은 일차원 배열로 이루어져 있다

for(int value : oneArr) { //일차원 배열의 방은 단일 형으로 이루어져 있다

System.out.printf("%d\t",value);

}//end for

System.out.println();

}//end for

 

}//VariableArray

public static void main(String[] args) {

new VariableArray();

}//main

 

}//class

콘솔 출력 

arr[0]행에 열의 수 3개

arr[1]행에 열의 수 2개

arr[2]행에 열의 수 5개

arr[3]행에 열의 수 1개

arr[4]행에 열의 수 3개

10 0 0

0 10

1 2 3 50 5

1

10 20 30