Language/Java에 해당하는 글 36

  1. 클래스(1) + 변수잡기 연습 2022.05.23

    클래스? 클래스란 "객체를 정의해 놓은 것"으로, 해당 객체가 가져야 하는 기능과 속성을 정의한다. (=설계도) 다시 말해, 객체를 생성하는 데에 클래스가 사용되고 객체는 클래스에 정의된 대로 생성된다. 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다. 클래스를 사용하는 이유 학생에 대한 정보를 관리한다고 했을 때, 학번, 이름, 생년월일 등 다양한 데이터타입으로 이루어진 정보들이 있다고 하자. int studentNo, String studentName, String studentBirth 등 각각의 배열로 저장하기보다는, Student라는 하나의 클래스를 만들어 각 학생별로 고유한 메모리에 해당 학생의 정보를 저장하는 것이 좀 더 효율적이다. 새로운 학생을 추가할 때..


  2. 메서드(5) : call by *** 2022.05.20

    자료형별로 매개변수로 사용될 때 아래와 같은 특징을 갖는다. 호출 방법 Call by value (값 전송) - 기본형, String 인자로 받은 값 자체를 복사하여 호출한다. Read-only 인자가 사용되는 메서드 자체에서만 변경되며, 실제 값은 변경되지 않는다. 실제 값이 보존되기 때문에 안전하지만 메모리 사용량이 늘 수 있다. Call by reference (주소 전송) - 배열, 클래스 인자로 받은 값의 주소를 참조하여 해당 인자 자체를 호출한다. Read&Write 주소 안에서 변경되기 때문에 실제 값도 변경된다. 직접 참조를 하기 때문에 처리속도가 빠르지만 실제 값에 영향을 준다. 예제1 package day15; import java.util.Arrays; public class Meth..


  3. 메서드(4) : 실습, 지역변수 2022.05.19

    지역변수 : 블럭을 기준으로 해당 블럭 내(=메서드 안)에서만 사용될 수 있다. 스택메모리에 저장되며 메서드 호출시에 생성되어 메서드가 끝나면 사라진다. 전역변수 : 블럭 상관없이 사용될 수 있다. static void aaa() { int a=10;{ int b=20;{ int c=30; } //여기부터 c사용할 수 없음 } //여기부터 b 사용할 수 없음 } //여기부터 a 사용할 수 없음 아래 예시에서 변수 a는 increment() 라는 메서드 안에서만 사용되고 삭제되기 때문에, increment()를 여러 번 호출하더라도 a 에 a++가 반영되지 않는다. 하지만 b는 전역변수로 선언했기 때문에 b++가 반영된다. public class VariableEx { static void incremen..


  4. 메서드(3) : 실습 2022.05.18

    오늘은 실습 위주로 진행 실습1. 지니 홈페이지를 크롤링해서 순위권 제목을 가져오는 메서드 package methods2; import java.util.Scanner; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.*; import org.jsoup.select.Elements; public class Exercise1 { static int menu() { //가요POPOST트롯JAZZCLASSIC System.out.println("===== 메뉴 ====="); System.out.println("1. Music Top50"); System.out.println("2. 가요"); System.out.println..


  5. 메서드(2) : 실습 2022.05.17

    메서드는 클래스에 종속되어 클래스 안에서만 사용된다. 완전 객체지향 ⇢ 자바, C# 함수는 독립적으로 사용이 가능하다. ⇢ C언어, 코틀린, 파이썬 등 각 기능을 잘게 쪼개서 구현하고 끌어와서 사용하면 전체적인 코드를 간결하게 만들 수 있고 수정도 용이하다! 지역변수 말 그대로 특정 '지역'에서만 사용이 가능한 변수로, 블록({})이 끝나면 자동으로 사라진다.(=메모리에서 삭제) 메서드 만들기 실습 1. 임의의 정수가 저장된 배열을 정렬하는 문제 package methods; import java.util.Arrays; public class MethodEx3 { // 정렬하는 메서드 // Call By Value,Call By Reference => 매개변수 전송법 static int[] sort(in..


  6. 메서드(1) : 기본개념 2022.05.16

    여러 개의 데이터를 모아서 관리 ⇢ 배열 여러 개의 명령문을 모아서 관리 ⇢ 메서드 즉, 메서드는 특정 작업을 수행하는 명령문의 집합으로 어떤 기능을 구현하기 위한 수단이다. 기본적으로 수학에서 함수와 비슷하며 크게 입력, 처리, 출력 등의 기능을 할 수 있다. 일반적으로 매개변수를 받아 해당 변수로 일련의 처리를 거쳐 결과값을 나타낸다. 하지만 메서드의 종류에 따라 결과값을 반환하기도, 하지 않기도, 매개변수가 필요하기도 필요없기도 하다. 메서드를 왜 만드는가? 1. 필요시마다 호출해서 편리하게 사용이 가능하다. 2. 다른 클래스에서도 사용이 가능하다. 3. 필요할 때 수정, 삭제, 추가가 가능하다. → 재사용성, 가독성, 유지보수성 메서드의 종류 *void는 return을 생략한다! 결과값(리턴형) ..


  7. 문자열(String) 다루기, String 배열 응용 2022.05.13

    String변수 선언 방법 String 클래스는 char[] 에 필요한 메서드이다. int에는 Integer, double에는 Double등 각 데이터형마다 사용하기 쉽도록 클래스가 존재한다. ⇢ Wrapper String 변수명 = new String("내용", "UTF-8"); //원래 String은 클래스이므로 위처럼 new 연산자를 통해 객체를 생성해야 하지만.. String 변수명 = "내용"; //특별히 간략하게 생성하는 것도 허용한다. 문자열 제어 1. 문자의 개수 s.length():int s라는 String변수에 저장된 문자열의 길이를 반환한다. String s1 = "Hello Java"; System.out.println(s1.length()); // 10 2. 문자 자르기 s.sub..


  8. 배열의 복사, 활용 + BubbleSort 2022.05.12

    배열의 복사 배열은 고정된 메모리 크기를 가지기 때문에, 선언한 이후 데이터 저장공간을 변경할 수 없다. 그래서 배열의 크기를 변경하고 싶으면 더 큰 새 배열을 선언하여 데이터를 복사해야 한다. 예를 들어서.. 5개의 정수를 저장하는 배열 a가 있는데 10개를 저장하고 싶다면, 10개를 저장할 수 있는 배열 b를 하나 만들어서 a의 데이터를 복사해서 넣어야 한다. 불편! 복사는 직접 for문을 돌려서 해 주어도 되고, System.arraycopy라는 메서드를 사용해 주어도 된다. for문으로 복사하는 경우 배열의 각 요소 하나하나에 접근하여 복사하지만, 메서드를 사용하면 지정된 범위의 값을 한 번에 통째로 복사할 수 있다. (배열은 데이터가 연속적으로 저장되기 때문에!) 그래서.. arraycopy()..


  9. 문자열 함수, 배열 + SelectionSort 2022.05.11

    문자열 함수 문자열의 비교 문자열은 비교연산자로 비교할 수 없음! 꼭 equals등을 써주어야 한다. ***equals() : 대소문자를 구분하여 비교 equalsIgnoreCase() : 대소문자 구분 없이 비교 ***contains() : 특정 문자열을 포함하는지 검색 compare() : 문자열의 크기를 비교 ⇢ 문자열을 정렬할 때 많이 활용됨(참고링크) startsWith() : 특정 문자열로 시작하는 문자열을 검색 endsWith() : 특정 문자열로 끝나는 문자열을 검색 ⇢ Suggest(문자 자동완성) 기능을 만들 때 활용됨 Scanner scan = new Scanner(System.in); System.out.print("검색어 입력:"); String a = scan.next(); fo..


  10. 반복제어문 + 보충 2022.05.10

    while문은 지정된 횟수가 없는 경우에 주로 사용되고, 무한루프를 돌리는 데에 사용된다. 네트워크 서버나 데이터베이스, 파일 읽기 등에 활용할 수 있다. break : switch문 또는 반복문에서만 사용할 수 있고, 반복문을 중단하는 역할을 한다. ⇢ break 아래에 있는 코드는 실행되지 않는다. 무한 루프는 반드시 종료 시점을 정해주어야 한다. (System.exit(0)으로도 가능하다.) continue : 반복문에서만 사용이 되고, 특정 부분을 제외한다. package breakEx; public class breakEx1 { public static void main(String[] args) { for (int i = 1; i