Java는 Python의 [a, b, c] = (1, 2, 3)
이나 PHP의 list($a, $b, $c) = array(1, 2, 3)
과 비슷한 것을 가지고 있습니까?Java에서 병렬 할당?
답변
아니요. x = y = 0
을 사용하여 여러 변수를 설정할 수 있지만 Python과 같은 병렬 할당은 할 수 없습니다.
시도 int[] list = {1,2,3}
. 이것은 각각 1, 2 및 3 값을 갖는 정수 배열을 생성합니다.
당신은'{... '앞에'new int []'가 필요합니다. – corsiKa
배열 초기화 프로그램 앞에 실제로'new int []'가 필요하지 않습니다. 적어도 배열 초기화 프로그램이 과제의 오른쪽 편. –
파이썬의 다중 할당이처럼, 그것은 또한 병렬 할당에 사용될 수 있다는 점에서 상당히 강력하다 :
자바 병렬 과제에 대한 해당이 없습니다(x,y) = (y,x) # Swap x and y
;
int a = 1, b = 2, c = 3;
또는 배열에서 매핑, 당신은이 작업을 수행 할 수 있습니다 : 당신은이 같은 한 줄의 표현에서 여러 변수를 지정할 수 있습니다
t = x; x = y; y = t;
: 당신은 임시 변수를 사용해야 할 것입니다 :
이 너무 자세한 것 같으면int a = array[0], b = array[1], c = array[2];
일시적으로 할당 배열에 하나의 문자 참조를 만들 수 있습니다
int[] t = array;
int a = t[0], b = t[1], c = t[2];
질문의 근원을 알기 위해서는 코드가 여러 가지 관련 변수 (아마도 다른 유형의 변수)를 목록이나 배열로 함께 지나가는 상황에서 다중 할당이 Python에서 유용하게 사용되는 경향이 있습니다. Java (또는 C/C++)에서이를 수행하는 더 관용적 인 방법은이 변수를 함께 묶는 작은 데이터 클래스 (또는 구조체)를 작성한 다음 생산자와 소비자 모두에게 사용하도록하는 것입니다. 당신은 다음과 같이 이름 대신 인덱스 필드를 참조 할 수 있습니다 :
class Foo {
public int a;
public int b;
public int c;
}
/* ... */
Foo produceFoo() {
Foo f = new Foo();
f.a = 1;
f.b = 2;
f.c = 3;
return f;
}
/* ... */
Foo f = produceFoo();
System.out.println(f.a + "," + f.b + "," + f.c);
를 이것은 또한 개인 데이터를 푸 행동과 실제 수업을하고 캡슐화 된 것이다 문에 나중에 리팩토링을 열고, 단지 데이터 수업.
병렬 할당은 Java에 추가하기 어려울 수는 없지만 실제로 OptimJ 언어 확장으로 구현했습니다. 그러나 그것은 단지 존재하지 않습니다.
데릭 (Derrick)이 언급했듯이, 원자 적 스왑 명세서에는 병렬 할당이 필요합니다.
병렬 할당이라고하는 것은 더 일반적인 개념 인 "destructuring assignment"의 인스턴스입니다. 구조가 있으며 구조의 일부를 변수와 일치시킵니다.
(x, (y, z)) = ((1, 2, 3), (4, (5, 6)))
// x = (1, 2, 3)
// y = 4
// z = (5, 6)
것은 당신이 다음 destructuring 할당이 하위 목록 또는 하위 집합을 (x는 요소를 의미 추출 할 수있는 목록 또는 세트가 가정 :
는 다음 파멸의 임무는 모든 수준에서 데이터를 추출 할 수 있습니다, 튜플을 내장 한 가정 , X *)는 하위 목록을 의미합니다 : 분명히[ x, y*, z ] = [ 1, 2, 3, 4 ]
// x = 1
// y = [ 2, 3 ]
// z = 4
목록 및 세트는 튜플로 포함 할 수있다. 이 간단한 체계는 매우 강력한 프로그래밍 추상화를 제공하며 데이터를 추출해야하는 즉시 유용합니다.
- 1. 스칼라 : 튜플의 병렬 할당
- 2. C++에서 병렬 할당
- 3. 병렬 할당 연산자는 루비
- 4. Java에서 메모리 할당
- 5. 초급 : Java에서 배열에 값 할당
- 6. Java에서 다차원 데이터에 대한 병렬 좌표 구현
- 7. Java에서 병렬 배열을 사용하는 이유는 무엇입니까?
- 8. Java에서 병렬 프로그래밍을 수행하는 방법은 무엇입니까?
- 9. Java에서 예외가 발생할 경우 최종 변수에 할당
- 10. Java의 병렬 컴퓨팅
- 11. LinqToSql - 병렬 - DataContext 및 병렬
- 12. PHP의 병렬 배열 지정
- 13. 작업 병렬 라이브러리 및 다중 병렬 작업
- 14. 스칼라 병렬 컬렉션에서 어떤 작업을 병렬 처리합니까?
- 15. OpenMP - 병렬 코드 내에서 병렬 코드 실행
- 16. Java에서 많은 배열을 할당 할 때 메모리 단편화를 피하십시오.
- 17. 병렬 부풀기
- 18. 병렬 처리
- 19. 병렬 EntityFramework
- 20. 병렬 디버거
- 21. 자동 병렬
- 22. 할당 된 주소에서 구조를 인스턴스화하십시오 (할당 할당)
- 23. 리소스 할당/할당 해제
- 24. 클러스터 시스템에서 Java 병렬 처리 (클러스터 컴퓨팅)
- 25. 내 haskell 병렬 코드의 모든 병렬 처리를 악용하는 방법은 무엇입니까?
- 26. Windows에서 만들기 (병렬 작업)
- 27. 파이썬의 병렬 SSH
- 28. 병렬 파이썬 : 콜백이란 무엇입니까?
- 29. 자바 병렬 작업 반복기?
- 30. 병렬 및 동시 프로그래밍
이것은'x = 0; y = 0; JIT 편집 중에 말입니다. –
예, 생성 된 코드는 완전히 동일합니다. –
오른쪽 하단 평가에 따라 다음과 같아야합니다.'y = 0; x = y = new Object();'실제로 두 개의 객체를 생성 할 것인가? – loungerdork