JavaRush /Java Blog /Random-KO /커피 브레이크 #174. Java.String의 객체를 Java의 Int로 생성하는 다양한 방법 - 문...

커피 브레이크 #174. Java.String의 객체를 Java의 Int로 생성하는 다양한 방법 - 문자열을 정수로 변환하는 방법

Random-KO 그룹에 게시되었습니다

Java에서 객체를 생성하는 다양한 방법

출처: Medium 이 튜토리얼에서는 Java에서 객체를 생성하는 다양한 방법을 배웁니다. 커피 브레이크 #174.  Java.String에서 Java의 Int로 객체를 생성하는 다양한 방법 - 문자열을 정수로 변환하는 방법 - 1Java 객체는 Java 클래스의 인스턴스입니다. 각 객체에는 상태, 동작 및 식별자가 있습니다. 필드(변수)는 객체의 상태를 저장하고, 메소드(함수)는 객체의 동작을 표시합니다. 클래스는 런타임에 객체 인스턴스가 생성되는 "청사진" 역할을 합니다.

Java에서 객체 생성

객체 생성은 클래스 필드(변수라고도 함)에 데이터를 저장하기 위해 메모리를 할당하는 프로세스입니다. 이 프로세스를 종종 클래스 인스턴스 생성이라고 합니다. Java에서 객체를 생성하는 방법에는 네 가지가 있습니다.
  1. 새로운 키워드를 사용하여
  2. 메소드 newInstance()
  3. 클론() 메서드
  4. 객체 역직렬화
이제 언급된 각 방법을 자세히 살펴보겠습니다.

키워드 신규

이는 Java에서 객체를 생성하는 가장 일반적인 방법입니다. new 키워드는 지정된 유형의 새 인스턴스에 메모리를 할당하여 클래스의 인스턴스를 만듭니다. new 다음에는 객체를 생성하고 생성된 객체의 필드를 초기화하는 특수 메서드인 생성자가 옵니다. 객체는 new 연산자로 생성되고 생성자로 초기화됩니다. 다음은 new 연산자를 사용하여 Java 객체를 생성하는 예입니다 .
Date today = new Date();
이 표현식은 새로운 Date 객체를 생성합니다 ( Date는 java.util 패키지 내부의 클래스입니다 ). 코드의 이 단일 절은 선언, 인스턴스화 및 초기화의 세 가지 작업을 수행합니다. Date today는 오늘이 Date 유형의 객체를 참조할 것임을 컴파일러에 알리는 변수 선언입니다 . new 연산자는 Date 클래스를 인스턴스화하고( 메모리에 새 Date 객체 생성) Date() 는 객체를 초기화합니다. 아래 예를 고려하십시오.
public class Person {
    private String name;
    private int uid;

    public Person() {
        this.name = "Michael Cole";
        this.uid = 101;
    }

    public Person(String name, int uid) {
        super();
        this.name = name;
        this.uid = uid;
    }

    // getters and setters...

    public static void main(String[] args) {

        Person p1 = new Person();
        Person p2 = new Person("John Bodgan", 102);
        System.out.println("Name: " + p1.getName() + " UID: " + p1.getUid());
        System.out.println("Name: " + p2.getName() + " UID: " + p2.getUid());
    }
}
이 코드에서 new 키워드를 사용하여 Person 객체를 생성합니다 .
  • p1 객체는 변수 이름 값이 "Michael Cole"로 설정되고 UID가 101로 설정된 매개변수화되지 않은 생성자를 호출합니다.
  • p2 객체는 매개변수화된 생성자를 호출하여 "John Bodgan" 및 102 값을 생성자에 전달합니다. 그런 다음 이 값에 변수 이름과 UID가 할당됩니다.

newInstance() 메서드 사용

Java의 newInstance() 메소드는 주어진 클래스의 객체 인스턴스를 동적으로 생성하는 데 사용됩니다. newInstance() 메서드 에는 두 가지 표준 용도가 있습니다 .
  • java.lang.Class API 의 newInstance() 메소드
  • java.lang.reflect.Constructor API 의 newInstance() 메소드

클래스 API에서 newInstance() 사용

런타임에 클래스의 객체를 생성하려면 해당 클래스의 객체를 반환하는 Class API에서 newInstance() 메서드를 호출해야 합니다. java.lang.Class 클래스 의 newInstance() 메소드는 매개변수나 인수를 사용하지 않으며 해당 클래스에 대해 인수가 없는 생성자라고 부를 수 있습니다. java.lang.Class 클래스 의 newInstance() 메소드를 사용하여 Person 클래스 의 객체를 생성하는 몇 가지 예제 코드를 살펴보겠습니다 .
public class Person {
    private String name;
    private int uid;

    public Person() {
        this.name = "Carl Max";
        this.uid = 101;
    }

