기타 제어문
break : 즉시 해당 중괄호 영역을 탈출한다.
- if 문 안에서 사용 시 if문을 탈출하지 않고 if 문을 감싸고 있는 중괄호 영역을 탈출
continue : 즉시 다음 반복으로 넘어감.
- 아래에 작성된 코드를 실행하고 싶지 않을때 사용
반복문
for문
while문
while(조건식){
}
for 문과 while 문의 목적
-for: 몇 번 반복할 지 알 때
-while : 몇 번 반복할 지 모를 때
do~while문
do{
실행할 문장;
}while(조건식);
배열 :
저장공간의 나열
1. 변수를 여러 개 선언하면 이름도 여러 개 생긴다. 이 때 각 저장공간을 관리하기가 블편하다.
따라서 n칸 배열을 한 번만 선언하면 저장공간도 n 개 생기고, 이름도 한 개 이기 때문에 관리하
기 편하다.
2. 규칙성이 없는 값에 규칙성을 부여하기 위해서
배열의 선언
1. 자료형[] 배열명 = {값1, 값2, 값3 ,...};
// 어떤 값을 넣을 지 알 때
2. 자료형[] 배열명 = new 자료형[칸수];
//heap 메모리 주소만 있음, 시작주소 들어감 어떤값 넣을지 모르 나, 몇 칸 만들지 알때 사용
3. 자료형[] 배열명 = null;
//주솟값을 모를때 쓰는 값이 null , 어떤값 넣을지 모르고 , 몇칸 만들지도 모를때 초기화만
+ 배열명 = new 자료형[칸수];
*heap 메모리는 os 가 관리 동적으로 프로그램 '실행중' 공간이 할당됨
<->정적할당 : 프로그램 실행 전 변수선언을 통한 메모리할당
* new : heap 메모리에 할당, 초기값을 자동으로 초기화
* null : 주소의 초깃값, 어떤 주소를 넣을지 모를때 작성하는 값 ,null도 값이다, 덮어써줘야함
* 정적 배열과 동적 배열 : java 의 배열은 다 heap 메모리에 저장된다. so 메모리 상으로는 동적배열밖에 없다.
배열의 구조
int[] arData = {3,5,1,2,8}
5칸 필요, arData 에는 3이담긴 주솟값이 담긴다. heap 메모리에 저장됨. 다음주소에 접긴하기 위해서는
+n 을 한다. arData+2 = 1이 담긴 주솟값 *(arData+2) 는 1이라는 값이 된다. java는 포인터가
없음으로 arData[2] 로 사용한다 == *(arData+2) 이를 인덱스라 부른다.
length
배열을 선언하면 length 라는 상수가 선언됨, 해당 배열의 길이가 담긴다.
배열명.length
배열의 사용
int[] arData = new int[5]; //저장공간
arData[0] = 10; //저장공간
arData[0] + 9; //값
System.out.println(arData); //주솟값
arData[2] = arData[0] + arData[1]; //저장공간, 값,값
System.out.println(arData[5]); // 오류 ,인덱스는 배열길이-1 까지
package arrayTest;
import java.util.Iterator;
public class ArTest1 {
public static void main(String[] args) {
int arrData[] = {1,3,2,6,1};
// System.out.println(arrData);
// System.out.println(arrData.length);
for (int i = 0; i < arrData.length; i++) {
System.out.println(arrData[i]);
}
//5,4,3,2,1 넣은후출력
for(int i=0; i<arrData.length; i++) {
arrData[i] = 5-i;
}
for(int j=0; j<arrData.length; j++) {
System.out.println(arrData[j]);
}
}
}
arrData = 1 이 담긴 주소값
arrData.length = arr 길이 5
for 로 재할당 할 수 있다.
but 재할당/ 출력 은 따로 구현
수정 보수 용이 다른 기능은 따로 작업하는게 좋다.
package arrayTest;
public class ArrTest2 {
public static void main(String[] args) {
String data = "ABC";
System.out.println(data.length());//길이
System.out.println(data.indexOf('C')); //검색
System.out.println(data.charAt(1)); //추출
}
}
data.length() 길이추출
data.indexOf('c') c의 인덱스 검색
data.charAt(1) 첫번째 인덱스 값추출
package arrayTest;
import java.util.Scanner;
public class ArTask1 {
public static void main(String[] args) {
int result = 0;
int max = -100000;
int min = 100000;
Scanner sc = new Scanner(System.in);
int langth = sc.nextInt();
int Data[] = new int[langth]; //배열 길이만 알때
double average = 0;
// 인덱스에 값 대입
for(int i=0; i<100; i++) {
Data[i]=i+1;
}
// 짝수이면 result+1
for(int i=0; i<100; i++) {
result = i%2==0? result+=i : result;
}
System.out.println(result);
}
//배열에 문자 넣기(형변환)
for(int i=0; i<6; i++) {
Data[i] = (char)(65+i);
}
for(int i=0; i<6; i++) {
System.out.println(Data[i]);
}
//C 빼고 출력
for(int i=0; i<5; i++) {
Data[i]= (char)(i > 1? (66+i):(65+i)) ;
}
for(int i=0; i<5; i++) {
System.out.println(Data[i]);
}
//배열에 정수 입력
for(int i=0; i<5; i++) {
Data[i] = sc.nextInt();
}
//배열에서 max,min 찾기
for(int i=0; i<5; i++) {
max = Data[i]>max ? Data[i]: max;
min = Data[i]<min ? Data[i]: min;
}
System.out.println(max);
System.out.println(min);
//배열에 정수 입력후 평균 구하기
for(int i=0; i<langth; i++) {
System.out.println("정수 입");
Data[i] = sc.nextInt();
}
for(int i=0; i<langth; i++) {
result += Data[i];
}
//안짤리게 실수로 형변환
average = (double)result/Data.length;
System.out.println(average);
}
}
위의 메서드 사용한 응용문제
package arrayTest;
import java.util.Scanner;
public class ArTask2 {
public static void main(String[] args) {
//대문자 소문자로 , 소문자 대문자로 바꾸기
Scanner sc = new Scanner(System.in);
String message = "문자열 입력 : ",input="",result="";
System.out.println(message);
input = sc.next();
for(int i=0; i<input.length(); i++) {
char c = input.charAt(i);
if(c >= 65 && c<= 90) { // 대문자(아스키코드상 범위)
result += (char)(c+32);
}
else if (c >= 97 && c <= 122) { // 소문자
result += (char)(c-32);
}
else {
result += c; //영어가 아닐때 (대문자도 소문자도 아닐때 그냥 입력값 저장)
}
}
System.out.println(result);
// 정수 받아서 안글로 바꾸기 ex 1432-> 일사삼이
// char[] ko ={ '일' ,'이 ','삼 ','사 ','오 ','육 ','칠 ','팔 ','구 ','공 '};
// 이렇게 할 필요없이 문자열 배열에 담으면 편하겠지 ?
Scanner sc = new Scanner(System.in);
String hangle = "공일이삼사오륙칠팔구" , input = null;
String message = "정수", result = "";
System.out.println(message);
input = sc.next();
for(int i=0; i<input.length(); i++) {
result += hangle.charAt(input.charAt(i)-48); // 아스키코드 48 = 0
}
}
}
'웹개발 기초 > java기초' 카테고리의 다른 글
자바 메소드 특징 (2) | 2024.01.21 |
---|---|
자바 2차원 배열과 메소드 (0) | 2024.01.21 |
자바 연산자,반복문,조건문 (3) | 2024.01.19 |
자바 기본입출력,자료형과 형변환 (0) | 2024.01.19 |
idk 와 자바 개념 (0) | 2024.01.19 |