Java 기초 해 혹...[Pnoter]
6930 단어 자바자바 변수자바 인 스 턴 스자바 의혹
public class MathTest{
public static void main(String[]args){
double a = 0.01, b = 0.09;
System.out.print(a+b);
}
}
인쇄 결 과 는 왜 0.099999999999999999 이지 0.1 이 아니 라 정밀도 손실 이 발생 합 니까?double 이 든 float 이 든 모두 이 문제 에 부 딪 힐 수 있 습 니 다.float 를 가지 고 말 합 니 다.float 의 0.1 2 진법 형식 은 001111110110110110110011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011기호 위치 에 따라 10 진법 으로 환산 하여 표현 하 는 값 이 정확 하 다.예:
public float getLeftMoney() throws Exception {
// TODO Auto-generated method stub
float m = new MoneyDaoImpl().CountAllMoney();
float c = new DetailsDaoImpl().countDetailsMoney();
flaot less = m-c;
System.out.println(m);
System.out.println(c);
System.out.println(less);
return less;
}
해결 방법:
public float getLeftMoney() throws Exception {
// TODO Auto-generated method stub
float m = new MoneyDaoImpl().CountAllMoney();
float c = new DetailsDaoImpl().countDetailsMoney();
BigDecimal b1 = new BigDecimal(Float.toString(m));
BigDecimal b2 = new BigDecimal(Float.toString(c));
System.out.println(m);
System.out.println(c);
Float less = b1.subtract(b2).floatValue();
System.out.println(less);
return less;
}
의문 2:Null 은 어떤 유형 에 속 합 니까?
해:
1.자바 에서 4 개 시스템 이 정의 하 는 상수:NaN 비 수치,lnf 무한대,-lnf 마이너스 무한대,null 공.
2 Null 은 불확실 한 대상 을 표시 하 는 데 사 용 됩 니 다.인용 형 변 수 를 부여 할 수 있 고 기본 유형 변 수 를 부여 할 수 없습니다.
의문 3:메모리 와 스 택 메모리 의 차이 점?
해:
1 heep(더미)는 동적 으로 신청 할 수 있 는 메모리 공간 으로 보통 모든 생 성 대상 이 여기에 놓 여 있 습 니 다.stack(스 택)은 선진 적 인 데이터 구조 로 방법(함수)의 매개 변수,부분 변 수 를 저장 하 는 데 사 용 됩 니 다.stack(스 택)의 공간 은 작 지만 속도 가 빠 르 고 저장 대상 의 인용 은 스 택 의 주소 색인 을 통 해 쌓 인 대상 을 찾 을 수 있 습 니 다.
2.스 택(자바 stacks)도 스 레 드 의 개인 적 인 것 으로 수명 주 기 는 스 레 드 와 같 습 니 다.가상 컴퓨터 스 택 은 자바 방법 으로 실 행 된 메모리 모델 을 설명 합 니 다.모든 방법 이 실 행 될 때 스 택 을 동시에 만들어 국부 변수 표,작업 스 택,동적 링크,방법 출구 등 정 보 를 저장 합 니 다.모든 방법 이 실 행 될 때 까지 호출 되 고 하나의 스 택 프레임 이 가상 스 택 에서 스 택 에 들 어가 서 스 택 에서 나 오 는 과정 에 대응 합 니 다.
3(자바 힙)은 자바 가상 컴퓨터 가 관리 하 는 메모리 중 가장 큰 덩어리 입 니 다.자바 더 미 는 모든 스 레 드 에 공 유 된 메모리 영역 으로 가상 컴퓨터 가 시 작 될 때 만 듭 니 다.이 메모리 영역의 유일한 목적 은 대상 실례 를 저장 하 는 것 입 니 다.거의 모든 대상 실례 가 여기에 메모 리 를 분배 합 니 다.
의문 4:실례 변수 가 무엇 입 니까?클래스 변수
해:
1 류 변 수 는 정적 변수 라 고도 합 니 다.즉,변수 앞 에 static 변 수 를 추가 한 것 입 니 다.클래스 변 수 는 대상 을 만 들 기 전에 메모리 에 존재 하고 클래스 의 생 성에 따라 생 성 됩 니 다.인 스 턴 스 변 수 는 대상 변수 라 고도 부 릅 니 다.즉,static 변 수 를 추가 하지 않 았 습 니 다.
2 가지 변 수 는 모든 대상 이 공유 하 는데 그 중의 한 대상 이 그 값 을 바 꾸 고 다른 대상 이 얻 은 것 은 변 경 된 결과 이다.한편,인 스 턴 스 변 수 는 대상 의 사유 에 속 하고 특정한 대상 이 그 값 을 바 꾸 며 다른 대상 에 게 영향 을 주지 않 습 니 다.
3.모든 인 스 턴 스 대상 은 하나의 변 수 를 공유 하고 메모리 에 한 개의 공간 만 이 변수 값 을 넣 습 니 다.따라서 한 대상 이 클래스 변 수 를 바 꾸 면 다른 대상 이 클래스 변 수 를 다시 가 져 오 는 것 은 변 경 된 것 이다.인 스 턴 스 대상 을 만 들 때 메모리 에 서 는 모든 인 스 턴 스 대상 의 모든 비 정적 구성원 변수 에 메모리 공간 을 열 어 줍 니 다.이 대상 의 모든 비 정적 구성원 변 수 를 저장 합 니 다.두 개의 인 스 턴 스 대상 이 같은 class 클래스 에 속 하 더 라 도 같은 이름 의 비 정적 구성원 변 수 는 메모리 에서 사용 하 는 공간 이 다 릅 니 다.
public class A{
static int a = 0; //
private int b = 0; //
}
Public class B{
public void main (String[] args){
A a1 = new A();
A a2 = new A();
a1.a = 3; // A.a = 3;
a1.b = 4 ;
System.out.println(a2.a); // 3
// , a1 a, a2 a
System.out.println(a2.b); // 0
// , a1 b , a2 b
}
}
의문 5:리 셋 과 리 셋 의 차이?
해:
1.오 버 로드 를 다시 불 러 오 는 것 은 같은 클래스 에서 여러 개의 이름 이 같은 방법 이 있 을 수 있 음 을 나타 내 지만 이러한 방법의 매개 변수 목록 은 각각 다르다(즉,매개 변수 개수 나 유형 이 다르다).
조건:A)방법 명 은 같 아야 합 니 다(대소 문자 가 일치 해 야 같 습 니 다)B)매개 변수 목록 이 다 르 고 매개 변수 목록 이 다 르 면 매개 변수 목록 의 개수 가 다 릅 니 다.매개 변수 목록 의 배열 순서 가 다 릅 니 다.매개 변수 목록 의 데이터 형식 이 다 릅 니 다.조건 A 와 B 를 동시에 만족 시 켜 야 방법의 무 거 운 짐 이다.
주의:
4.567917.리 셋 을 사용 할 때 서로 다른 매개 변수 스타일 만 사용 할 수 있 습 니 다.예 를 들 어 서로 다른 매개 변수 유형,서로 다른 매개 변수 개수,서로 다른 매개 변수 순서(물론 같은 방법 안의 몇 가지 매개 변수 유형 은 반드시 다 르 어야 한다.예 를 들 어 fun(int,float)일 수 있 지만 fun(int,int)일 수 없다
4.567917.접근 권한,반환 유형,던 진 이상 을 통 해 다시 불 러 올 수 없습니다
4.567917.방법의 이상 유형 과 수량 은 과부하 에 영향 을 주지 않 습 니 다
4.567917.상속 에 있어 서 어떤 방법 이 부모 클래스 에서 접근 권한 이 priavte 라면 하위 클래스 에서 다시 불 러 올 수 없습니다.정의 하면 새로운 방법 만 정 의 했 을 뿐 다시 불 러 오 는 효 과 를 얻 지 못 합 니 다
2.Override 는 하위 클래스 의 방법 이 부모 클래스 의 특정한 방법의 이름과 매개 변수 와 완전히 같 을 수 있 음 을 나타 낸다.하위 클래스 를 통 해 만 든 인 스 턴 스 대상 이 이 방법 을 호출 할 때 하위 클래스 의 정의 방법 을 호출 하 는 것 은 부모 클래스 에서 정의 한 똑 같은 방법 을 덮어 쓰 는 것 과 같다.이것 은 대상 을 대상 으로 프로 그래 밍 하 는 다 형 적 인 표현 이기 도 한다.자 류 가 부 류 를 덮 는 방법 은 부 류 보다 더 적은 이상 을 던 지 거나 부 류 가 던 지 는 이상 한 자 이상 을 던 질 수 밖 에 없다.자 류 는 부 류 의 일부 문 제 를 해결 할 수 있 기 때문에 부 류 보다 더 많은 문 제 를 해결 할 수 없다.하위 클래스 방법의 접근 권한 은 부모 클래스 보다 클 수 있 고 더 작 을 수 없습니다.부모 클래스 의 방법 이 private 유형 이 라면 하위 클래스 는 덮어 쓰 는 제한 이 없 으 며 하위 클래스 에 새로운 방법 이 추 가 된 것 과 같다.덮어 쓰기 에서 다음 과 같은 몇 가 지 를 주의해 야 한다.A)덮어 쓰 는 방법의 표 지 는 덮어 쓰 는 방법의 표지 와 완전히 일치 해 야 덮어 쓰 는 효 과 를 얻 을 수 있다.B)덮어 쓰 는 방법의 반환 값 은 덮어 쓰 는 방법의 반환 과 일치 해 야 합 니 다.C)덮어 쓰 는 방법 이 던 지 는 이상 은 덮어 쓰 는 방법 이 던 지 는 이상 과 일치 하거나 하위 클래스 와 일치 해 야 합 니 다.D)덮어 쓰 는 방법 은 private 일 수 없습니다.그렇지 않 으 면 하위 클래스 에서 하나의 방법 만 정 의 했 을 뿐 덮어 쓰 지 않 았 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.