자바 배열 사용법



배열이란 같은 데이터 타입을 가진 연속된 메모리 공간으로 이루어진 자료 구조입니다. 같은 데이터 타입을 가진 여러개의 변수를 할당하기위해 사용합니다.


자바에서 배열 사용하는 방법입니다.


1. 1차원 int형 배열

C/C++과 달리 자바는 모든 변수가 객체(Object)로 이루어져있기 때문에 배열을 사용하기 위해 배열 객체에 new를 통해 메모리 공간을 할당해줍니다.

다음은 1차원 int형 배열의 사용방법입니다.


소스코드(Java) - 1차원 int형 배열 선언

int arr[];

arr = new int[10]; // int arr[] = new int[10] 과 같음

// int arr[] = {1, 2, 3, 4} 도 가능


for(int i = 0; i < 10; i++) {

arr[i] = i+1;

}


System.out.print("arr = [ ");

for(int i = 0; i < 10; i++) {

System.out.print(arr[i]);

System.out.print(" ");

}

System.out.println("]");

실행결과


2. 1차원 String형 배열

int와 마찬가지로 String 배열 역시 똑같은 방법으로 선언하고 사용하시면 됩니다.

소스코드(Java) - 1차원 String형 배열 선언

String[] str = new String[10];


for(int i = 0; i<10; i++) {

str[i] = "str" + (i+1);

}


for(int i =0; i < 10;i ++) {

System.out.print(str[i] + " ");

}

실행결과


3. 1차원 int형 배열의 다른 선언방법

C/C++ 등의 언어에서는 배열을 선언과 동시에 크기를 지정해주어야 하지만 자바와 같은 언어의 경우 배열 객체의 선언과 정의를 따로함으로써 배열의 크기를 받아 지정해 줄 수 있습니다.(C/C++의 포인터 동적할당 처럼 사용)

소스코드(Java) - 1차원 int형 배열 선언2

int arr[];

int arr_size = 8;

arr = new int[arr_size];

for(int i = 0; i < arr_size; i++) {

arr[i] = i+1;

}


for(int i = 0; i < arr_size; i++) {

System.out.println(arr[i]);

}

실행결과


4. 2차원 int형 배열

1차원과 마찬가지로 new를 통해 선언할 수 있습니다.

소스코드(Java) - 2차원 int형 배열 선언

int matrix[][] = new int[5][5]; // 다음과 같이 초기화 할 수 있습니다.


for(int i = 0; i < 5; i++) {

for(int j = 0; j < 5; j++) {

matrix[i][j] = (j+1)+(i*5);

}

}


for(int i = 0; i < 5; i++) {

for(int j = 0; j < 5; j++) {

System.out.print(matrix[i][j] + " ");

}

System.out.println();

}

실행결과


5. 배열 복사

System.arraycopy 메소드를 통해 같은 데이터 타입의 배열끼리 배열을 복사 할 수 있습니다.

소스코드(Java) - 1차원 String형 배열 복사

String[] str1 = {"a", "b", "c"};

String[] str2 = new String[3];


System.arraycopy(str1, 0, str2, 0, 3); // 복사할 배열, 복사할 배열의 시작위치, 복사받을 배열, 복사받을 배열의 시작위치, 배열크기


for(int i = 0; i < 3; i++) {

System.out.println(str2[i]);

}

실행결과


6. 배열 정렬

Array클래스의 sort메소드를 통해 배열을 오름차순 또는 내림차순, 인덱스를 지정해서 배열의 요소를 정렬할 수 있습니다. (시간복잡도는 O(n logn))

소스코드(Java) - 1차원 int형 배열 정렬

int arr[] = {4, 2, 3, 1, 0}; // 배열의 선언과 동시에 초기화(크기는 알아서 지정)


Arrays.sort(arr, 0, 5); // 배열, 정렬을 수행 할 시작위치, 끝위치


for(int i = 0; i < 5; i++) {

System.out.println(arr[i]);

}

실행결과


이상입니다.




정보가 유익하셨다면 아래 공감버튼 눌러주시면 감사하겠습니다.

질문사항은 댓글로 달아주시면 성의껏 답변해드리겠습니다.





안녕하세요 열코입니다.

이번 시간에는 자바에서 String(문자열) 사용법에 대해 알아보겠습니다.

자바에서 문자열 사용 시 자바에서 제공하는 String class를 참조합니다.



※ 선언 및 정의

⇒ 문자열을 사용하기 위해 String 객체를 선언하고 정의합니다.

선언 및 정의 방법은 여러 가지가 있으나 아래 예는 주로 사용되는 방법입니다.


사용법 1)


1
2
3
String str1;
 
str1 = "str1";
cs


사용법 2)


1
String str2 = "str2";
cs


사용법 3)


1
String str3 = new String("str3");
cs


사용법 4)


1
2
3
String str4 = new String();
 
str4 = "str4";
cs



※ length : 문자열의 길이

⇒ 해당 객체의 문자열 길이를 반환(int형) 합니다. (null은 포함하지 않음)


1
2
3
String str = "abcde";
 
System.out.println(str.length());  // 5 출력
cs




※ isEmpty : 문자열이 비어있는지 확인

⇒ 문자열의 길이(length)가 0이면 true 반환(boolean형), 0이 아니면 false를 반환합니다.


1
2
3
4
5
6
7
8
9
String str = new String();
 
if(str.isEmpty())  // "empty" 출력
 
     System.out.println("empty");
 
else
 
     System.out.println("not empty");
cs



※ charAt : 문자 반환

⇒ 문자열 중 해당 인덱스의 문자(char형)를 반환합니다.(인덱스는 0 ~ 문자열의 길이(length) -1)


1
2
3
String str = new String("abcd");
 
System.out.println(str.charAt(2));  // 'c' 출력
cs



※ getChars : 문자 배열 복사

⇒ 문자열을 문자(char) 배열로 복사합니다.


1
2
3
4
5
6
7
String str = new String("abcd");
 
char [] ch = new char[4];
 
str.getChars(02, ch, 0); // 시작 인덱스, 끝 인덱스, 복사 받을 char 배열 이름, 복사 시작 위치
 
System.out.println(ch);  // "ab" 출력
cs



※ equals : 문자열 비교

⇒ 해당 문자열과 매개변수의 문자열이 같은 지 비교하여 true 또는 false를 반환합니다.(boolean형)


1
2
3
4
5
6
7
8
9
10
11
String str = new String("abcd");
 
String str2 = new String("abc");
 
if(str.equals(str2))  // "not equal" 출력
 
     System.out.println("equal");
 
else
 
     System.out.println("not equal");
cs


(자바에서 문자열 비교를 ==연산자로 비교할 수 없습니다!)



※ compareTo : 문자열 비교(사전 순으로 대소 비교)

⇒ 해당 문자열과 매개변수의 문자열을 사전 순으로 비교합니다.


1
2
3
4
5
String str = new String("aaa");
 
String str2 = new String("bbb");
 
System.out.println(str.compareTo(str2)); // -1 출력
cs


반환값 : 

str과 str2의 같을 경우 : 0

str이 str2보다 사전 순으로 앞인 경우 : -1

str이 str2보다 사전 순으로 뒤인 경우 : 1

* str의 마지막 문자열과 str2의 마지막 문자를 제외하고 같은 경우

예 ) String str = new String("ccca");

       String str2 = new String("cccz");

       str과 str2의 마지막 문자열을 비교하여 사전 순 차이만큼 반환 : -25



※ indexOf : 문자열 위치

⇒ 해당 문자열이 위치하는 인덱스를 반환합니다.(int형)


1
2
3
String str = new String("abcd");
 
System.out.println(str.indexOf("c")); // 2 출력
cs


(해당 문자열이 존재하지 않으면 -1을 반환합니다.)



※ lastIndexOf : 문자열 마지막 위치

⇒ 해당 문자열이 마지막으로 위치하는 인덱스를 반환합니다.(int형)


1
2
3
String str = new String("abcdeabcda");
 
System.out.println(str.lastIndexOf("c")); // 7 출력
cs



※ subString : 문자열 자르기

⇒ 해당 문자열의 인덱스만큼 잘라서 반환합니다.(String형)


1
2
3
4
5
String str = new String("abcdefg");
 
System.out.println(str.substring(26)); // "cdef" 출력
 
System.out.println(str.substring(5)); // "fg" 출력
cs


(매개 변수가 2개인 경우 : 해당 범위만큼 자름, 1개인 경우 : 앞에서부터 인덱스만큼 자름)



※ concat : 문자열 합치기

⇒ 해당 문자열 뒤에 매개변수 문자열을 서로 합칩니다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
String str = new String("a");
 
String str2 = new String("b");
 
String str3 = new String();
 
 
 
str3 = str.concat(str2);
 
String str4 = str+str2; // concat과 같은 동작
 
 
 
System.out.println(str3); // "ab" 출력
 
System.out.println(str4); // "ab" 출력
cs



※ replace : 문자열 치환 

⇒ 해당 문자를 찾아 다음 문자로 변경합니다.


1
2
3
4
5
String str = new String("abc");
 
str = str.replace('b''k');
 
System.out.println(str); // "akc" 출력
cs



※ contains : 문자열 포함

⇒ 해당 문자열이 포함되어 있는지 확인합니다. 포함할 경우 true, 아닌 경우 false 반환(boolean형)


1
2
3
4
5
6
7
8
9
String str = new String("abc");
 
if(str.contains("bc")) // "contain" 출력
 
     System.out.println("contain");
 
else
 
     System.out.println("not contain");
cs



※ split : 문자열 분리

⇒ 문자열을 해당 문자열을 기준으로 모두 분리합니다.(String [] 반환)


1
2
3
4
5
6
7
8
9
10
11
String str = new String("a b c d e f");
 
String[] str2 = new String[6];
 
for(int i = 0; i < 6; i++
 
     str2[i] = str.split(" ")[i]; 
 
for(int i = 0; i < 6; i++
 
     System.out.print(str2[i]); // abcdef 출력
cs



※ trim : 문자열 공백 제거

⇒ 해당 문자열의 앞, 뒤의 공백을 모두 제거합니다.(문자열 사이의 공백은 제거되지 않음)


1
2
3
4
5
String str = new String(" a b c ");
 
String str2 = str.trim();
 
System.out.println(str2); // "abc" 출력
cs



아래 두 메소드는 Integer class의 메소드입니다. 

자바에서 주로 사용하는 int to String, String to int 변환 방법입니다.


※ toString : int to String

⇒ int형 변수를 String 객체로 변환


1
2
3
4
5
6
7
String str = new String("100");
 
int value = 200;
 
String sum = str + Integer.toString(value);
 
System.out.println(sum); // 100200 출력
cs



※ parseInt : String to int 

⇒ String 객체를 int형 변수로 변환


1
2
3
4
5
6
7
String str = new String("100");
 
int value = 200;
 
int sum = Integer.parseInt(str) + value;
 
System.out.println(sum); // 300 출력
cs




이상 '자바 문자열 사용법'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.






1. 개요

크롤링(Crawling) 이란? 

정식명칭은 Scraping 또는 Web Scraping 으로 웹 사이트에서 원하는 정보를 추출하는 것을 의미합니다. 보통 웹 사이트는 기본적으로 Html 기반입니다. 크롬에서 Ctrl + U 또는 우클릭 - 페이지 소스보기를 클릭하시면 다음과 같은 화면을 볼 수 있습니다.





네이버 금융 웹 사이트 소스코드


위 사진은 네이버 금융  https://finance.naver.com/ 홈페이지의 소소를 확인한 것입니다.



2. 활용

그렇다면 이 소스들을 가지고 우리는 무엇을 할 수 있을까요?

Html 소스들을 자세히 들여다 보시면 우리가 웹 사이트에서 보는 모든 정보들이 담겨있습니다.

이 정보들 중 원하는 정보만 가져와서 자신만의 프로그램에 사용하는 것 입니다.


불법아닙니까?

-> 크롤링 한 데이터를 소장하고 활용하는것 까지는 불법이 아닙니다. 다만, 영리를 위한 목적, 배포 시 문제가 될 수 있습니다. 후자의 경우 해당 사이트의 허락을 꼭 맡으시기 바랍니다.


예제로 네이버 금융 사이트에서 국제시장환율 란의 환율 데이터를 긁어와서 화면에 출력해 보겠습니다.




3. 소스코드





4. 실행화면





위 코드를 실행하면 다음과 같이 콘솔창에 크롤링 한 데이터가 출력됩니다.

프로그램에 따라 윈도우 창에 출력 할 수도 있고 변수에 저장하거나 데이터베이스에 저장 할 수 도 있겠습니다. 

사실 문자열을 조금만 다룰 줄 안다면 쉽게 처리 가능한 기술입니다. 





정보가 유익하셨다면 아래 공감버튼 눌러주시면 감사하겠습니다.

질문사항은 댓글로 달아주시면 성의껏 답변해드리겠습니다.



이번에는 Java Eclipse에서 JDBC를 통해 Mysql DB를 연동하는 방법에 대해 알아보겠습니다.

- JDBC란? Java DataBase Connectivity로 자바에서 데이터베이스에 접속 할 수 있도록 자바에서 제공하는 API입니다. 


* 환경
JDK : jdk1.8.0_171
자바 개발 툴 : eclipse-jee-oxygen-3a-win32
데이터베이스 : MySQL 5.1.41-community

* 소스코드
import java.sql.*; 

public class dbtest { 
          public static void main(String arg[]) throws Exception { 
                    Connection conn; 
                    Statement stmt; 
                    ResultSet rs; 

                    Class.forName("com.mysql.jdbc.Driver");  // JDBC driver를 메모리에 로드
                    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/DB명", 
                              "ID", "PASSWORD"); 
                    stmt = (Statement) conn.createStatement(); 
                    rs=stmt.executeQuery("SELECT * FROM TABLE명");  // 원하는 쿼리문 실행

                    while(rs.next()) { 
                              System.out.print(rs.getString("id") + " ");  
                              System.out.println(rs.getString("password")); 
                    

                    rs.close(); 
                    stmt.close(); 
                    conn.close();
          
}

코드는 매우 간단합니다.
먼저 JDBC Driver를 사용하기 위해 Class.forName을 사용하여 메모리에 등록하고
DriverManager를 통해 DB에 접속합니다.
그리고 쿼리를 준비하고 원하는 쿼리문을 실행하고 받은 데이터를 처리합니다.
마지막으로 정상적인 처리를 위해 사용한 객체들을 역순으로 닫아주면 됩니다.

위 SELECT 문 사용 예제를 통해 INSERT, DELETE, UPDATE 문을 활용하여 프로그램을 제작해 보면
어떨까요?

에러나 질문사항은 댓글로 달아주세요.



to Top