새 프로젝트를 위해 Java로 전환해야 할 수도 있습니다. 나는 주로 C #을 연구하고 사용했기 때문에 Java에 대한 지식이 거의 없으며이 두 언어 / 플랫폼의 차이점으로 인해 많은 문제가 발생할 가능성이 있습니다.
내가 염두에 두어야 할 함정은 무엇입니까?
새 프로젝트를 위해 Java로 전환해야 할 수도 있습니다. 나는 주로 C #을 연구하고 사용했기 때문에 Java에 대한 지식이 거의 없으며이 두 언어 / 플랫폼의 차이점으로 인해 많은 문제가 발생할 가능성이 있습니다.
내가 염두에 두어야 할 함정은 무엇입니까?
답변:
C #에서 올 때 중요한 Java 문제는 다음과 같습니다.
switch
사례가 다음 단계로 자동으로 넘어갈 수 있으므로 break
필요할 때마다 항상 배치해야합니다 . 당신은 또한 할 수 없습니다 switch
에서와 String
자바있다.List<int>
, 단지를 List<Integer>
. 오토 박싱은 자세한 내용을 숨기지 만 NullPointerException
a를 개봉하면 얻을 수 있습니다 null
. 또한, ==
및 !=
두 박스형 프리미티브 유형 기준 비교를 수행한다.
==
그리고 !=
두 개의 참조 유형 (예 :) String
이 항상 참조 비교 이므로int
자동 상자를 넣을 수 있습니다 Integer
. 에서 int[]
까지 자동 박스가 없습니다 Integer[]
.byte
, short
, int
, long
만 서명됩니다. 의도하지 않은 부호 확장을 확인하십시오.sub*
원거리 쿼리 방법은 포괄적 인 하한 및 독점 상한을 사용합니다.
위에 나열된 일부 주제에서 :
new Integer(i) == i
Java에서 보장 됩니까? (예!)==
/ 포함 !=
)를 비교할 때 자동 언 박스가 발생합니까? (아니!)int num = Integer.getInteger("123")
던지 NullPointerException
나요? (!!!)일반적인 Java 문제 :
한 가지 명백한 함정은 문자열 string1 == string2
을 Java style 대신 C # 스타일 (Java는 참조 만 비교)과 비교하는 것입니다 string1.equals(string2)
.
다른 하나는 Java private
에서 C #의 기본 액세스 수정 자입니다 package
.
또한 ToString()
메소드는 Java의 현재 문화권에 의해 자동으로 현지화되지 않습니다.
나를 얻은 것은 Java 하위 문자열 인수는 beginIndex, endIndex이고 C # Subtring 인수는 startIndex, length입니다. 그것은 귀찮게하기에 충분한 차이와 스위치를 전환 할 때 범위를 벗어나는 인덱스를 얻을 수있는 좋은 기회입니다.
흠.
가장 큰 메타 함정은 Java 언어 및 라이브러리가 C #에서 비슷한 모양으로 동작 한다고 가정 하는 것입니다. 자습서를 수행하고 javadoc을 읽고 가정하지 마십시오 ...
또 다른 메타 함정은 가정하는 것입니다 당신이 자바에서 뭔가를 할 수 있다는 사실 똑같이 당신은 /는 C #에서 할 수 가능한 한 정중하게 / 쉽게. 사실이 아닙니다. Java는 훨씬 오래된 언어이며 실수가 발생했습니다 ...
그리고 마지막 메타 함정은 Java에서 누락되거나 다른 것들에 대해 불평하면 SO에 보편적으로 동정적 /지지적인 응답 을 줄 것이라고 생각 하는 것 입니다!
기본 액세스 수정 자의 차이점을주의하십시오. 또한 Java의 모든 비 정적 메소드는 가상입니다 (최종으로 표시하지 않는 한).
다소 오래되었지만, 이것이 훌륭한 참고 자료라는 것을 알았습니다.
Also note that all non-static methods in Java are virtual.
내가 C #도 좋아했으면 좋겠다
어떤 종류의 프로그램을 작업하고 있는지에 따라 다릅니다. Wikipedia에는이 기사가 있으며 상당히 광범위합니다. (또한 끝에있는 "외부 링크"섹션을 확인하십시오) http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp .
또한 C #에서 Java http://www.25hoursaday.com/CsharpVsJava.html 로 전환했을 때이 기사를 읽었 으며 매우 유용했습니다.
Java 언어에서 int, char와 같은 기본 유형의 객관적인 동등 항목은 "값 유형"이 아닙니다 (예 : Integer는 참조 유형). C #에서 System.Int32는 구조입니다.