   // getters and setters...
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class c = Class.forName("com.medium.option2.Person");
        @SuppressWarnings("deprecation")
        Person p = (Person) c.newInstance();
        System.out.println("Name: " + p.getName());
        System.out.println("UID: " + p.getUid());
    }
}
Class.forName (클래스의 정규화된 이름)은 Person 이라는 클래스를 로드한 다음 newInstance()는 Person 유형의 새 개체를 만들고 이에 대한 참조를 반환합니다. 이제 p 에 대한 Person 참조를 사용하여 getters()setter() 를 호출하여 특정 작업을 수행 할 수 있습니다 . 참고:
  • Class.forName()newIstance() 모두 trycatch 블록이나 throws 키워드를 사용하여 처리해야 하는 예외를 발생시킵니다 .
  • Class API의 newInstance() 메서드는 Java 9부터 더 이상 사용되지 않습니다.

생성자 API에서 newInstance() 사용

Constructor 클래스 ( java.lang.reflect.Constructor )의 newInstance() 메서드는 매개변수화된 생성자에 대한 매개변수를 허용한다는 점을 제외하면 Class 클래스 의 newInstance() 메서드 와 유사합니다 . java.lang.reflect.Constructor 클래스 의 newInstance() 메소드를 사용하여 Person 클래스 의 객체를 생성함으로써 이 접근 방식을 보여드리겠습니다 .
public class PersonTwo {
    private String name;
    private int uid;

    public PersonTwo() {
        this.name = "Maya Kumari";
        this.uid = 101;
    }

    public PersonTwo(String name) {
        this.name = name;
        this.uid = 102;
    }

    public PersonTwo(String name, Integer uid) {
        this.name = name;
        this.uid = uid;
    }

    // getters and setters...
    public static void main(String[] args) {
        try {
            Class.forName("com.medium.option2.PersonTwo");

            Constructor c1 = PersonTwo.class.getConstructor();
            PersonTwo p1 = (PersonTwo) c1.newInstance();
            System.out.println("Name: " + p1.getName());
            System.out.println("UID: " + p1.getUid());

            Constructor c2 = PersonTwo.class.getConstructor(String.class);
            PersonTwo p2 = (PersonTwo) c2.newInstance("James Gunn");
            System.out.println("Name: " + p2.getName());
            System.out.println("UID: " + p2.getUid());

            Constructor c3 = PersonTwo.class.getConstructor(String.class, Integer.class);
            PersonTwo p3 = (PersonTwo) c3.newInstance("Mark Brown", 103);
            System.out.println("Name: " + p3.getName());
            System.out.println("UID: " + p3.getUid());

        } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}
위 코드에서는 먼저 Class.forName() 메서드를 사용하여 클래스를 로드해야 합니다 . 다음으로, 전달된 매개변수의 데이터 유형을 일치시키기 위해 getConstructor() 메소드를 호출합니다 . 마지막으로 newInstance() 메서드에서 필수 매개변수( 인수가 없으면 null ) 를 전달합니다 . newInstance() 메소드는 적절한 생성자를 호출하여 PersonTwo 클래스 의 새 객체를 반환합니다 .

clone() 메소드 사용

clone() 메소드는 Object 클래스 의 일부 이며 기존 객체의 복사본을 만드는 데 사용됩니다. 클래스 생성자를 호출하지 않고 클래스의 객체를 생성합니다. 메소드를 복제하려면 해당 클래스가 마커 인터페이스인 Cloneable 인터페이스를 구현해야 합니다. 이제 Person 클래스 의 객체를 생성한 다음 이를 Person 클래스의 다른 객체에 복제하겠습니다 .
public class Person implements Cloneable {
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    private String name;
    private int uid;

    public Person(String name, int uid) {
        super();
        this.name = name;
        this.uid = uid;
    }

    // getters and setters...

    public static void main(String[] args) {
        Person p1 = new Person("Ryan", 101);
        try {
            Person p2 = (Person) p1.clone();
            System.out.println("Name: " + p2.getName());
            System.out.println("UID: " + p2.getUid());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }

    }
}
메모. 복제된 객체는 p2 참조 를 통해 동일한 원본 객체를 참조합니다 . 그러나 복제된 개체에는 별도의 메모리 할당이 적용됩니다. 이는 p2 가 참조하는 Person 객체에 대한 변경 사항이 p1 이 참조하는 원래 Person 객체를 변경하지 않음을 의미합니다 . 이는 clone() 메서드가 객체의 얕은 복사본을 생성하기 때문입니다.

객체 역직렬화 사용

객체 역직렬화는 일련의 바이트 스트림에서 객체를 추출하는 프로세스입니다. 직렬화는 그 반대입니다. 주요 목적은 데이터베이스/네트워크에서 저장된 개체를 다시 메모리로 검색하는 것입니다. 객체를 직렬화하거나 역직렬화하려면 직렬화 가능 인터페이스 (토큰 인터페이스) 를 구현해야 합니다 . 아래 예를 고려하십시오.
public class PersonDriver {

