메모리 사용 영역
package chapter05;
public class Test139 {
public static void main(String[] args) {
//기본타입 (빨간색, 소문자로시작)
//기본타입: 변수에 실제값을 저장한다
int age= 25;
double price=100.5;
//참조타입(검정색, 대문자로시작)
//참조타입: 객체의 번지를 참조하는 타입으로 배열,열거,클래스,인터페이스 타입을 말한다
// 참조타입으로 선언된 변수는 메모리의 번지(주소)를 값으로 갖는다
String name1="신용권";
String name2="신용권";
Integer k=100;
if(name1 == name2) {
System.out.println("같다"); //같은값이면 같은 번지를 참조하게끔 설계되어있음
// but 객체를 생성하는건 다른 것. new라고 해서 객체 생성하면
// 값이 똑같아도 주소가 다르게 생성된다
//따라서 객체를 생성해서 값을 비교하고 싶을때 equals를 쓴다
}else {
System.out.println("다르다");
}
if(name1.equals(name2)) { //equals를 쓰면 값을 비교하게 된다
System.out.println("같다");
}else {
System.out.println("다르다");
}
String name3= new String("신용권");
String name4= new String("신용권");
if(name3 == name4) {
System.out.println("같다");
}else {
System.out.println("다르다"); // new로 객체생성시 주소비교하면 다르다라고 나옴
}
if(name3.equals(name4)) {
System.out.println("같다"); //값을 비교하면 같다고 나온다
}else {
System.out.println("다르다");
}
}
}
문자열 리터럴(변수에다 값을 대입한 것) 이 같으면 같은 주소( 같은 heap 영역) 를 사용한다 .
new를 사용하면 새로운 heap영역을 생성한다. (다른 주소를 사용한다)
배열 타입
package chapter05;
public class Test149 {
public static void main(String[] args) {
/*배열 사용하기
배열: 같은 타입의 데이터를 연속된 공간에 나열시킨 구조
배열은 동일한 형태의 변수의 수를 줄여준다.(메모리절약)
따라서 배열은 타입이 같아야한다
*/
int score1=83;
int score2=84;
int score3=85;
int score4=86;
int score5=87;
int[] scoreA = {83,84,85,86,87};
int scoreB[] = {83,84,85,86,87};
// []의 위치는 변수의 앞, 뒤 모두 가능하다
}
}
int[] scoreA = {83,84,85,86,87};
// 83을 93으로 변경하기
scoreA[2]=93;
System.out.println("배열의 갯수:"+scoreA.length+"\n");
for(int i=0; i<scoreA.length; i++) {
System.out.print(scoreA[i]+" ");
}
//배열 0번 주소의 값을 출력하시오
System.out.println("scoreA[0]:"+scoreA[0]);
//배열 값을 거꾸로 출력하기
System.out.println("배열의 갯수:"+scoreA.length+"\n");
for(int i=scoreA.length-1; i>=0; i--) {
System.out.print(scoreA[i]+" ");
}
//문자열 배열
String[] scoreA = {"83","84","우리","하니"};
scoreA[1]="하늘";
//실수형 배열
double[] scoreB = {100, 200.5}; //정수도 들어감
float[] scoreC= {100,200.5f}; //float은 실수를 나타낼때 f를 써준다
new 연산자로 배열 생성
package chapter05;
public class Test155 {
public static void main(String[] args) {
int scores[] =new int[5];
System.out.println("scores[3]: "+scores[3]);
//scores[3]: 0
scores[1]= 50;
System.out.println();
for(int i =0; i< scores.length; i++) {
System.out.print(" scores[" +i+"]=" +scores[i]);
}
//scores[0]=0 scores[1]=50 scores[2]=0 scores[3]=0 scores[4]=0
String scores2[]= new String[5];
scores2[1]="우리나라";
scores2[0]="";
System.out.println();
for(int i =0; i< scores2.length; i++) {
System.out.print(" scores[" +i+"]=" +scores2[i]);
}
//scores[0]= scores[1]=우리나라 scores[2]=null scores[3]=null scores[4]=null
}
}
char 는 \u0000 , long은 0L , float는 0.0F
package chapter05;
public class Test159 {
public static void main(String[] args) {
System.out.println("args[0]"+args[0]);
System.out.println("args[1]"+args[1]);
System.out.println("args[2]"+args[2]);
//배열의 인덱스 값 범위가 벗어났다는 오류가 발생
}
}
Arguments에서 값을 입력해주면
값이 뜨게 된다
ㄴ문자열배열이지만 정수나, 실수를 넣어도 자동 형변환 되어서 들어간다
더하게 되면 문자열 더하기가 된다
숫자연산이 되도록 형변환 시키기
" " 문자열이랑 숫자랑 더하면 문자열로 형변환이 되기 때문에
괄호로 전체 한번 더 감싸줘야 한다
다차원 배열
2X3 행렬의 구조
열 0 | 열 1 | 열 2 | |
행 0 | (0,0) | (0,1) | (0,2) |
행 1 | (1,0) | (1,1) | (1,2) |
배열속의 배열 (164페이지)
향상된 for 문
'JAVA' 카테고리의 다른 글
[36일차] 시험대비 (0) | 2022.07.11 |
---|---|
[35일차] JSP 사용하기 (0) | 2022.07.08 |
[34일차] 서비스 사용하기 (0) | 2022.07.07 |
[34일차] 자바 패키지 하나 더 만들기 (0) | 2022.07.07 |
[33일차] (0) | 2022.07.06 |