728x90

728x90
반응형
728x90

 

JAVA method - 9. 부록 - static

public에 이어 바로 옆에 붙어나오는 static을 알아보자

(이해가 어려우니 추후 객체지향 수업에서 또 다룰 것임)

    static - class method
 no static - instance method

스태틱이라는 키워드가 붙은 메소드는 클래스의 메소드

스태틱이 없는 메소드는 인스턴스의 메소드

 

 

// JAVA method - 9. 부록 - static
//
// static

// 	  static - class method	
// no static - instance method
// 스태틱이라는 키워드가 붙은 메소드는 클래의 메소드다
// 스태틱이 없는 메소드는 인스턴스의 메소드다
	
	
// void 의미 : 리턴값이 없다
// 비슷한 성격의 메소드를 정리정돈하는 도구 : 클래스

class Print{
	public String delimiter; // static 안씀. 바로 아래 a,b()메소드 ()안에 값도 삭제하고,
							 // println()안 값도 String delimiter → this.delimiter로 수정
//	public static void a(String delimiter) { 
//  	System.out.println(delimiter); 
	public void a() { 
		System.out.println(this.delimiter);  // 이 this.delimiter는 아래 t1.delimiter = "----";의값
		System.out.println("a");
		System.out.println("a");
	}
//	public static void b(String delimiter) {
//		System.out.println(delimiter); 
	public void b() {						 // 메소드가 인스턴스 소속일 때는 static 제거해야함
		System.out.println(this.delimiter);
		System.out.println("b");
		System.out.println("b");
	}
	public static void c(String delimiter) { // static 추가
		System.out.println(delimiter);		 
		System.out.println("c");
		System.out.println("c");
	}
}

public class method09 {

	
	public static void main(String[] args) {

	
//		a("----"); // a,b메소드 둘 다 클래스 Print로 묶고, Print.을 붙여줘서 경로지정
//		b("===="); // 경로 변경으로 인한 에러 해결
		
//		Print.a("----"); // 이 코드가 1억줄이라면, 구분자를 변경해야할 때마다 곤욕...
//		Print.b("----"); // 이를 위해 아래처럼 인스턴스를 사용한다
		
								// 데이터타입이 Print클래스인 변수 t1이고,
		Print t1 = new Print(); // Print 클래스 복제. 인스턴스 : new Print()
		t1.delimiter = "----";  // Print의 인스턴스 t1은 내부적으로 구분자의 값이 ----가 됨
		t1.a();					// 좌측처럼 구분자를 추가하지 않아도 자동적용됨
		t1.b();					// 위의 Print.b("----");는 각 메소드마다 구분자를 정해준 것이고,
								// 인스턴스를 사용한 이녀석은 메소드마다 지정안해줘도 된다
		
//		Print.a("====");		// 클래스 Print 소속으로 실행됨
//		Print.b("====");
		
		Print t2 = new Print(); // t1처럼 같은 클래스를 복제한 것 뿐인데, 왜 에러뜨고 작동하지 않을까?
		t2.delimiter = "====";  // static의 유무에 따라 에러 on&off
		t2.a();					// 이 a()메소드는 t2 '인스턴스 소속'으로 실행됨
		t2.b();					// Print.a("====");의 a는 '클래스 Print 소속'으로 실행됨
		
								// 메소드가 인스턴스 소속일 때는 static을 빼줘야함
								// 메소드가 클래스 소속일 때는 static이 있어야함
		// Print.a();에서 Print.은 클래스이고 이렇게 실행하면 작동이 안되고 에러
		// a()라는 메소드는 클래스 소속이 아니고 인스턴스 소속이기 때문에 에러. static이 없기에 작동x
		// Print.a();를 작동시킬려면 static을 넣으면 클래스를 쓸 수 있다. 
		
		Print.c("++++");		// 클래스 소속 메소드로써 잘 작동
								// static을 위에서 추가시켜뒀기 때문
	}
}

 

  • static - class method

mesod_try.c("@@@@"); 

 

  • no static - instance method

 

mesod_try m1 = new mesod_try();
m1.delimiter = "아자아자";
m1.a();
m1.b();

 

728x90
반응형
728x90

 

