본문 바로가기

👩‍💻 BackEnd/☕️ 자바 [Java]33

[자바의 정석] 12-1. 지네릭스란? 12-1. Generics란? 컴파일시 타입을 체크해주는 기능 - JDK 1.5 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 TV 타입의 객체만 저장할 수 있는 ArrayList ArrayList tvList = new ArrayList public class GenericTest { public static void main(String[] args) { ArrayList list = new ArrayList(); // 타입 정보를 사전에 제공. list.add(10); list.add(20); list.add("30"); // String 을 추가 -> 컴파일 에러 Integer i = list.get(2); // 형변환 생략 가능. Integer 인 것을 아니까 형변환 해줄 필요가 없음... 2024. 1. 4.
[자바 스터디] day01. 지네릭스, 콜렉션 프레임워크 제네릭스 필요한 타입으로 형변환을 해줘야 한다. 넣을 때, 꺼낼 때 무슨 타입인지 모르게 되는 경우가 있음. 애초에 타입을 넣어주는 방법으로 해결 타입 변수 : E, T 를 주로 사용함. 컴파일 과정에서 지네릭스가 모두 지워짐. object 로 변환됨. (하위호환을 위해) 버전 낮은 환경에서 오류가 날 수 있음. 형변환 코드를 get메서드 안에 넣어줌 도입된 취지 : 타입 안정성을 위함임. 심화되서 들어가면 - 아무거나 타입을 지정 못하게 제한 시킬 수 있음. - 제한된 코드가 좋은 코드 public class Student { } * String 을 상속한 것만 들어올 수 있음. 지네릭스의 한계 : List 2023. 10. 10.
[JAVA] StringBuilder 문자 열이 1개 이상 있어서 이것들을 더해야한다고 하면? stringbuilder를 사용할 수 있어요! 많은 문자열을 연결하면 객체를 중간에 너무 많이 생성해야해서 비효율적인 코드를 짜게 된다. String 객체는 한번 생성하면 변경이 불가능하다. 따라서 하나의 문자열을 다른 문자열과 연결을 하면 새 문자열이 생성되고 이전 문자열은 가비지 컬렉터로 들어가게 된다고 한다. 따라서 stringBuilder를 사용해볼 수 있다. stringBuilder는 변경 가능한 문자열을 만들어주기 때문에 string을 여러개 합치는 작업을 할 때는 아주 효율적인 방법이다! public class Main { public static void main (String[] args){ StringBuilder sb = new.. 2023. 4. 29.
[JAVA] 자바 IO 자바 IO : 입출력을 위한 인터페이스와 클래스 - 자바 IO는 크게 byte타입 입출력과 문자단위(char) 입출력클래스로 나뉨. - byte단위 입출력 클래스는 InputStream과 OutputStream이라는 추상클래스를 상속받음. - 문자(char)단위 입출력 클래스는 Reader와 Writer라는 추상클래스를 상속받음. - 4가지 추상클래스 (InputStream,OutputStreamReader,Reader,Writer)를 받아들이는 생성자가 있다면, 다양한 입출력방식을 제공하는 클래스임. - 4가지 클래스를 받아들이는 생성자가 없으며, 어디로부터 입력받을 것인지, 어디에 쓸 것인지를 나타내는 클래스임. - 파일로 부터 입력받고 쓰기 위한 클래스 : FileInputStream, FileOu.. 2023. 4. 24.
[JAVA] 사용자 정의 Exception 사용자 정의 Exception - Exception 클래스를 상속받아 정의한 checked Exception : 이는 반드시 오류 처리를 해야만하는 Exception : 예외처리를 하지 않으면 컴파일 오류를 발생시킴. - RuntimeException 클래스를 상속받아 정의한 unCheckedException : 예외 처리하지 않아도 컴파일 시에는 오류를 발생시키지 않음. * 하지만, 모든 오류 처리를 해 놓는 것이 프로그램이 원활하게 돌아가게 하기 위해서는 매우 중요하다! RuntimeException을 상속받은 BizException객체 : unCheckedException public class BizException extends RuntimeException { public BizExceptio.. 2023. 4. 18.
[JAVA] 내부클래스 내부 클래스 : 클래스 안에 선언된 클래스 - 어느 위치에 선언하느냐에 따라서 4가지 형태가 있다. 내부 클래스 1 "중첩클래스" , "인스턴스클래스" : 클래스 안에 인스턴스 변수, 즉 필드를 선언하는 위치에 선언되는 경우. 보통 중첩클래스 혹은 인스턴스 클래스라고 한다. public class InnerExam1{ class Cal { //InnerExam 안에 내부클래스 Cal 생성 int value = 0; //1 public void plus (){ //2 value++; } } public static void main (String args[]){ //실행 InnerExam1 t = new InnerExam1(); //1. InnerExam1의 객체 생성 InnerExam1.Cal cal =.. 2023. 4. 17.