Java Category158 [JAVA] 봉인된 클래스(sealed class) 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 기본적으로 final 클래스를 제외한 모든 클래스는 부모 클래스가 될 수 있다. 또한 부모가 자식을 선택하는 것이 아니라, 자식이 부모를 선택해서 상속을 받을 수 있다. 하지만 Java 15부터는 부모 클래스가 특정 자식 클래스에게만 상속을 허락할 수 있게 되었다. sealed 키워드를 사용하면 permits 키워드 뒤에 상속 가능한 자식 클래스를 지정해야 한다. public sealed class Person permits Employee, Manager{} 이런 식으로 Person 클래스를 봉인된 클래스로 지정하고 permits 옆에 상속을 허락할 자식 클래스를 지정하면 된다. 봉.. Java Category/Java 2023. 7. 14. [JAVA] main() 메소드의 String[] 매개변수 용도 우리가 자바로 코드를 작성할 때, main함수를 선언하려면 매개변수로 args라는 String 타입 매개변수가 들어간다. 이 args 매개변수는 윈도우의 명령 프롬프트나 맥OS의 터미널에서 프로그램을 실행할 때 args에 원하는 값을 넣을 수 있다. 아래의 코드는 args의 값을 모두 출력하는 코드이다. public class Main { public static void main(String[] args) { for(int i = 0; i < args.length; ++i) { System.out.println(args[i]); } } } 이렇게 작성하고 저장을 한뒤, 명령 프롬프트로 컴파일을 한다. 이후 java 명령어를 이용하여 실행을 하되, 매개변수로 원하는 값을 넣어준다. 아래 예제에서는 매개변.. Java Category/Java 2023. 7. 13. [JAVA] 오버플로우와 언더플로우 오버플로우(overflow)란 타입이 허용하는 최대값을 벗어나는 것을 말한다. 반대로 언더플로우(underflow)는 타입이 허용하는 최소값을 벗어나는 것을 말한다. 정수 타입 연산에서 오버플로 또는 언더플로가 발생하면 해당 정수 타입의 최소값 또는 최대값으로 되돌아간다. 예를 들어 byte타입일 경우 최대값 127에서 1을 더하면 128이 되어 오버플로가 발생하여 연산 결과는 최소값인 -128이 된다. 그리고 나서 다시 1을 더하면 -127이 된다. byte value = 127; ++value; System.out.println(value); //-128 마찬가지로 -128에서 1을 빼면 -129가 되어 언더플로가 발생하는데, 연산 결과는 최대값인 127이 된다. 그리고 다시 1을 빼면 128이 된다.. Java Category/Java 2023. 7. 12. [JAVA] 기본 연산을 할 때 주의사항 리터럴 기본적으로 컴파일러는 정수 리터럴을 int타입으로 간주한다는 점이다. 따라서 int타입의 허용범위를 초과할 경우 long 타입임을 컴파일러에게 알려줘야 한다. 컴파일러에게 long타입임을 알려주는 방법은 정수 리터럴 뒤에 소문자 l이나 대문자 L을 붙이면 된다. long a = 10000000000; //컴파일 에러 long b = 10000000000L; //정상 또한 실수 리터럴을 기본적으로 double 타입으로 해석하기 때문에, 실수 리터럴을 float타입으로 저장하고 싶다면 리터럴 뒤에 소문자 f나 대문자 F를 붙여 컴파일러가 float 타입임을 알 수 있도록 해야 함 float a = 3.14; //컴파일 에러 float b = 3.14F; // 정상 컴파일 단계 연산과 JVM 연산 자바.. Java Category/Java 2023. 7. 12. [JAVA] 자바 명명 규칙 2023.07.03 - [프로그래밍 언어] - 카멜 케이스, 파스칼 케이스, 스네이크 케이스 카멜 케이스, 파스칼 케이스, 스네이크 케이스 카멜 케이스(Camel Case) 복수의 단어로 구성된 복합어에서 각 단어를 표기할 때 첫 문자는 소문자로 시작하며 띄어쓰기 대신 대문자로 단어를 구분하는 방식 예를 들어, camelCase, sendMessage, phoneNumber rebugs.tistory.com 자바의 공통 명명 규칙 예약어는 사용 불가 특수문자는 '_'와 '$'만 허용 대소문자가 구분되어야 하고, 길이에 제한 없음 파스칼 표기법과 카멜 표기법을 사용 반의어는 반드시 대응하는 개념으로 사용 패키지 : Lower Case 클래스 : Pascal Case 메소드 : Camel Case 변수 : .. Java Category/Java 2023. 7. 3. JavaSE, JDK, JRE 용어정리 Java SE(Java Standard Edition) 자바의 표준안이라고 볼 수 있다. 자바라는 언어가 어떠한 문법적인 구성을 가졌는지와 같은 것들을 정의하고 있다. 이것은 구체적인 소프트웨어가 아니고 그 소프트웨어의 설계도라고 할 수 있다. 이 설계도에 따라서 Java가 만들어지게 된다. JavaSE 7은 버전 7에 대한 설계도이다. JDK(JAVA Development Kit) Java SE의 표준안에 따라서 만들어진 구체적인 소프트웨어 Java 프로그램을 실행하면 java 코드를 컴파일하는 컴파일러와 개발에 필요한 각종 도구, JRE가 포함되어 있다. 개발자를 위한 자바 버전 JRE(Java Runtime Environment) 실제로 동작하는데 필요한 JVM, 라이브러리, 각종 파일들이 포함되어.. Java Category/Java 2023. 6. 23. [JAVA] Date, Calendar, LocalDateTime 클래스 (날짜와 시간 클래스) 본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. 클래스 설명 Date 날짜 정보를 전달하기 위해 사용 Calendar 다양한 시간대별로 날짜와 시간을 얻을 때 사용 LocalDateTime 날짜와 시간을 조작할 때 사용 Date 클래스 Date 클래스는 날짜를 표현하는 클래스이다. Date는 객체 간에 날짜 정보를 주고받을 때 매개변수나 리턴 타입으로 주로 사용된다. Date 객체의 toString() 메소드는 영문으로 된 날짜를 리턴하기 때문에 원하는 날짜 형식의 문자열을 얻고 싶다면, java.text 패키지의 SimpleDateFromat 클래스와 함께 사용하는 것이 좋다. SimpleDateFromat 생성자의 매개값은 형.. Java Category/Java 2023. 1. 24. [JAVA] Math 클래스(올림, 내림, 반올림, 절댓값, 난수 등) 본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있다. Math 클래스가 제공하는 메소드는 모두 정적(static) 메소드이므로 바로 사용할 수 있다. Math.abs(a) 메소드 int abs(int a) double abs(double a) a의 절댓값을 리턴 int v1 = Math.abs(-5); //5 double v2 = Math.abs(-3.14); //3.14 Math.ceil(a) 메소드 double ceil(double a) a의 올림값을 리턴 double v3 = Math.ceil(5.3); //6.0 double v4 = Mat.. Java Category/Java 2023. 1. 23. [JAVA]Wrapper(포장) 클래스 본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. 자바는 기본 타입 의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장 객체라고 하는데, 포장 객체의 특징은 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없다는 점이다. 만약 내부의 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다. 박싱(Boxing)과 언박싱(Unboxing) 박싱 : 기본 타입의 값을 포장 객체로 만드는 과정 언박싱 : 포장 객체에서 기본 타입의 값을 얻어내는 과정 //Boxing Integer obj1 = new Integer(100); //생성자 이용 Integer obj2 = new Integer("200"); //생성자 이용 Integer .. Java Category/Java 2023. 1. 22. [JAVA] String 클래스 본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. String 생성자 소스상에서 문자열 리터럴은 String 객체로 자동 생성되지만, String 클래스의 다양한 생성자를 이용해서 직접 String 객체를 생성할 수도 있다. 어떤 생성자를 이용해서 String 객체를 생성할지는 제공되는 매개값의 타입에 달려있다. 아래는 사용 빈도수가 높은 생성자들이다. 파일의 내용을 읽거나, 네트워크를 통해 받은 데이터는 보통 byte [] 배열이므로 이것을 문자열로 변환하기 위해 사용된다. //배열 전체를 String 객체로 생성 String str = new String(byte[] bytes); //지정된 문자셋으로 디코딩 String str.. Java Category/Java 2023. 1. 21. [JAVA] System, Class 클래스 본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. System 클래스 자바 프로그램은 JVM위에서 실행된다. java.lang 패키지에 속하는 System 클래스의 정적 필드와 메소드를 이용하면 프로그램 종료, 키보드 입력, 콘솔(모니터) 출력, 현재 시간 읽기, 시스템 프로퍼티 읽기 등이 가능하다. System 클래스의 모든 필드와 메소드는 정적 필드와 정적 메소드로 구성되어 있다. 정적 멤버 용도 필드 out 콘솔에 문자 출력 err 콘솔에 에러 내용 출력(빨간 글자색) in 키보드 입력 메소드 exit(int status) 프로세스 종료(JVM 종료) currentTimeMillis() 현재 시간을 밀리초 단위의 long 값으.. Java Category/Java 2023. 1. 20. [JAVA] Object 클래스(euqals(), hashCode(), toString()) 본 게시글은 혼자 공부하는 자바 (저자 : 신용권)의 책과 유튜브 영상을 참고하였고, 개인적으로 정리하는 글임을 알립니다. 클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않더라도 암시적으로 java.lang.Object 클래스를 상속하게 된다. 따라서 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다. Object는 자바의 최상위 부모 클래스에 해당한다. Object 클래스는 여러 메소드가 정의되어 있는데, 그중에서 euqals(), hashCode(), toString() 메소드만 살펴보겠다. 객체 비교(equals()) 아래의 코드는 Object 클래스의 equals()메소드이다. public boolean equals(Object obj) {...} 매개타입이.. Java Category/Java 2023. 1. 17. 이전 1 ··· 8 9 10 11 12 13 14 다음