JAVA method - 8. 부록 - Access level modifiers

Access level modifiers : 외부에서의 접근권한 설정

 

메소드가 많아지면, 서로 연관된 메소드를 그루핑하기 위해 클래스를 만들게 된다

만든 클래스에 연관 메소드를 안에 넣어둠

 

public 자리에 올 수 있는 다른 명령어들 : 외부에서 접근하는 레벨을 지정하는 부분

public, protected, default(생략), private(같은 클래스 안에서만 작동하게하는 기능)

 - 위의 명령어가 무엇이든 다 동작하기는 한다

 

 

아래는 public과 private의 설정 차이이다

Greeting.hi();에서 위의 클래스 Greeting 안에 hi메소드가 public이면 작동. private면 미작동 에러

class Greeting{
	**public** static void hi() { 
//	private static void hi() {
		System.out.println("Hi");
	}
}

public class method08 {
	public static void main(String[] args) {

		**Greeting**.hi(); // 위의 hi메소드가 public이면 작동. private면 미작동 에러
	}
}

 

public과 private의 예

스마트폰 안에 오만가지 선들이 있는데 이것을 사용자가 만지면 안되고 알 필요도 없음 반대로 사용자가 컨트롤 해야할 볼륨키, 전원키 등은 외부로 나와줘야한다

  • public : 외부로 노출되어 있는 버튼들(유저가 사용가능)
  • private : 내부 선들(유저 사용불가)

 

 

전체코드

// JAVA method - 8. 부록 - Access level modifiers
//
// Access level modifiers : 외부에서의 접근권한 설정

class Greeting{
	public static void hi() {
//	private static void hi() {
		System.out.println("Hi");
	}
}
public class method08 {
	public static void main(String[] args) {
	// public 자리에 올 수 있는 다른 명령어들 : 외부에서 접근하는 레벨을 지정하는 부분
	// public, protected, default(생략), private(같은 클래스 안에서만 작동하게하는 기능)
	// 위의 명령어가 무엇이든 다 동작하기는 한다
		
		Greeting.hi(); // 위의 hi메소드가 public이면 작동. private면 미작동 에러
		
		// protected & default는 경제적이지 않음
		
		// public과 private의 예
		// 스마트폰 안에 오만가지 선들이 있는데 이것을 사용자가 만지면 안되고 알 필요도 없음
		// 반대로 사용자가 컨트롤 해야할 볼륨키, 전원키 등은 외부로 나와줘야한다
		// public : 외부로 노출되어 있는 버튼들(유저가 사용가능)
		// private : 내부 선들(유저 사용불가)
	}
}
728x90
반응형
728x90

JAVA method - 6. 메소드의 활용

 

메소드 사용의 장점

1.코드의 가독성↑

 - 1억줄의 코드에서 수많은 로직이 얽힌 코드를 이해해야할 때...?

2.재사용 용이 : 호출만 하면 됨

3.유지보수 관리 용이

 

public class method06 {
	public static void main(String[] args) {
	
			double valueOfSupply = 10000.0;
			double vatRate = 0.1;
			double vat = valueOfSupply * vatRate;
			double total = valueOfSupply * vat;

			System.out.println("Value of supply : " + valueOfSupply);
			System.out.println("VAT : " + vat);
			System.out.println("Total : " + total);
	}
}

메소드를 사용해 위의 코드를 아래의 코드처럼 간결하고 유지보지가 용이하게 바꿔보자

public class method06 {
	public static double valueOfSupply = 10000.0; // 공급가액
	public static double vatRate = 0.1;           // 부가가치 세율
	// public static이라 붙이는 의미 : 위의 method06 클래스의 직접적인 소속이라는 것

	public static double getVAT() {
		return valueOfSupply * vatRate;
	}
	public static double getTotal() {
		return valueOfSupply + getVAT();
	}
	
	public static void main(String[] args) {
	
		
	// 지역변수
//	double vat = valueOfSupply * vatRate;  // 부가세
	double vat = getVAT(); // 위와 같은 코드. get메소드 get변수명의 변수값을 가져온다
//	double total = valueOfSupply + vat;    // 합계
	double total = getTotal();
	
	
	System.out.println("Value of supply : " + valueOfSupply);
	System.out.println("VAT : " + vat);
	System.out.println("Total : " + total);

	// 메소드 사용의 장점
	// 1.코드의 가독성↑
	// 2.재사용 용이 : 호출만 하면 됨
	// 3.유지보수 관리 용이
	}
}

