변수의 종류
1.원시형변수->호출하면 값이 나온다
2.char, byte, short, int, long, float, double-정수형, 실수형
3.boolean-제어문 중요함!-흐름을 다르게 할때-분기문(if, switch)
4.참조형 변수->호출하면 주소번지가 나온다.
원시형 변수를 사용할때는 대입 연산자를 사용한다.
변수를 사용하면 일괄처리를 할 수 있다.--한번에 처리
package dev_java.ch01;
public class Variable2 { // 클래스 안에는 변수와 메소드를 선언할 수 있다.
public static void main(String[] args) {
System.out.println("소나타");
System.out.println("소나타");
System.out.println("소나타");
System.out.println("======================");
String carName = "프라이드";
System.out.println(carName);
System.out.println(carName);
System.out.println(carName);
변수의 장애는???
원시형 변수는 한번에 하나만 담을 수 있다.
package dev_java.ch01;
public class Variable3 {
public static void main(String[] args) {
int i = 1;
System.out.println(i);
i=3;
System.out.println(i);
i=5;
System.out.println(i);
}
}
overwrite-->변수는 하나에 하나만 담을 수 있다. 그럼 같은 변수에 다른값넣으면 덮어쓰기된다. 그게 오버 롸이트
변수는 명사형과 동사형
동사형은 필드
변수를 담을 수 있는것은 클래스
변수 여러개 담을 수 있다.
변수를 맞는 타입으로 선언해야한다.
같은 이름의 변수는 중복선언 안된다
타입을 빼면 사용이다. 선언이 아니다
선언할때는 타입을 붙인다.
인스턴스화 객체화
DeptVO deptVO = new DeptVO();//인스턴스화
DeptVO deptVO;//선언
deptVO= new DeptVO();//인스턴스화 객체생성
deptVO =new DeptVO();//변수 선언이 아니라 객체생성
deptVO.deptno=30;
인스턴스화는 Heap에 상주한다.
DeptVO deptVO
같은 이름을 두번 선언하는것은 안된다.
왜? 변수 이름이 deptVO로 같으므로
그래서 선언 안하고 객체화만
타입은 같지만 다른 객체이다. 전의 객체와의 연결을 끊고 다른 주소랑 연결한것이다.
전역변수
-클래스급
지역변수
-인스턴스변수.변수 로 호출할수없다
정적변수
접근제한자
생략가능
private
protected
패키지가 다르다고 하더라도 둘의 관계가 상속 관계이면 접근 가능
friendly상태 -아무것도 없는거
패키지 다르면 접근 불가능
public
문제 이해 해보기
클래스 안의 메인 메소드는 엔트리 포인트=엔트리 쓰레드이다. 가장 먼저 호출 된다. 순서1번 main thread
순서=알고리즘=위치
Thread
하나의 자원을 여러 사람이 사용할수있다.
한사람 한사람이 다 쓰레드이다.
사람이 많다. 멀티 쓰레드이다. 경합이 벌어진다.
18번에서 호출하고있다.
17번에서 만든 객체를 effectParam 메소드 안에서 쓰고싶다.
어떻게? 주소번지를 넘긴다.
파라미터
변수 이름 앞에 static(고정)이 있으면 인스턴스화 없이도 호출이 가능함.
이 말은 같은 객체를 복제하지 않는다는 의미
변수앞에 static이 올수도 안올수도 있다.
메소드 앞에도 올 수 있다.
그렇다면 인스턴스화 하는것과 뭐가 다르지?
myCar.carColor 전역 변수만
인스턴수변수.변수 로 호출할수있다.
insert here
자동차 색상을 출력할 수 있나요?
클래스들은 초기값이 null이다.
오브젝트는 티폴트가 null이다.
실체가 없다. 주소번지가 가리키는 객체가 사라졌다.
그러나 타입은 남았다.
=null 이후에
myCar.carColor=보라색
이걸 넣을수 있나요?
안된다. 런타임 에러(Exception)가 난다. 주소번지가 없어서 저장을 할수없다.
선언하는것 말고 초기화까지 해줘야 null exception이 일어나지 않는다.
주소값을 같게 만들기
package dev_java.ch01;
public class PrideMain {
public static void main(String[] args) {
Pride myCar= new Pride();
Pride herCar= new Pride();
myCar= herCar;
System.out.println(myCar==herCar);
}
}
myCar 주소 @abc1234
herCar 주소 @abs1235
myCar=herCar ---->서로 다른 주소번지가 같은 객체를 참조하게 되었다.
숙제!
package dev_java.ch01;
public class String1 {
public static void main(String[] args) {
String s1 = "안녕";
String s2 = "안녕";
String s3 = new String("안녕");
String s4 = new String("안녕");
/*s1와 s2의 주소번지는 같나? 참OR거짓
그리고 이유에 대해 설명하시오
s3,s4의 주소번지가 같니?
만일 s3이 가리키는 문자열이 s4와 같은지를 비교하려면 어떡하지? 구글링해봐
*
*/
}
}
String은 클래스 타입 중 유일하게 원시형 타입처럼 값을 바로 출력해줌
String은 클래스 급이다
'학원수업 > 12월' 카테고리의 다른 글
12/05 국비학원 자바수업 6회차(생성자, 제어문, 연습문제) (0) | 2022.12.05 |
---|---|
12/02 국비교육 자바수업 5회차(캡슐화, parseInt, Wrapper class) (0) | 2022.12.02 |
11/30 국비학원 자바수업 3회차(Visual Studio Code 설정) (0) | 2022.11.30 |
11/29 국비학원 자바 수업 2회차 (문제 다시풀기!) (1) | 2022.11.29 |
11/28일 국비학원 1회차 수업 (0) | 2022.11.28 |
댓글