자바에서는 String
을 직접 사용하여 문자열 변수 이름을 선언하고 값을 지정할 수 있습니다. String이 non-primitive 데이터 유형 임에도 불구하고 new 키워드를 사용하여 문자열을 배열로 정의 할 필요는 없습니다.Java에서 왜 String은 비 기본 데이터 형식입니까?
누군가 String이 비 기본 데이터 유형 인 이유를 설명해주십시오.
자바에서는 String
을 직접 사용하여 문자열 변수 이름을 선언하고 값을 지정할 수 있습니다. String이 non-primitive 데이터 유형 임에도 불구하고 new 키워드를 사용하여 문자열을 배열로 정의 할 필요는 없습니다.Java에서 왜 String은 비 기본 데이터 형식입니까?
누군가 String이 비 기본 데이터 유형 인 이유를 설명해주십시오.
예 문자열은 Java의 개체입니다. 이 모순되지 않는 프리미티브에 유사한을 사용할 수 있다는 사실
참조하십시오 - Strings are objects in Java, so why don't we use 'new' to create them?
문자열이 자바 객체가 아닌 기본 데이터 형식입니다. String은 java 프로젝트에서 기본적으로 가져온 java.lang 패키지의 일부입니다.
char 배열을 정의 할 필요가 없습니다. 단지 String을 사용하십시오.
가능한 중복 : Java String import
문자열, 목적은 당신이 개체 자체를 변경할 수는 없지만 객체에 대한 참조를 변경할 수 있음을 의미 불변이다. 문자열
평소와 같이String myStr = "test";
이, "테스트"라는 문자열을 만들고 작동하고 그것을 참조 "myStr"를 할당하는 방법
이입니다.
여기에서 유의해야 할 점은 String 개체는 변경 가능하지 않지만 참조 변수는 변경되지 않습니다.
String
Javadoc은 String
이 Object
의 서브 클래스임을 명확하게 나타냅니다. 또한 String.equals(Object)
우선 Object.equals(Object)
을 재정의합니다.
문자열 리터럴은 큰 따옴표로 묶어야 0 개 이상의 문자로 구성되도록 지정합니다.
또한, JLS-4.3.3. The Class String는 String 클래스의
인스턴스 유니 코드 코드 포인트의 시퀀스를 나타냅니다 추가합니다.
String 개체는 상수 (변경되지 않음) 값을가집니다.
문자열 리터럴 (§3.10.5)은 String 클래스의 인스턴스에 대한 참조입니다.
문자열 연결 연산자 + (§15.18.1)는 결과가 컴파일시 상수식이 아닌 경우 (§15.28) 암시 적으로 새 String 개체를 만듭니다.
또한 어레이가 Object
(s)이고 An Array of Characters is Not a String 인 것도 지적 할 가치가 있습니다. 마지막으로 String
이 Object
이 아닌 경우 null
이 될 수 없습니다.
클래스는 메서드 만 가질 수 있기 때문에 문자열은 프리미티브가 아닙니다. 원시물은 할 수 없습니다. 그리고 String은 substring, indexof, equals, touppercase처럼 처리되는 동안 많은 함수가 호출되어야합니다. 그것은 수업을 만들지 않고는 불가능했을 것입니다.
또한 클래스를 사용하면 풀링을 허용하여 보안 및 효율성을 향상시키기 위해 문자열을 변경 불가능하게 만들 수 있습니다.
고마워. 내가 필요한 대답을 얻었다. –
'원시적 인'과 '문자 적'을 혼동스럽게 생각합니다. 프리미티브는 객체가 아닌 데이터 유형입니다. 리터럴은 데이터 유형의 비트 패턴을 설명하는 편리한 방법입니다. 예를 들어 -1은 int에 대한 비트 패턴 0xFFFFFFFF를 설명하고 'a'는 16 비트 (0x0061)의 소문자 A에 대한 유니 코드 코드 포인트를 설명합니다. 리터럴은 원시 데이터 유형을 설명하는 데에만 국한되지 않습니다. 배열을 설명 할 수 있습니다. 예 : int[] a = {1, 2, 3};
.
문자열 리터럴은 일부 메소드가 첨부 된 불변의 문자 배열을 설명하는 방법 일뿐입니다. 리터럴은 그렇지 않으면 매우 복잡 할 수있는 것을 설명하기위한 문법적 설탕입니다. 예를 들어 :
String s = "ab";
보다 훨씬 간단합니다 : 자바에서
char[] c = new char[2];
c[0] = 'a';
c[1] = 'b';
String s = new String(c);
, 문자열의 위치를 저장하는 객체이다 문자열의 위치의 실제 "값".
다른 배열을 만드는 것처럼 문자열 배열을 만들 때 new
키워드를 사용해야합니다.
String[] text = new String[4]
이의 텍스트가에서의 위치로 컴퓨터를 인도 네 개의 문자열 참조을 만들 수 있습니다. 또한 모든 문자열의 기본값은 null
입니다. 메모리 주소에 저장할 값을 지정하기 전까지 저장할 문자열이 없습니다.
문자열은 유형에 관계 없으므로 비 프리미티브입니다. 예를 들면 : - "S"는 샤아와 "D"저장 그것의 데이터 형의 종류를 포함 할 수 있도록 가치와 "C"는, 모든 종류의 주조 또는 아무것도없이 혼합을 포함 int로 포함
String s= "abs";
String d= "123";
String c= "12as";
. 이 대답이 충분하기를 바랍니다. 더 이상의 정리가 있으면 언제든지 물어보십시오.
@gamitg 다시 포맷 해 주셔서 감사합니다. –
문자열은 문자열 풀에서 값을 지정할 때마다 개체를 만듭니다. 비슷한 오브젝트를 생성 할 때마다 그 오브젝트를 찾아 참조 할 것이며, 그 값이 없으면 새로운 오브젝트를 다시 작성합니다. String Pool에 대해 더 공부하면 차이점을 자동으로 알게 될 것입니다.
솔직히이 사실이 너무 분명하지 않습니다. 청원서는 당신이 필요로하는 것을 명확히합니다 – Coffee
왜 수입없이 String을 사용할 수 있는지 묻고 있습니까? 가능한 복제본 : http://stackoverflow.com/questions/7953987/java-string-import – rousseauo
@rousseauo 해당 단어의 아무 곳이나 가져올 단어가 표시되지 않습니다. – csmckelvey