2013-03-18 1 views
0

입니다 초기화 :자바 내가 할 노력하고있어 순수 구조체 여기

public class myClass 
{ 
    int x; 
    int y; 
} 

을 나는 C++ 배웠습니다, 그래서 나는이 작업을 수행하려 모든 a [i]는 null입니다.

내가이 자바의 기본적인 교장에 대해 알고 있지만, 이렇게 저를 강제로 Alljoyn라는 제품이 있습니다, 참조 :

https://www.alljoyn.org/docs-and-downloads/documentation/guide-alljoyn-development-using-java-sdk-rev-j#unique_28

AllJoyn 허용 나던

생성자 또는 다른 방법 수업. 순수 구조체를 초기화하는 다른 방법이 있습니까?

+0

본 문서를 보셨나요? http://stackoverflow.com/questions/36701/struct-like-objects-in-java 및 http://stackoverflow.com/questions/5889034/how-to-initialize- 배열 오브젝트 오브 자바? –

+0

Java는 생성자를 전혀 정의하지 않는 모든 클래스에 기본 생성자를 기꺼이 추가합니다. 'new myClass()'를 호출하여'struct' 클래스의 인스턴스를 생성 할 수 있습니다. – Perception

답변

2

당신은 어떤 객체를 초기화하지 않는 시도 :

myClass [] a = new myClass[5]; 
for(int i =0; i < 4; i++){ 
    a[i] = new myClass(); 
    a[i].x = 0; 
} 
+1

고마워요 !!! – user2184037

+0

@ user2184037 허용 된 것으로 표시 할 수 있습니다. – n611x007

1

를 먼저 배열의 모든 myClass을 instialize해야합니다 자바에서

myClass[] a = new myClass[5]; 
for(int i =0; i < 4; i++) { 
    a[i] = new MyClass(); 
    a[i].x = 0; 
} 
5
  1. 이 구조체 같은 건 없다 . 네가 제시 한 것은 수업이다.
  2. a[i]null으로 초기화되었으므로 null입니다. 아직 개체를 만들지 않았습니다. 루프에 a[i] = new myClass()을 사용하십시오. myClass 클래스의 0 인수의 생성자은 Java에 의해 생성됩니다.
  3. Java 클래스의 이름은 규약에 따라 LikeThis으로 작성됩니다.
  4. a[i].x = 0은 쓸모가 없습니다. Read은 자바의 원시 데이터 유형에 관한 것입니다. int 필드는 컴파일러에서 기본적으로 0으로 초기화됩니다.
  5. i < 4을 수행하면 마지막 요소 (5 번째 요소)가 초기화되지 않습니다. 더 나은 방법은 항상 i < a.length입니다.
+0

+1 정말 완벽한 답변입니다. – igarcia

+0

나는이 "나쁜"C++ 습관을 부르지 않을 것입니다. 구조체 변수 할당은 나쁜 생각이 아니므로 유용 할 수 있습니다. – nmr

+0

코드를 수정했습니다. 개념적으로 "struct instances를 초기화"하려고 할 때 Java에서 OP가해야 할 일을 추가 할 수 있습니까? – n611x007

관련 문제