본문 바로가기

Java54

[Java] API_String관련 클래스 String 클래스 String str = "str1"; //문자열 객체 생성 str = "str2"; 최초에 생성된 문자열 객체는 생성된 후 다른 값인 "str2"로 수정이 불가능하다. 위와 같이 "str2"로 바꿔지는 것이 아니라, "str2"로 새로운 String(문자열)객체가 생성되어서 str참조변수에 새로운주소가 할당된다. 즉 최초에 생성한 "str1"과 "str2" 두 개의 객체가 각각 heap메모리에 생성되어 있다. ▶ 메소드 //문자열객체.메소드 System.out.println(str.concat("hello")); 1) charAt 문자 뽑아내기 2) concat 문자열 합치기 3) contains 문자열 포함 여부 4) equals : 문자열 일치여부 확인 5) length() : 문.. 2021. 5. 27.
[Java] 다형성 1. 다형성 - 부모클래스 타입의 참조변수로 자식클래스의 인스턴스(객체)를 참조할 수 있음 - 상위타입으로 여러 하위타입의 객체를 사용할 수 있음 - 상속을 이용하여 하나의 매개변수(부모클래스객체)로 여러 종류의 클래스 타입을 다룰 수 있음 Parent p1 = new Child1(); Parent p2 = new Child2(); //부모클래스인 Parent에서 say()메서드가 있는 경우만 가능 p1.say(); p2.say(); 자식1 자식2 부모클래스형 참조변수(p1, p2)로 실제 인스턴스 객체인 후손 클래스(Child1, Child2)의 메소드로 처리할 수 있다. 위와 반대로 자식클래스타입의 레퍼런스변수는 부모타입의 객체주소를 받을 수 없다. Child1 c1 = new Parent(); //.. 2021. 5. 25.
[Java] 예외처리 1. 에러 1) 컴파일에러 : 코드상의 문법 에러로 인해 프로그램 실행이 안됨 에러가 발생한 소스 구문을 수정하여 해결 2) 런타임에러 : 프로그램 실행시 발생하는 에러(입력값 틀렸거나, 배열의 인덱스 범위를 벗어났거나, 계산식의 오류 등) 주로 if문사용으로 에러 처리(nullpointerException -> 변수 != null) 프로그래머의 부주의로 인한 오류인 경우가 많기 때문에 예외 처리보다는 코드를 수정해야 함 3) 시스템에러 : 소스 구문으로 해결 불가(컴퓨터 오작동, 메모리 등) 소스수정으로 해결가능한 오류 -> exception 2. 예외클래스의 상속관계 0) 자바에서 사용가능한 예외클래스의 최상위 -> Exception클래스 - nullpointerexception , IOExcepti.. 2021. 5. 25.
[Java] 예외처리_try with resource try ~ with ~ resource 예외처리 기존에 스트림을 닫기위해 finally에 작성되었던 close( )처리 안해줘도 된다. 사용 후 꼭 닫아주어야 하는 스트림을 자동으로 close되게 하는 문장이다. 1. 작성법 try (반드시 close 처리 해야 하는 객체에 대한 생성 구문 ) { // 예외가 발생할 구문 반드시 예외를 처리해야 하는 구문 ) } catch( 처리할예외클래스명 레퍼런스) { // 발생 한 예외에 대한 처리 구문 작성 } ▶ 객체.close()를 해주지 않아도 된다. 2. try ~ with ~ resource 이용한 IOException , FileNotFoundException 예외처리 run실행파일에서 method4()를 호출하는 method1() 메소드를 실행시켰다... 2021. 5. 25.
[Java] 예외처리_BufferedReader사용 BufferedReader 클래스는 버퍼를 이용하는 대표적인 I/O(Input/Output) 클래스다. 입력된 데이터를 바로 전달하는 것이 아닌, 버퍼에 저장해두었다가 전달하는 방법이다. 하나하나씩 전달하는 것이 아니라 모아서 한번에 전달하기 때문에 속도가 빠르다. BufferedReader 예외처리 public void practice2() { BufferedReader br = null; br = new BufferedReader(new FileReader("")); br.close(); } 위와 같이 작성을 하면 2군데에서 빨간 줄이 그어지면서 예외처리를 하라는 메시지가 뜬다. 1) IOExeption -> br.close(); BufferedWriter 객체는 반드시 flush() 또는 close.. 2021. 5. 25.
[Java] 상속(Inheritance) 1. 상속이란? 부모 클래스(상위클래스)의 변수와 메소드를 자식 클래스(하위클래스)가 물려받아 사용할 수 있게 해준다. 여기서 부모클래스를 superclass, 자식클래스를 subclass라 부른다. 1) 표현 : 하위클래스명 + [ extends 상위클래스명 ] [접근제어자][기타제어자] class 클래스명 extends 상위 클래스명 //Desktop -> 자식 클래스, Product -> 부모 클래스 public class Desktop extends Product{ } 2) 장점 - 공통적인 코드를 부모클래스로 만들어두어 관리하는 것은 코드의 추가, 변경에 용이하다. - 코드의 중복을 제거해서 프로그램의 생산성과 유지보수에 크게 기여할 수 있다. 3) 특징 - 자바에서는 클래스간 단일상속만 가능하.. 2021. 5. 19.
[Java] 객체배열 & mvc 문제 정리1_(객체배열 복사_System.arraycopy( )) ① 문제 ▶기존의 객체배열을 복사 → 새로운 객체배열을 생성, 정렬(오름/내림차순) → 객체배열 주소값 반환 ② 못 풀었던 원인 ▶ 1) 객체배열을 복사하기 위해서, 새로운 객체배열의 크기를 지정해서 생성을 해줘야하는데 나중에 알았음 ▶ 2) 새로운 객체배열 생성에서 new를 통해 클래스기본생성자를 사용 못함 ▶ 3) 지역변수는 초기화를 꼭 해줘야 하는데 잊어버림 1. 객체배열 복사( System.arraycopy( ) ) 1) 클래스 총 4개 - MemberController (컨트롤러) : 기능 수행 - MemberMenu (뷰) : 사용자 화면출력 부분 - Member (모델 역할) : 데이터 저장 - Run (실행파일) 2) 객체배열 데이터 바꾸지 않고 정렬하기 기존의 회원 객체배열(mem)을 변.. 2021. 5. 18.
[Java] 문자열 compareTo()_문자열비교메소드 객체배열 mvc과제 중 compareTo()를 활용해서 코드를 썼다. Controller에 만들어야 할 메소드들이 많고, 반환형이 객체배열이고 하다보니 객체를 생성해서 대입하거나 또는 객체배열 복사 등등에서 헷갈리는 것들이 있어서 오류도 많이 나고 안되고 해서 힘들었지만 그래도 어제 다 마무리해서 속이 시원하다. mvc과제를 하면서 이것저것 오류들을 만들면서 배운것들을 기록해둬서 다음에는 같은 문제를 발생시키지 않아야지 1. 문자열에서 compareTo()메소드란? compareTo()는 문자열을 비교하여 (양수,0,음수)의 값을 반환해주는 메소드이다. int 에서 compareTo()는 +1,0,-1을 반환하지만, 문자열에서는 각 문자열마다 반환되는 숫자가 다르다. 즉, 유니코드문자표에서 얼마나 차이가.. 2021. 5. 17.
[Java] 객체 1. 객체지향 언어 - 컴퓨터 프로그램을 명령어의 목록으로 보는 시선에서 벗어나 현실 세계에서와 같이 여러 개의 독립된 단위, "객체"와 객체 간의 상호작용의 개념을 컴퓨터로 옮겨놓은 언어이다. - 객체들이 메시지(Message)를 통하여 통신함으로써 원하는 결과를 얻는다. 각 개체는 데이터와 데이터를 처리할 수 있는 메소드로 구성된다. 1-1. 객체지향 3대특성 1. 캡슐화 : 클래스 외부에서 데이터에 대한 직접적인 접근을 막고, 대신 데이터를 처리하는 함수들을 클래스 내부에 작성하는 방법 1) 멤버변수에 대한 접근 권한 - [ private ]원칙 (잔액, 예금주명) 2) 멤버 변수에 대한 연산처리를 목적으로 하는 함수들을 클래스 내부에 작성 3) 멤버함수는 클래스밖 접근할 수 있도록 접근권한자 [ .. 2021. 5. 14.
[Java] 2차원 배열 문제 1. 국어점수,영어점수 3번씩 입력받아 이차원배열의 각 행에 저장하고, 마지막 열에는 평균 저장 public void method6_1() { //Scanner이용 국어점수, 영어점수 3번 찍어서 평균을 구하시오. //double[][] arr = new double[2][4]; Scanner sc = new Scanner(System.in); double[][] arr = new double[2][4]; int arrIlght = 0; //각 행의 열의 길이 for(int i=0; i 2021. 5. 12.
[Java] 배열복사 1. 배열 복사 1-1. 얕은 복사 : 배열의 주소만을 복사 : 객체의 주소값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것 int[] origin = new int[4]; int[] copy = origin; //origin의 주소값이 copy로 대입 ▶ heap영역에 객체 하나만 저장됨 → 주소값 같음 ▶ origin, copy 모두 배열에 동일하게 접근 가능 int[] originArr = {1,2,3,4,5}; int[] copyArr = new int[10]; copyArr = originArr; //originArr의 주소값이 copyArr로 대입 //같은 객체를 참조하는 것으로 바뀌어 copyArr은 길이 5 System.out.println("===== 변경 전 ==.. 2021. 5. 11.
[Java] Math.random() random 범위가 헷갈려서 정리를 해둔다. 다음에는 틀리지 않아야지! 1. Math.random( ); → 0.0 ~ 0.9999... //int random = Math.random(); // double형이라서 안됨 // 0.0 0.0 ~ 0.99999... //int random = Math.random() * 10; //0.0 0.0 ~ 9.99999... //int random = Math.random() * 10 + 1; //1.0 1.0 ~ 10.9999... int random = (int)(Math.random()*10 +1); // 1 1 ~ 10 Random); 1) Math.random( ); → 0.0 2021. 5. 8.