728x90

 

없는 값을 체크 할 때 위의 둘을 쓰게 되는데

뭐가 다를까?

 

1. isEmpty()

인스턴스는 생성 되어있는 상태

but 안에 값은 비어있는 상태(정확하게는 ""으로 값이 들어가있는 상태)

    -  null과 공백데이터는 엄연히 다르다

java 1.6버젼에서 추가됨

ex) 빈 항아리

 

2. == null

null은 인스턴스가 생성되지 않은 상태

즉, 아무런 주소값을 가지고 있지 않는 상태이며, 값 자체가 존재하지 않음

ex)항아리 자체가 없음

 

 

 

직접 테스트해보자

// isEmpty() vs == null 차이
String testEmpty = "";
String testNull = null;

// 1. 공백값 & isEmpty() 체크
if(testEmpty.isEmpty()){
    System.out.println("1 : "+testEmpty);
}  

// 2. null & isEmpty() 체크
if(testNull.isEmpty()){
    System.out.println("2 : "+testNull);
} 

// 3. 공백값 & null 체크
if(testEmpty == null){
    System.out.println("3 : " + testEmpty);
}  

// 4. null & null 체크
if(testNull == null){
    System.out.println("4 : "+ testNull);
}

 

 

2번인 13라인에 NullPointerException 발생

공백 값이지만 값을 체크하는 거기 때문에 애초에 값 자체가 들어오지 않았기 때문에 NullPointerException이 발생한 것

 

 

2번을 주석처리하고 다시 돌려보면

조건이 true인 것만 발동하니 1,4번만 출력되는 걸 알 수 있다

3번은 공백에 null을 체크한거라 애초에 인스턴스가 존재하기 때문에 null 자체가 아니니 false이다

 

 

※ 비슷한 주제

 == vs equals

 

728x90
반응형
728x90

 

1.breakpoint 설정

코드 라인수 옆에 좌클릭하면 빨간색 마름모가 생긴다

이 부분이 breakpoint

지정한 breakpoint마다 값이 어떻게 변하는지 또 내부 로직이 어떤 순서로 움직이는지 파악 가능해서 정말 정말 귀중한 기능이다. 앞으로 자주쓰자

 

 

2.디버깅(Debugging) 실행

아래 이미지에서 벌레모양 아이콘을 누르면 된다(단축키 shitf + F9)

 

3.디버깅(Debugging) 과정

첫번째로 실행되는 코드가 main메소드이므로, 메인메소드의 new Mountain()이라는 객체가 호출되는 것을 볼 수 있다.

다음 어디로 넘어갈지 보고 싶다면, F9이나 아래 이미지에 동그라미 친 아이콘을 누르면 된다

 

 

 


 

Evaluate Expression

동그라미 친 계산기 아이콘을 눌르면 아래아래 사진처럼 창이 뜨고 값을 입력할 수 있다

아니면 밑줄 친 Evaluate Expression 회색 글씨에 써도 된다

 

필요한 이유

하나씩 디버깅해서 돌려보고 따로 해 볼 필요없이 저 창을 열면 바로 원하는 값을 알아볼 수 있다!

아주 편리함

Evaluate Expression 창이 뜬 모습

 

728x90
반응형
728x90

 

배열의 변수명을 그냥 print찍으면 아래처럼 주소값이 나온다

배열 안에 값을 어떻게 하면 볼 수 있을까?

 

배열 값, 출력하는 방법

1)for문

int[] baseArr = {1,2,3,4,5};

for(int i=0; i<baseArr.length;i++) {
	System.out.print(baseArr[i] + " ");       // 1 2 3 4 5
}

 

2)Arrays.toString()

java.util.Arrays의 toString() 메소드 : Arrays.toString()

int[] baseArr = {1,2,3,4,5};
System.out.println(Arrays.toString(baseArr)); // [1, 2, 3, 4, 5]

 

 

두 방법의 출력 방식이 다르다

for문은 1 2 3 4 5 하나씩 값이 찍히고

Arrays.toString()은 하나의 배열로 배열 자체 전체 값이 찍힌다

필요한 데이터 형태에 따라 골라쓰면 될 듯 하다

728x90
반응형
728x90

 

공차란?

숫자들 사이에서 일정한 숫자의 차가 존재하는 것

ex) 1 3 5 7 9

각 숫자들 사이의 차가 2이며 이 2가 공차이다

 

 

	public void test(){
//		사용자로부터 시작 숫자와 공차를 입력 받아
//		일정한 값으로 숫자가 커지거나 작아지는 프로그램을 구현하세요.
//		단, 출력되는 숫자는 총 10개입니다 ( 공차 : 숫자들 사이에서 일정한 숫자의 차가 존재하는 것)
		
		System.out.print("시작 숫자 : ");
		int snum = sc.nextInt();
		System.out.print("공차 : ");
		int gnum = sc.nextInt();
		
		int j = snum;				// for문 안에서 돌면서 증가할 수의 변수 
		for(int i=0; i<10; i++) {	// 총 0~9 i가 10번 반복
			System.out.print(j+" ");
			j += gnum;
		}

 

728x90
반응형
728x90

 

※ Call by reference & value

 

1) call by reference

주소값이 기준. 이 때문에 객체를 불러오면 주소값을 불러온다      

ex) class, 객체object 
        
String a = "100";         
String b = a;       # 같은 주소값

(만약, new 써서 인스턴스를 만든다면 값은 값지만 주소는 다르게 된다)

 

2) call by value

기본적으로 대상의 주소값을 가지지 않고 '값(value)'을 할당받는 형태 

ex) int, float, double 같은 primitive type들

728x90
반응형

+ Recent posts