    public static void main(String[] args) {
        Person p1 = new Person("Max Payne", 101);
        FileOutputStream fileOutputStream;
        try {
            fileOutputStream = new FileOutputStream("link to text file");
            ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);
            outputStream.writeObject(p1);
            outputStream.flush();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        FileInputStream fileInputStream;
        try {
            fileInputStream = new FileInputStream("link to text file");
            ObjectInputStream inputStream = new ObjectInputStream(fileInputStream);
            Person p2 = (Person) inputStream.readObject();
            System.out.println("Name: " + p2.getName());
            System.out.println("UID: " + p2.getUid());
            inputStream.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
여기서는 먼저 p1 참조를 통해 Person 객체를 텍스트 파일로 직렬화합니다 . writeObject() 메서드는 객체의 바이트 스트림을 텍스트 파일에 씁니다. 그런 다음 객체 역직렬화를 사용하여 Person 객체를 다시 p2 로 추출합니다 . 마찬가지로 readObject() 메서드는 객체의 입력 스트림에서 객체를 읽습니다. 마지막으로 Person 개체의 데이터를 콘솔에 인쇄합니다 .

결론

이 기사에서는 Java에서 객체를 생성하는 다양한 방법에 대해 배웠습니다. 먼저 가장 일반적인 방법인 new 키워드를 사용하여 객체를 생성하는 방법을 살펴보았습니다 . 그런 다음 클래스생성자 클래스 에서 객체를 생성하는 또 다른 인기 있는 방법인 newInstance() 메서드를 배웠습니다 . 그런 다음 새 객체를 생성하는 대신 기존 객체의 얕은 복사본을 생성하는 clone() 메서드를 사용했습니다 . 마지막으로 객체 직렬화 및 역직렬화 개념을 사용하여 Java에서 객체를 생성했습니다.

Java에서 문자열을 Int로 - 문자열을 정수로 변환하는 방법

출처: FreeCodeCamp 오늘은 Integer 클래스의 두 가지 메서드 ( parseInt()valueOf()) 를 사용하여 Java에서 문자열을 정수로 변환하는 방법을 배웁니다 . 이는 문자열 변수의 값을 사용하여 수학 연산을 수행할 때 도움이 됩니다. 커피 브레이크 #174.  Java.String의 객체를 Java의 Int로 생성하는 다양한 방법 - 문자열을 정수로 변환하는 방법 - 2

Integer.parseInt를 사용하여 Java에서 문자열을 정수로 변환하는 방법

이 옵션은 parseInt() 메소드가 정수로 변환하기 위해 문자열을 매개변수로 사용한다고 가정합니다.
Integer.parseInt(string_varaible)
사용 예를 살펴보기 전에 변환 없이 문자열 값과 정수를 추가하면 어떤 일이 발생하는지 살펴보겠습니다.
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        System.out.println(age + 20);
        // 1020
    }
}
이 코드에서는 문자열 값 "10"을 사용하여 age 변수를 만들었습니다 . 정수 값에 숫자 20을 추가하면 정답인 30 대신 1020이 잘못 수신되었습니다. 이는parseInt () 메서드를 사용하여 수정할 수 있습니다 .
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        int age_to_int = Integer.parseInt(age);

        System.out.println(age_to_int + 20);
        // 30
    }
}
여기서는 age 변수를 정수로 변환하기 위해 이를 parsInt() 메서드 ( Integer.parseInt(age) )에 매개 변수로 전달하고 age_to_int 라는 변수에 저장했습니다 . 이제 다른 정수에 추가하면 age_to_int + 20 이라는 올바른 추가 결과를 얻게 됩니다 .

Integer.valueOf를 사용하여 Java에서 문자열을 정수로 변환하는 방법

valueOf() 메서드는 parsInt() 메서드 와 동일하게 작동합니다 . 정수로 변환해야 하는 문자열을 매개변수로 사용합니다. 예는 다음과 같습니다.
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        int age_to_int = Integer.valueOf(age);

        System.out.println(age_to_int + 20);
        // 30
    }
}
위 코드에서 이전 섹션과 동일한 내용을 볼 수 있습니다.
  • valueOf() : Integer.valueOf(age) 에 문자열을 매개변수로 전달했습니다 . age_to_int 라는 변수에 저장되었습니다 .
  • 그런 다음 생성된 변수 age_to_int + 20 에 10을 추가했습니다 . 결과는 1020이 아닌 30이었습니다.

결론

이 기사에서는 Java에서 문자열을 정수로 변환하는 방법에 대해 설명했습니다. 문자열을 정수로 변환하기 위해 Integer 클래스의 두 가지 메소드 ( parseInt()valueOf()) 가 사용되었습니다 . 즐거운 코딩하세요!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION