일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- spring #스프링 #전자정부표준프레임워크 #표준프레임워크 #자바스프링 #스프링다운로드 #자바스크립트 #웹프로그래밍설정 #웹프로그래밍셋팅
- 기말고사 #방통대기말고사 #방통대후기 #방통대기말고사후기 #방통대2023년1학기 #방통대1학기 #방통대C프로그래밍 #방통대장학금 #방통대영어회화1
- ORACLE #TIGER #SCOTT #SCOTT계정 #오라클학습계정 #프로그래밍 #SQL #SQLORACLE #오라클 #오라클연습 #오라클연습계정 #오라클연습문제 #WHERE절 #오라클조건절
- sql #오라클 #불리언형 #boolean #webjava #java #jsp #Mybatis #마이바티스 #마이바티스환경설정 #모델1 #모델1프로그래밍 #Batis #마이바티스다운로드 #web설정 #웹프로그래밍 #게시판 #게시판제작 #게시판만
- 정처기 #정처기필기 #정보처리기사 #정보처리기사필기 #정보처리기사2023 #정처기2023 #정처기3회 #정보처리기사3회 #정보처리기사실기 #정처기실기 정처기합격
- 자바 #웹자바 #webJava #java #코딩 #코딩초보 #ojdbc #서블릿 #자바서블릿 #javaServelet #servelet #httpServlet
- 갤러리제작 #갤러리만들기 #jsp갤러리 #jsp게시판 #jsp프로그래밍 #jsp웹프로그래밍 #jsp웹 #jsp모델1방식 #사진업로드 #jsp사진업로드 #jdbc6 #jdbc드라이버다운 #jdbc드라이버무료다운
- java #array #자바 #배열 #프로그래밍 #코딩 #자바프로그래밍
- Init-param #context-param #
- cos.jar #cos드라이버 #파일업로드드라이버 #루피는귀여워 #마이바티스 #MyBatis #마이바티스sql #마이바티스DB #마이바티스jsp #마이바티스이클립스 #mapper #config.xml #마이바티스다운로드
- QUERY #DML #SQL문 #내림차순정렬 #오름차순정렬
- 어노테이션 #@WebServlet #WebServlet #
- web.xml #배포지시자 #서블릿테스트
- 방통대 #방송통신대학교 #컴퓨터과학 #컴퓨터과학과 #컴과 #방통대컴퓨터과학과 #방통대컴과 #방통대파이썬 #방통대C #방통대자바
- 자바웹프로그래밍
- 8 실무에서 가장 많이 사용하는 SQL
- union #sql99 #외부조인 #오라클조인 #sql조인 #자체조인 #비등가조인 #비등가조인 #테이블복사 #오라클테이블 #null인데이터출력
- 마이바티스환경설정
- jsp #게시판만들기 #자바로게시판만들기 #웹테스트 #JNDI #myora #Oracle #오라클 #DAO #DTO #아파치톰캣 #웹자바셋팅 #모델1 #모델1방식 #모델1방식웹프로그래밍 #웹프로그래밍
- Doit #Doit오라클 #Doit시리즈 #연습문제
- 정처기필기합격 #정처기합격후기
- 정처기3회 #정보처리기사2023
- Controller
- tern다운로드 #메이븐다운로드 #maven #스프링라이브러리 #자바라이브러리 #톰캣설정 #WAS #웹어플리케이션서버
- html #자바와서블릿 #자바와웹연결 #웹연결
- View #
- Model #
- 서블릿선언 #서블릿선언방법 #
- 자바 #웹자바 #JAVA #WEB #WEBJAVA #WEBPROGRAMMING #웹 #웹프로그래밍 #코딩 #CODING #모델1 #모델2 #모델1방식 #모델2방식
- 서블릿 #자바모델1 #자바모델2 #mvc #mvc패턴
- Today
- Total
장미의 개발일기
5장 참조자료형 : 배열 본문
배열 : 같은 자료형의 데이터를 묶어서 저장하는 참조 자료형으로, 집합체다.
(참조형 자료형은 항상 new키워드를 통해 메모리를 할당받아서 생성을 먼저 시켜야 사용이 가능하다)
(즉, 배열은 항상 크기가 미리 정해져 있어야한다. 한번 크기가 정해지면 절대 변경할 수 없다)
*배열 자체는 객체다.
차이점 * int [ ] -> 일반 자료형 배열( 원소의 값을 저장) *String[ ]-> 참조자료형 배열( 주소값을 저장) |
*String 클래스의 2가지 객체 생성법*
-1. 암묵적 생성:(implicit)
String a = "Rabbit";
String b = "Jack";
와 같이 직접 문자열을 생성했을 때, 힙영역에 객체가 생성된다.
-2. 명시적 생성:(explicit)
String a = new String();
a = "Rabbit";
new 키워드를 사용하여 직접 String 클래스의 객체를 생성하는 순간, 힙영역에
객체가 생성되고, 객체 a에는 값이 아닌 '주소'가 저장된다. (new = 힙 메모리에 객체를 넣어라)
이 말은 즉
String a ="Rabbit"; String b = new String(); b = "Rabbit"; |
얼핏보면 String a,b는 같아보이지만
sysout으로 불리언식으로 비교하여 출력해보면, false가 뜬다.
즉 2개는 각 다른 객체로 봐야한다. 아래처럼 테스트해볼 수 있다.
package ex1;
//참조자료형 배열은 결국은 생성된 객체의 주소를 배열의 인덱스에
// 하나씩 값을 저장하는 것이 아니라. 즉 주소값을 인덱스에 저장한다.
public class Ex4_Array {
public static void main(String[] args) {
String[] str = new String[3];
str[0] = "Test";
str[1] = new String("Test");
str[2] = "Test";
// 위의 코드에서 힙영역에 생성되는 객체는 몇개 ???**** 3개
// 1. 6번째 줄에서 배열 객체 1개 생성, 2. 7번째 줄에서 "Test"라는 객체 형성
// 3. new 키워드로 1개 다른 객체 형성 4.
// 9번째 줄은 7번줄하고 같은 주소의 객체이므로 같다.
// 주소값 비교로 확인 가능
System.out.println(str[0] == str[1]); //false
System.out.println(str[0] == str[2]); //true
}
}
다시 배열로 돌아와서
배열의 선언과 초기화, 배열을 출력하는 메소드를 for문을 이용하여 만들어 출력해보기
메소드는 for문, for-each문 각 사용한 메소드 2개를 따로 만들었고, 하나는 주석처리 되어있다.
배열 4개에 선언과, 원소값 직접 대입 등 다양하게 적용해보았다.
*배열을 출력할 때 for문 사용하기:
-1. for(int i = 0; i < array.length; i++){
System.out.println([ i ] +[ j ]); }( 출력부분 자세한 코드는 생략)
-2. for-each문
for(int e : array){
System.out.println(e);}
=> 원리는 array 속의 int e를 찾는다' 이다. 즉 e는 원소값 그 자체로 for each문을
이렇게 사용하면, 원소값을 차례대로 간단한 식으로 출력이 가능하다.
package my;
public class Ex3_printArray_Repeat {
public static void main(String[] args) {
intType();
}
private static void intType() {
// 선언과 초기화를 한번에
int[] array1 = { 1, 2, 3 };
array1[0]=22;
// printArray(array1);
printArray2(array1);
// 배열출력 메소드 소환 : 배열1
System.out.println("--------------");
int[] array2 = new int[4]; // 0
array2[0]= 10;
array2[1]=11;
array2[2]=12;
array2[3]=13;
printArray2(array2);
// printArray(array2);
// 배열출력 메소드 소환 : 배열2
System.out.println("--------------");
int[] array3;
array3 = new int[5];
array3[0]=1;
// printArray(array3);
printArray2(array3);
// 배열출력 메소드 소환 : 배열3
System.out.println("--------------");
int[] array4 = { 1, 2, 3, 4, 5, 6, 7 };
printArray2(array4);
// printArray(array4);
// 배열출력 메소드 소환 : 배열4
}
private static void printArray2(int[] array) {
//배열을 간단한 방식으로 출력하기
System.out.println(array.length);
for(int e : array) {
System.out.println(e);
//e는 값 그 자체이므로 a[0] 이런방식이 아님
// a[0] = 배열 a의 0번째 값 , e = 배열 array이의 값 (차례로 출력)
}
}
/*
* // 배열을 출력해주는 메소드 array는 매개변수 private static void printArray(int[] array) {
* System.out.println(array.length); //길이
*
* for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } //
* print
*/
}
다른 소스 추가+
package book;
// 1차원 배열의 원소 값 대입의 3가지 방법
public class Page158 {
public static void main(String[] args) {
//배열의 값 대입 방법1
int[] array1 = new int[3];
array1[0] = 3;
array1[1] = 4;
array1[2] = 5;
for(int i=0; i < array1.length; i++) {
System.out.print(array1[i]+"\t");
}
int[] array2;
array2 = new int[3];
array2[0] = 3;
array2[1] = 4;
array2[2] = 5;
for(int e: array2) {
System.out.print(e+"\t");
}
//배열의 값 대입 방법 2
int[] array3 = new int[] {3,4,5};
for(int e: array3) {
System.out.print(e+"\t");
}
int[] array4;
array4 =new int[] {3,4,5};
for(int i = 0; i < array4.length; i++) {
System.out.print(array4[i]+"\t");
}
//배열의 값 대입 방법3
int[] array5 = {3,4,5};
for(int e: array5) {
System.out.print(e+"\t");
}
// int[] array6;
// array6 = {3,4,5};
// 이런 방식은 불가가능 생성이 안된
//배열은 선언문에서만 초기화가 가능
}
}
교재 다른 예제 연습.
Arrays.toString (자료형에 각 맞춰서 사용. String형은 object형 쓰면됌)
: 배열의 모든 원소를 한번에 출력해주는 함수. 아래 소스의 맨 마지막에 써봤음
package book;
import java.util.Arrays;
// 스택 메모리의 초깃값과 참조 자료형의 강제 초깃값
public class Page161 {
public static void main(String[] args) {
// 스택 메모리 값 (강제 초기화되지 않음)
int value3=0;
System.out.println(value3);
int[] value4 = null;
System.out.println(value4);
System.out.println();
// 힙 메모리의 초깃값( 강제 초기화)
// @기본 자료형 배열
boolean[] array1 = new boolean[3];
for(int i=0; i < array1.length; i++) {
System.out.println(array1[i]+" ");
}
System.out.println();
int[] array2 = new int[3];
for(int i=0; i < 3; i++) {
System.out.println(array2[i]+" ");
}
System.out.println();
double[] array3 = new double[3];
for(double i: array3) {
System.out.println(i);
}
// @참조 자료형 배열
String[] array4 = new String[3];
for(String e : array4) {
System.out.println(e);
}
System.out.println();
System.out.println();
//배열을 한 번에 출력
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array2));
System.out.println(Arrays.toString(array3));
System.out.println(Arrays.toString(array4));
}
}
'개발일기 > Java' 카테고리의 다른 글
Do it! 자바 완전 정복 (김동형) - 배열 연습문제 5장 참조자료형 (0) | 2023.04.19 |
---|---|
String 클래스의 특징과 자주 쓰는 메소드 & StringTokenizer, split 차이 (0) | 2023.04.18 |
static 메소드 및 필드멤버 : 회원가입 프로그램 만들기 (0) | 2023.04.18 |
2차원 배열 : For문 메세지출력창 만들기 (0) | 2023.04.18 |
배열을 만들고 출력하는 프로그램 만들기 (0) | 2023.04.17 |