반복되는 코드들을 메소드화해서 메인메서드 밖에서 만들고, 지역변수를 전역변수화해서 이 클래스 안 전체에서 사용 가능케 전환

 

  • public static 붙이는 의미 : 위의 method06 클래스의 직접적인 소속이라는 것
  • get메소드 : get변수명의 변수값을 가져온다

 

 

 


 

 

JAVA method - 7. 수업을 마치며

메소드는 서로 연관된 명령을 그루핑해서 이름을 붙인 것

클래스는 서로 연관된 메소드와 변수를 그루핑해서 이름을 붙인 것

 

클래스(class)

많은 컴퓨터 언어들이 클래스의 개념을 갖고있지 않거나 처음에는 없다가 나중에 추가된 경우가 많다

메소드만으로도 할 수 있는 것이 많고, 충분히 혁명적

 

객체지향 프로그래밍(Object Oriented Programming, OOP)

서로 연관된 메소드와 변수를 그루핑해서 이름을 붙인 것이 클래스

이 클래스를 복제해서 서로 다른 내부상태를 가지고 있는 복제본들을 인스턴스

 

class & instance & object

클래스와 인스턴스를 우선 객체라고 생각해도 좋다

객체를 뼈대로 하는 프로그램을 만들어가는 프로그래밍 방법론을 객체지향 프로그래밍이라고 한다

 

많은 컴퓨터언어와 소프트웨어 객체지향 프로그래밍에 따라서 만들어지고 있다.

또한 남들이 만든 라이브러리가 OOP 방법에 따라 만들어져 있을 수도 있다

객체지향은 입문자가 중급자가 되는 길목에 있는 개념이라고 할 수 있다

코드의 양이 많아지고 남들과 공유해야할 일이 많아지고 있다면 객체지향을 공부할 시기

 

728x90
반응형
728x90

JAVA method - 5. 메소드의 출력

 

 

자바에서 메소드 아웃풋의 핵심 중 알아야할 return

  1. 메소드 뒤에 있는 리턴값이 메소드의 실행 결과가 된다
  2. 리턴값은 메소드를 종료시키는 역할도 한다
  3. 메소드는 그 메소드의 리턴값이 어떤 데이터 타입인지 지정해주어야한다

ex)

public static int one() {
		return 1;

 

 

메인메소드의 세부설명

public static void main(String[] args) throws IOException { 
	// void : 리턴값이 없다
	// throws IOException : 오류가 발생했을 때, 오류를 이 클래스를 사용하는 쪽으로  던져버리는 기능

void : 리턴값이 없다

throws IOException : 오류가 발생했을 때, 오류를 이 클래스를 사용하는 쪽으로 던져버리는 기능

 

 

자바의 파일출력(FileWriter) 기능

변수명 앞 데이터타입 지정할 자리에 FileWriter를 넣는다

import java.io.FileWriter;

import java.io.IOException;

(두가지를 임포트 해야하는데 빨간색 에러표시 뜨면서 이클립스에서 자동 추천해주니 힘들게 외울 필요는 없다)

 

형태

FileWriter 변수명 = new FileWriter("파일명.txt");

변수명.write(파일 안에 써질 내용);

변수명.close(); 반드시 닫아줘야한다

ex)

import java.io.FileWriter;
import java.io.IOException;

public static void writeFileTwoTimes(String text, String delimiter) throws IOException {
		FileWriter fw = new FileWriter("output.txt");
		fw.write(delimiter+"\\n");
		fw.write(text+"\\n");
		fw.write(text+"\\n");
		fw.close();
	}

 

이외에도 BufferedWriter라는게 있는데 기록하고자 하는 파일의 크기가 100K를 넘는다면 BufferedWriter + FileWriter 를 혼합하여 사용하는게 파일 기록할때 속도가 더 빠르다고 하니 기억해뒀다가 추후에 사용하자

728x90
반응형
728x90

 

JAVA method - 4. 메소드의 입력

 

단순 반복만 대체가 아닌 함수 괄호 안에 입력값에 따라 메소드가 다르게 작동하게 하는 방법?

 - 해당 메소드 안 println() 안에 변수명으로 바꿔주면, 밖에서 해당 메소드 호출하고 ()안에 입력되는 값에 따라 출력된다

 - 아래 코드표 참조

 

메인 메소드 main(String[] args) {의 디테일한 의미

main이라는 메소드 있어야 자바가 프로그램을 호출한다는 약속

String뒤에 []는 문자열 배열

args는 자바가 메인메소드를 실행할 때, 입력해주는 입력값이 args를 통해서 들어가게됨

 

 

public static void printTwoTimes(String text) { 이 코드를 자바가 어떻게 받아들일까?

- printTwoTimes라는 메소드를 정의하고 있고, 이 메소드 ()안에 들어온 첫번째 값은 반드시 String타입으로 받으며, {}안에서 text라는 변수의 값이 되겠구나라고 생각한다

- 이 메소드 밖에서 printTwoTimes 메소드를 호출하면 printTwoTimes()안에 첫째값을 "a"이구나 그럼 자바는 text 값은 {}안에서 "a"이구나라고 생각

- printTwoTimes메소드 안에 "a”를 변수명 text로 변경하면, 메소드 데이터를 추가해야할 것을 더이상 수정할 필요가 없게됨

- 메소드명(데이터타입 변수명) {메소드 작동내용}

 

만약 위의 구분표시----를 다른걸로 메소드처럼 일괄 변환하고 싶다면?(두번째 변수 추가)

public static void printTwoTimes2(String text, String delimiter) {처럼 두번째 파라미터 추가와 메소드 밖에서 호출할 메소드 ()에도 인자를 추가해주면 된다

// delimiter 매개변수를 추가함
public static void printTwoTimes2(String text, String delimiter) {
		System.out.println(delimiter); // delimiter 구분자라는 의미
		System.out.println(text);	
		System.out.println(text);

 

 

  • 매개변수(parameter) : 아래 새로 만든 메소드 안에 변수명을 매개변수한다
  • 메소드 밖에서 메소드를 사용하는 쪽으로 주입한 값을 메소드 안으로 흘려보내주는 매개자라고 해서 매개변수
  • 인자(arguement) : 해당 메소드 밖에서 호출하는 메소드명 ()안에 입력값을 인자라 한다

 

 

public class method04 {

	public static void main(String[] args) { // main이라는 메소드 있어야 자바가 프로그램을 호출한다는 약속
// String뒤에 []는 문자열 배열. args는 자바가 메인메소드를 실행할 때, 입력해주는 입력값이 args를 통해서 들어가게됨
		printTwoTimes("a");	
		// 1억번 코드 반복
		printTwoTimes("b");	
		// 1억번 코드 반복
		
		
		printTwoTimes2("a","----");	// delimiter(구분자) 적용 메소드 호출
		printTwoTimes2("a","****");	
		printTwoTimes2("b","%%%%");	
		printTwoTimes2("b","!!!!");	
								// 위의 함수 안에 입력 된 값을 인자(argument) 
	}
								// 아래 text, delimiter와 같은 변수를 파라미터(parameter)라고 부름. 
								// 메소드 밖에서 메소드를 사용하는 쪽으로 주입한 값을 메소드 안으로 흘려보내주는 매개자라고 해서 매개변수
	public static void printTwoTimes(String text) {// 이 코드를 자바가 어떻게 받아들일까? 
		System.out.println("----");		 // printTwoTimes라는 메소드를 정의하고 있고
		System.out.println("a");		 // 이 메소드 ()안에 들어온 첫번째 값은 반드시 String타입으로 받으며
		System.out.println(text);		 // {}안에서 text라는 변수의 값이 되겠구나라고 생각한다
	}									 // 메소드명(데이터타입 변수명) {메소드 작동내용}
	// 이 메소드 밖에서 printTwoTimes 메소드를 호출하면 printTwoTimes()안에 첫째값을 "a"이구나 
	// 그럼 자바는 text 값은 {}안에서 "a"이구나라고 생각
	
	// printTwoTimes메소드 안에 "a'를 변수명 text로 변경하면, 추가되거나 수정할 메소드 데이터를 더이상 할 필요가 없게됨

	// 만약 위의 구분표시----를 다른걸로 메소드처럼 일괄 변환하고 싶다면?
	public static void printTwoTimes2(String text, String delimiter) {
		System.out.println(delimiter); // delimiter 구분자라는 의미
		System.out.println(text);	     // 
		System.out.println(text);
	}

}

 

 

728x90
반응형
728x90

출처: <https://www.youtube.com/watch?v=sQEmlaNXJZk&list=PLuHgQVnccGMDkdt3N9tT0aZPZx5-Ri2jo&index=1>

 

JAVA method - 1. 수업소개

코드의 양이 많아지면 정리하고 싶게 될 것인데, 연관된 코드를 모아서 그루핑(grouping)하고 이름을 붙이면 이것이 함수(function)이고 자바에서는 메소드라고 부름

이미 만들어 놓은 메소드를 사용해서 똑같은 코드를 다시 작성할 필요 없이 재사용 가능

 

 


 

JAVA method - 2. 이미 익숙한 메소드

메인 메소드를 쓰면서 이미 메소드를 사용해옴

main도 메인이라는 메소드. 처음부터 끝까지 하나의 메소드

println()도 입력값을 모니터로 출력하는 메소드

math.floor(1.1)); // 내림 메소드. 1.1을 1.0으로

 


 

JAVA method - 3. 메소드의 기본 형식

반복되는 1억줄의 코드를 하나씩 변경해야한다면?

연관된 코드를 그루핑해서 이름을 붙이자(메소드 작성)

아래처럼 반복되는 코드를 따로 메소드를 만들어서 관리(수정)할 때도 편하고 코드도 줄어들어서 필히 사용해야할 기능

 

 

public static void printTwoTimesA() {

이 줄을 보고 자바는 이런 메소드 있고 이런 내용을 가졌구나 하고 기억해둠

 

 

System.out.println("A"); // 둘이 같은 코드

printTwoTimesA();
  • 여기서 코드수정시 이 메소드를 쓴 모든 코드에 적용되어 엄청난 생산성업

 

 

 

public class method010203 {
	public static void printTwoTimesA() {// 이 줄울 보고 자바는 이런 메소드 있고 이런 내용을 가졌구나
		System.out.println("-");		 // 하고 기억해둠
		System.out.println("A");		 // 여기서 코드수정시 이 메소드를 쓴 모든 코드에 적용되어 엄청난 생산성업
		System.out.println("A");
	}
	public static void main(String[] args) { // 여기 main도 메인이라는 메소드. 처음부터 끝까지
		System.out.println("hello"); // println도 입력값을 모니터로 출력해주는 메소드
		System.out.println(Math.floor(1.1)); // 내림 메소드. 1.1을 1.0으로
		
	
		// 1억번 반복
		printTwoTimesA();
//		// 1억번 반복
//		System.out.println("-");
//		System.out.println("A");
//		System.out.println("A");
//		// 1억번 반복
//		System.out.println("-");
//		System.out.println("A");
//		System.out.println("A"); // 이 반복되는 코드들을 위에 만들어둔 메소드 printTwoTimesA로 변경
		// 1억번 반복				 // 같은 일하게 된다
		printTwoTimesA();		
		// 1억번 반복
		printTwoTimesA();
		
		// 이클립스 refactoring 기능
		// 매소드로 만들기를 원하는 부분을 드래그 범위 지정-우클릭 refactoring 클릭-우측 extract method 클릭
		// 프리뷰 기능을 이용하여 어찌 바뀔껀지 미리 확인가능
	}

}

 

 

※ 이클립스 리팩토링refactoring : 메소드화 기능

이클립스 refactoring기능을 이용하면 해당 부분을 쉽게 메소드화 가능하다

[메소드로 만들기를 원하는 부분을 드래그 범위 지정] - [우클릭 refactoring 클릭] - [우측 extract method 클릭]

 

 - 프리뷰 기능을 이용하여 어찌 바뀔껀지 미리 확인가능

728x90
반응형
728x90

JAVA 제어문 - 8.1. 종합응용 1

 

String[] users = {"egoing","jinhuck","youbin"};

[] 배열로 유저id 목록 전체를 관리하고

 

String inputId = args[0];

로그인시, 유저에게 아이디를 입력 받음

 

boolean isLogined = false;

로그인 여부 체크

플래그(flag) 변수 사용

 

for(int i=0; i<users.length; i++) {

for 반복 & 카운트 변수 초기화

users변수의 배열 길이만큼 for 반복

카운트변수i +1씩해서 카운트

 

String currentId = users[i];

새로 변수설정 currentId

users[i] 반복문 카운트i 올라가면서 users 배열에 있는 인덱스번호가 같이 올라가면서 반복문이 반복될 때마다 배열 안에 있는 str데이터값이 바뀌게 되고 하나씩 체크할 있게됨

 

 if (currentId.equals(inputId)) {

String[] users = {"egoing","jinhuck","youbin"}; 여기 유저 전체목록에서 유저가 로그인하기 위해서 입력한 아이디와  첫번째 유저아이디부터 차례대로 대조하여 맞는게 있는지 확인하는 과정

 

isLogined = true;
break;

로그인이 확인되었다는 의미의 플래그(flag) 변수. 로그인 되었으니 유저id찾는 반복문 종료

 

		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master!!");
		} else {
			System.out.println("Who are you?");
			}

isLogined true이므로 if문이 작동하여 유저 환영 문구인 master!! 출력

 

public class flow_control08_1 {
	public static void main(String[] args) {

		String[] users = {"egoing","jinhuck","youbin"};
		String inputId = args[0];              # users목록 중에 inputId가 들어온게 있는 체크해야함
		
		boolean isLogined = false;             # 로그인 여부 확인. 로그인 아직안됬기에  false
		for(int i=0; i<users.length; i++) {    # 전체 유저수보다 작게 반복문실행해서 유저목록중에 로그인할려는 유저 찾기
			String currentId = users[i];       # currentId : 현재유저
			if (currentId.equals(inputId)) {   # currentId와 inputId가 같으면 true되서 if문 발동
				isLogined = true;              # 위의 불리안과 연결되어 로그인됬으니(true) 종료시킴. 이런걸 플래그(flag)변수라고함
				break;                         # 일치하는 사람이 있으면 반복문 종료
			}
		}
        
		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master!!");
		} else {
			System.out.println("Who are you?");
			}
	}
}

 

 

 플래그(flag) 변수 

프로그래밍에서는 상태를 기록하고 처리 흐름을 제어하기 위한 boolean타입 변수를 의미

참과 거짓을 나타내주는 플래그

 

 

 



 

 

 

JAVA 제어문 - 8.1. 종합응용 2

1에서 명단만 있던 것에서 비밀번호 기능 추가해보는 수업

 

※ 2차원 배열(array)

배열 안에 배열

ex)

String[][] users = {
	{"egoing","1111"}
}

 

 

 1편에서 추가된 코드 디테일 해석

String inputPass = args[1]; // pw 인자

String inputId = args[0]; 에서 id를 유저로부터 입력 받는 코드였고, 위는 pw

 

if (
		current[0].equals(inputId) && # and 논리연산자 : 둘 다 만족
		current[1].equals(inputPass)  # ID랑 PW 둘다 같다면 로그인시키는 코드
			)

for문 안에서 if문으로 id와 pw 같은지 체크. and 논리연산자(&&)를 사용하여 id와 pw 둘 다 맞는지 확인한다

 

 

 

 

728x90
반응형
728x90

 

JAVA 제어문 - 7.3. 반복문(Loop) + 배열(Array)

 

 

html

<li>user name</li> 몇만개 반복해야된다면?

<li>egoing</li>

<li>jinhuck</li>

<li>youbin</li> ...

 

반복문과 배열이 중요

 

String[] users = new String[3];
users[0] = "egoing";
users[1] = "jinhuck";
users[2] = "youbin";


for (int i = 0; i < 3; i++) {        # 배열 길이랑 맞지 않는 반복횟수의 경우의 수에서는 제대로 작동x
	System.out.println("<li>"+users[i]+"</li>");   # html <li>태그 반복문
}

 - i<3 조건이므로, 3까지는 괜찮으나 3보다 작은 수면 에러나고, 크면 커도 3개까지만 출력되므로 코드가 제대로 작동하지 않는다

 

String[] users = new String[3];
users[0] = "egoing";
users[1] = "jinhuck";
users[2] = "youbin";

for (int i = 0; i<users.length; i++) {     # .length추가로 new String[]배열 길이에 따라 반복가능
	System.out.println(users[i]+",");   # user[인덱스]에 나눠어서 , 찍어주고
}

 - 범위를 i < users.length(배열의 길이의 따른 숫자) 맞아 떨어지게 몇명의 유저수가 와도 자동으로 수에 맞춰서 반복문 횟수를 조절해주게 된다.

 - i++ i = i+1와 같은 코드

 

 

for (int i = 0; i<users.length; i++) 기억!

 

728x90
반응형
728x90

 

 

JAVA 제어문 - 7.1. 반복문(Looping statement)

 

반복문의 두가지

while(), for()

 

반복문 while

while () 안에 boolean 데이터 타입 true 들어가면,

while {} 코드가 true 보고 반복적으로 계속 실행됨

 

while, 자유도가 높다

while문의 i코드가 일억줄의 코드 중에 어떤 코드로 인해 i값이 변형될 가능성

길어지면 알아보기 힘들기에 누군가 i값을 다른 용도로 쓰거나 했다면 코드가 망가짐.

 

for문의 경우 필요요소가 () 하나로 패키징 되어 있기에 문제가 생길 가능이 적고, 코드 의도 파악이 쉽다

반복 횟수가 고정되어있다면 for문을

 

for 형식 기억

for(int j=0; j<3; j++) {

 

1.while문

# while문
System.out.println(1);

int i = 0; # 숫자 세는 코드
           # i는 일반적으로 반복문에서 카운팅하기 위해 많이 지정함
# while(true) { # boolean 데이터타입으로 무한루트도 가능
while( i < 3 ) {
	System.out.println(2);
	System.out.println(3);
	i = i + 1; # 같은 코드 i++;
}

System.out.println(4);

 

 

2.for문

# for문
# 반복 횟수가 지정되있을 경우 for문을 쓰는게 좋다
# for문은 ()안에 boolean타입이 아닌 초기값을 세팅하는 코드가 들어감

for(int j=0; j<3; j++) {
	System.out.println(2);
	System.out.println(3);
}

System.out.println(4);

 

 



 

 

JAVA 제어문 - 7.2. 배열(Array)

 

 

엄청나게 많은 데이터를 반복해서 보통 쓰게되는데

엄청난 양의 데이터를 정리하기 위한 체계가 필요하게 된다. 이때 쓰는게 배열(Array)이고, 자바에서는 array 기본체계

반복문과 배열(array) 같이 많이 쓰인다

 

1.빈 배열을 만들고 값을 추가해서 넣는 방법

# 문자열로 이루어진 배열
# 빈 배열을 만들고 값을 추가해서 넣은 방법

String[] users = new String[3];  # [3]은 배열의 크기를 지정하는 것
users[0] = "egoing";    # 갯수를 셀 때는 1부터3까지 세개이나 자릿수를 셀 때는 프로그래밍에서는 0부터	
						# 0의 첫번째 자리는 egoing이라는 의미
users[1] = "jinhuck";
users[2] = "youbin";

System.out.println(users[1]);
System.out.println(users.length);// 세칸짜리 배열이라는 뜻

결과값 

jinhuck
3

 

2.배열 생성 시에 값을 담아서 생성시키는 방법

# 배열 생성시에 아예 값을 담아서 생성시키는 방법

# int[] scores = new int[3]
int[] scores = {10, 100, 1000};

System.out.println(scores[1]);
System.out.println(scores.length);

결과값

100
3

 

 

 

인덱스(Index)와 원소(Element)

index : 0 1 2

element(원소) : "egoing" "jinhuck" "youbin"

 

 

 

 

728x90
반응형

+ Recent posts