'JAVA 기초'에 해당되는 글 17건
- 2012.08.11 6일차 : 오버로딩, final, static메소드
- 2012.08.05 5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드
- 2012.08.05 4일차 : 배열
- 2012.08.05 3일차 : while문, 다중 while문, do~while문
- 2012.07.29 2일차 : 제어문, 반복제어문, switch문, 조건연산자(삼항연산자)
- 2012.07.29 1일차 : 변수, 기본 자료형, 강제 형 변환, 자바의 연산자
- 2012.07.29 요약 정리 1~15일차
6일차 : 오버로딩, final, static메소드
x와 y의 값을 오버로딩하여 구해보기
class MyClass { private double x,y; //멤버변수 //파라미터로 정수 두개를 받아서 멤버변수 x,y에 초기화하는 생성자 만들기 public MyClass(double x, double y){//매개변수 this.x=x; //this. 는 멤버변수로 불러오게 해준다 (int사용시 매개변수의 값을 불러온다) this.y=y; } public MyClass(){//생성자 중복(오버로딩) x=10; y=20; } public void showXY(){ System.out.println("x: "+x); System.out.println("y: "+y); } } class Overloading01{ public static void main(String[] args) { MyClass cc=new MyClass(); cc.showXY(); //MyClass객체가 힙(heap)이라는 영역에 생성되고 참조변수 aa는 //생성된 객체의 주소값이 저장된다. MyClass aa=new MyClass(10.0,20.0); //aa=new 생성자를 무조건 호출 aa.showXY(); //bb는 aa와 같은 주소값을 저장하게 된다. 결국 같은 객체를 참조한다. MyClass bb=aa;//aa에 들어있는 값을 bb에 넣어라. 결국 하나의 객체를 2개의 변수가 참조한다. bb.showXY(); } }
직사각형의 넓이 구하기
class MyArea{ //직사각형넓이 구하기 public double getArea(double x, double y){ //메소드 1 return x*y; } /* 오류발생 : 리턴형은 전혀 상관없으며 매개변수로만 구분한다. 매개변수의 개수와 타입이 모두 동일하므로 오류 public void getArea(double x, double y){ System.out.println("사각형넓이: "+x*y); } */ //정사각형넓이 구하기 public double getArea(double x){ //파라미터 하나만 받아서, x*x로 리턴. 오버로딩 return x*x; } //사각형 부피 구하기 public double getArea(double x, double y, double z){ //가로*세로*깊이 return x*y*z; } } class Overloading02 { public static void main(String[] args) { MyArea mm=new MyArea(); System.out.println("직사각형 넓이: "+mm.getArea(10,20)); System.out.println("정사각형 넓이: "+mm.getArea(40)); System.out.println("직사각형 부피: "+mm.getArea(10,20,30)); } } /* 결과 직사각형 넓이: 200.0 정사각형 넓이: 1600.0 직사각형 부피: 6000.0 */
오버로딩으로 절대값 구하기
class MyMath { public double abs(double a){ return (a>=0)? a:-a; } public int abs(int a){ return (a>=0) ?a:-a; } public float abs(float a){ return (a>=0) ?a:-a; } } class Overloading03{ public static void main(String[] args) { MyMath mm=new MyMath(); System.out.println("-10의 절대값: "+ mm.abs(-10)); System.out.println("-10.4의 절대값: "+ mm.abs(-10.4)); System.out.println("-20.5f의 절대값: "+ mm.abs(-20.5f)); } } /* 결과 -10의 절대값: 10 -10.4의 절대값: 10.4 -20.5f의 절대값: 20.5 */
객체의 배열을 이용해서 이름, 주민번호를 출력//객체의 배열 class ObjectArray01 { public static void main(String[] args) { //MyPerson 객체배열을 만듦(MyPerson객체가 3개 생성된 것이 아니라 //MyPerson 객체를 참조할 수 있는 참조 변수가 배열로 3개 만들어진 것임) MyPerson[] per=new MyPerson[3]; //객체를 생성하고 주소값을 객체배열에 저장 per[0]=new MyPerson("홍길동", "1234561234567"); per[1]=new MyPerson("김철수", "1111111234567"); per[2]=new MyPerson("김영희", "2222221234567"); for(int i=0; i<per.length; i++){ //length는 개수를 구하는 것. per[i].print(); } } } /* 결과 이름 : 홍길동 주민번호 : 1234561234567 이름 : 김철수 주민번호 : 1111111234567 이름 : 김영희 주민번호 : 2222221234567 */
사람의 이름과 주민번호를 저장하고 출력하는 클래스 만들기
/* 사람의 이름과 주민번호를 저장하고 출력하는 클래스를 만들고 사용해 보세요. */ class MyPerson{ private String name; private String jumin; public MyPerson(String name, String jumin){ this.name=name; this.jumin=jumin; } public void print(){ System.out.println("이름 : " +name); System.out.println("주민번호 : "+jumin); } } class Reference01 { public static void main(String[] args) { MyPerson pp=new MyPerson("홍길동", "20120723"); pp.print(); test(pp); } public static void test(MyPerson aa){//클래스명을 따라간다.//static은 static만 접근이 가능하므로 여기서도 똑같이 static로 접근시켜준다. 지우면 오류발생. aa.print(); } } /* 결과 이름 : 홍길동 주민번호 : 20120723 이름 : 홍길동 주민번호 : 20120723 */
static 메소드를 이용해서 절대값 구하기
class MyMath{ int a; //인스턴스 변수 public static int max(int x, int y){ //System.out.println("a:" +a); //오류발생: 일반멤버변수는 사용못함 return (x>y)?x:y; } public static double getAbs(double a){ return (a>=0)?a:-a; } public static int getAbs(int a){ return (a>=0)?a:-a; } } class Static01 { public static void main(String[] args) { /* MyMath mm=new MyMath(); int m=mm.max(1,2); */ //static 메소드는 객체를 생성하지 않고 [클래스명]으로 호출한다!!!!! int m=MyMath.max(1,2); System.out.println("큰 수: "+m); //getAbs메소드를 호출해서 절대값을 구해보세요. double a=MyMath.getAbs(-10); System.out.println("-10의 절대값" +a); System.out.println("-2,3의 절대값:"+Math.abs(-2.3)); int b=MyMath.getAbs(5); System.out.println("절대값" +b); } } /* 결과 큰 수: 2 -10의 절대값10.0 -2,3의 절대값:2.3 절대값5 */
static 멤버면수를 이용한 값 구하기
class MyTest02{ //이게 로딩되는 순간
int a; //객체의 수만큼 생성
static int b; //객체의 수와 상관없이 하나만 생성
public MyTest02(){
a++; //생성자
b++; //생성자
}
public void show(){
System.out.println("a:"+a);
System.out.println("b:"+b);
}
}
class Static02{
public static void main(String[] args) {
MyTest02 tt=new MyTest02();
tt.show();
MyTest02 tt1=new MyTest02();
tt1.show();
System.out.println("b:" +MyTest02.b);
}
}
/*
결과
a:1
b:1
a:1
b:2
b:2
*/
도서명, 출판사, 판매부수, 총판매부수 출력하기
//도서명, 출판사, 판매부수, 총판매부수 class MyBook{ private String title; //도서명 private String pub; //출판사 private int cnt; //판매부수 private static int tot; //총판매부수(cnt를 누적한 값) public MyBook(String title, String pub, int cnt){ this.title=title; this.pub=pub; this.cnt=cnt; tot+=cnt; //판매부수를 총판매부수에 누적하기 } public void show(){ System.out.println("도서명: "+title); System.out.println("출판사: "+pub); System.out.println("판매부수:"+cnt); } public static int getTot(){ //static메소드는 static멤버변수만 접근가능! return tot; } } class Static03{ public static void main(String[] args) { MyBook book1=new MyBook("java", "중앙", 10); //(title, pub, cnt) book1.show(); MyBook book2=new MyBook("jsp", "영진", 5); book2.show(); System.out.println("전체판매부수: " +MyBook.getTot()); } } /* 결과 도서명: java 출판사: 중앙 판매부수:10 도서명: jsp 출판사: 영진 판매부수:5 전체판매부수: 15 */
static 초기화
class MyTest03{ private int a; private static String str; static{ //static멤버변수는 static블록에서 초기화한다. str="아리랑 아리랑 아라리요"; } public MyTest03(){ //생성자 a=10; // str="아리랑"; //여기에 해줘도 실행은 되지만 해주면 안된다. } public void print(){ System.out.println("a: "+a); System.out.println("str: "+str); } public static void printStr(){ System.out.println("str: "+str); } } class Static04 { public static void main(String[] args) { MyTest03.printStr(); //MyTest03 tt=new MyTest03(); //tt.print(); } }
Quiz01
/* 두수를 매개변수로 받아서 두수 중 큰 값을 리턴하는 메소드를 만드세요. 실수, 정수, char모두 가능하도록 오버로딩해 보세요. */ class MyMax{ public int getMax(int x, int y){ return (x>y) ?x:y; //(피연산자1:피연산자2) 참이면 피연산자1, 거짓이면 피연산자2를 출력 } public double getMax(double x, double y){ return (x>y) ?x:y; } public char getMax(char x, char y){ return (x>y) ?x:y; } } class Quiz01{ public static void main(String[] args) { MyMax mm=new MyMax(); int m=mm.getMax(10,20); System.out.println("큰 정수: " +m); double m1=mm.getMax(30.9,29.7); System.out.println("큰 실수: " +m1); char m2=mm.getMax('A', 'a'); System.out.println("큰문자: " +m2); } } /* 결과 큰 정수: 20 큰 실수: 30.9 큰문자: a */
Quiz02
/* 두 정수의 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈)하는 클래스를 만들어보세요. 메소드는 static으로 만들고 main메소드에서 사용해 보세요. */ class MyTest{ public static int getAbs1(int x, int y){ return x+y; } public static int getAbs2(int x, int y){ return x-y; } public static int getAbs3(int x, int y){ return x*y; } public static int getAbs4(int x, int y){ return x/y; } } class Quiz02 { public static void main(String[] args) { int a=MyTest.getAbs1(2,4); System.out.println("덧셈: "+a); int b=MyTest.getAbs2(2,4); System.out.println("뺄셈: "+b); System.out.println("곱셈: "+MyTest.getAbs3(2,4)); System.out.println("나눗셈: "+MyTest.getAbs4(2,4)); } }
Quiz03
class MyBox{ private double x; private double y; public MyBox(){} public void setXY(double x, double y){ this.x=x; this.y=y; } public double getArea(){return x*y;} } class Quiz03{ public static void main(String[] args) { //MyBox타입의 객체를 배열로 3개 만들고 값 저장 후 넓이를 출력해보세요. MyBox[] bb=new MyBox[3]; /*bb[0]=new MyBox("3,4"); bb[1]=new MyBox("5,6"); bb[2]=new MyBox("7,8"); */ for(int i=0; i<bb.length; i++){ bb[i]=new MyBox(); } //3개 객체의 x,y값 넣기 bb[0].setXY(10,20); bb[1].setXY(30,40); bb[2].setXY(50,60); //객체배열의 넓이를 구해서 출력하기 for(int i=0; i<bb.length; i++){ System.out.println(bb[i].getArea()); } } } /* 결과 200.0 1200.0 3000.0 */
[ 과 제 ]
'JAVA 기초' 카테고리의 다른 글
8일차 : 추상클래스, 인터페이스, Object클래스 (0) | 2012.08.11 |
---|---|
7일차 : 오버로딩, 오버라이딩, 상속 (0) | 2012.08.11 |
5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드 (0) | 2012.08.05 |
4일차 : 배열 (0) | 2012.08.05 |
3일차 : while문, 다중 while문, do~while문 (0) | 2012.08.05 |
5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드
사각형의 넓이 구하는 클래스 만들기
//사각형의 넓이를 구하는 클래스 만들기
//클래스는 멤버변수+메소드 두 가지로 이루어진다. class MyRect{//클래스 //멤버변수 선언 private int x; //일반적으로 멤버변수는 private로 선언해준다. private int y; //private : 은닉화, 캡슐화(안에 숨겨놓는다) 메소드로 사용. //멤버메소드 정의 public void setXY(int x1, int y1){ //seXY : 값을 저장하는 메소드 (리턴값이 없으므로 void) 매개변수이다. if(x<=0 || y<=0){ System.out.println("가로세로길이가 잘못입력됨"); System.exit(0); } this.x=x; //매개변수를 따라가므로 매개변수값을 따로 주는 것이 좋다. this.y=y; //멤버변수를 따라가게 하고 싶으면 this를 붙여준다. } public void showArea(){//값(넓이)을 구해주는 메소드 System.out.println("가로길이: "+x); System.out.println("세로길이: "+y); System.out.println("사각형넓이: "+x*y);//바깥쪽에 쓸 때에는 rr.x=10, rr.y=100 이런식으로 써줘야 한다. } } class MyClass01{ public static void main(String[] args) {//main은 여기서부터 시작 MyRect rr=new MyRect();//객체 생성하기 //MyRect: 클래스명 rr.setXY(10,20); //가로, 세로길이 저장하기
//rr.x=20; //rr.y=-10; rr.showArea(); //값 출력하기 // ("사각형넓이: "+x*y);로 간다. } } /* 이렇게도 가능하다. 그러나 자주 쓰이지는 않는다. class MyClass01{ public static void main(String[] args) { MyRect rr=new MyRect(); rr.x=200; rr.y=100; rr.showArea(); */
원의 넓이 구하기
class MyCircle{ private double r; //반지름 public void setR(double r){ //반지름 저장메소스 this.r=r; } public double getArea(){ //원의 넓이를 구하는 메소스 return r*r*3.14; } } class MyClass02 { public static void main(String[] args) { //MyCircle타입의 객체를 생성하고 원의 넓이를 구해서 출력해 보세요. MyCircle circle=new MyCircle(); circle.setR(2.4); double area=circle.getArea(); //()안에 비어있으면 여기서도 비워준다 System.out.println("원의넓이: "+area); //결과값 원의넓이: 18.0864 //("원의넓이: "+circle.getArea());으로도 가능하다 } }
글꼴체, 글꼴 크기
class MyFont{ private String fontName; //글꼴체 //멤버변수는 자동으로 초기화된다 private int fontSize; //글꼴크기 //생성자 //생성자에도 파라미터를 줄 수 있다. public MyFont(){ //생성자가 호출이 되는 것은 40라인의 new로 인해 발생 fontName="바탕체"; fontSize=10; } //파라미터를 갖는 생성자 생성자를 여러개 둘 수 있다 public MyFont(String fontName, int fontSize){ this.fontName=fontName; this.fontSize=fontSize; } public void setFont(String fontName, int fontSize){ //글꼴체와 사이즈를 받아서(문자열, 정수를 받아서) ) this.fontName=fontName; //멤버변수로 저장 this.fontSize=fontSize; } public void print(String str){ //값을 구해준다. System.out.println("글꼴체 :"+fontName +",글꼴크기: "+fontSize); //이 설정정보를 출력한다 System.out.println(str); } } class MyConstructor01{ public static void main(String[] args) { //MyFont객체 생성후 print메소드를 호출하여 문자열을 출력해 보세요. MyFont ff=new MyFont("궁성체",20); //21w라인~의 코드로 출력 ff.print("아리랑"); MyFont font=new MyFont(); //이 때 자동으로 생성자가 호출됨 //font.setFont("굴림체", 10); //이걸 주석처리 해줄 경우 : 글꼴체 :null,글꼴크기: 0로 뜬다. 왜? 멤버변수가 자동으로 초기화하니까. //하지만 여러개의 생성자를 두고 있을 경우엔 상관없다. font.print("객체지향 프로그래밍이 뭘까요");
} }
사용자 정의 메소드 - 두 수합 구하기
class MyMethod01 { public static void main(String[] args) { //main메소드를 찾아 실행하게 된다. int a=10, b=20; //main의 첫 번째 문장부터 실행 int c=sum(a,b); //sum이라는 메소드를 호출하면서 a와 b를 보내주고 순서가 18라인으로 바로 간다. System.out.println("두수합:"+c); } public static int sum(int x, int y){ //int sum(int x, int y){ 리턴되는 타입 x와 y가 선언 되면서 a하고 b도 안에 같이 들어가게 된다. //메소드를 호출하면서 a,b가 보내주는 개수와 x,y의 개수가 일치해야 한다.(타입과 개수 일치)a=x, b=y int z=x+y; return z; //15라인으로 리턴한다. 결과값30 //리턴되는 값이 int면 sum(int x, ..) double이면 sum(double x, ..) } } /* sum(int x, int y) 이것을 sum(int x,y) 이런식으로 선언해 줄 수 없다. 변수 이름을 똑같이 지정해도 된다.(같이 주는 것이 일반적인 형태) */
더 큰 값 구하기
class MyMethod02 { public static void main(String[] args) { int a=10, b=20; max(a,b); //리턴값을 void로 하려고 할 경우 앞에 다른 변수를 쓰면 오류 발생. void형인경우 연산 할 수 없다. (c=max(a,b))<- X! } //리턴값이 없으면 무조건 void를 쓴다. public static void max(int a, int b){//max(a,b)가 (int a, int b); if(a>b){ System.out.println(a + "이(가) 더 큽니다."); //println도 void형이다. }else{ System.out.println(b + "이(가) 더 큽니다."); } } } //어떤 결과값을 가지고 무언가를 해야하는 경우에는 무조건 리턴값을 주어야 한다.
Quiz01
class Quiz01 { public static void main(String[] args) { double r=3.5; //원의 반지름 double area=getArea(r); System.out.println("원의넓이:"+area); } public static double getArea(double r){ double z=(r*r)*3.14; return z; } } //반지름을 매개변수로 받아 원의넓이를 구하는 메소드를 만들어 보세요. //원의넓이:반지름*반지름*3.14;
Quiz02
class Quiz02 { public static void main(String[] args) { char ch='A'; //ch가 영문자인지 아닌지 판별하는 메소드 만들기 boolean result=isAlpha(ch); if(result){ System.out.println(ch +"는 알파벳문자입니다."); }else{ System.out.println(ch +"는 알파벳 문자가 아닙니다."); } } public static boolean isAlpha(char ch){ boolean r; if((ch>='A' && ch<='Z') || (ch>='a' && ch<='z')){ return true; //메소드 중간에 리턴값이 올 수 있지만 리턴값 이후에는 무조건 종료 }else{ return false; } //return r; //리턴은 무조건 하나만 리턴 할 수 있다. (return r, a;)이런식으로 안됨! } } //리턴할 것이 없을 경우에는 void로 쓰면 된다.
Quiz03
/* 도서제목(string), 저자(string), 가격(int)을 저장하고 출력하는 클래스를 만들어 보고 main메소드에서 사용해 보세요. */ import java.util.Scanner; class MyBook { //클래스명은 23라인과 연계됨 private String title; //도서명 private String author; //저자 private int price; //가격 //값저장 메소드 public void setData(String title,String author,int price){ //3개를 저장해야 하니까 문자2,정수값1 //값을 저장하는 메소드 this.title=title; this.author=author; this.price=price; } public void printData(){ System.out.println("도서명 :"+title+ ",저자: "+author+",가격: "+price); } public void inputData(){ Scanner scan=new Scanner(System.in); System.out.println("도서명"); title=scan.next(); System.out.println("저자"); author=scan.next(); //문자열이니까 next까지만 System.out.println("가격"); price=scan.nextInt(); //정수형에는 Int붙여준다. } } class Quiz03 { public static void main(String[] args) { MyBook book=new MyBook(); //5라인의 클래스명을 똑같이 써줘야 한다. (이름)=new의 이름은 아무거나 써도됨 book.setData("난 정말 JAVA를 공부한 적이 없다구요", "윤성우", 28000); book.printData(); MyBook book1=new MyBook(); book1.inputData(); //인풋데이터가 비어있으므로 이것 또한 비워줘야 한다. book1.printData(); //원의 넓이를 구하고자 하면 어디서든 쓸 수 있다. 메소드를 필요할 때 호출하여 사용 가능. MyCircle aa=new MyCircle(); aa.setR(10); System.out.println("원의넓이:"+aa.getArea()); } } /* 같은 클래스에서만 접근이 가능하도록 하려면 private를 써야 한다. 외부에서 직접 사용하지 못하도록 private로 묶어주는 것이 좋다. 멤버변수를 안에 넣어 은닉시켜 사용하는 것이 캡슐화 */
Quiz04
class MyRect{ private int x; private int y; //생성자 추가해 보세요. //파라미터가 없는 경우는 x,y에 각각 10으로 초기화 public MyRect(){ x=y=10; } public MyRect(int x, int y){ this. x=x; this. y=y; } public void setXY(int x,int y){ this.x=x; this.y=y; } public void showArea(){ System.out.println("가로길이:"+x); System.out.println("세로길이:"+y); System.out.println("사각형넓이:"+x*y); } } class Quiz04 { public static void main(String[] args) { MyRect rr1=new MyRect(10,20); rr1.showArea(); MyRect rr=new MyRect(); rr.showArea(); } } /*결과값 가로길이:10 세로길이:20 사각형넓이:200 가로길이:10 세로길이:10 사각형넓이:100 */
Quiz05
/* 학생이름, 국어, 영어점수를 입력받아 총점, 평균을 구하는 프로그램 작성 -->클래스로 구현해 보세요. */ import java.util.Scanner; class Jumsu { private String name; //학생이름 //멤버변수 private int kor; //국어점수 private int eng; //영어점수 private int sum; //총점 private int ave; //평균 //값 저장 메소드 public void setData(String name,int kor,int eng, int sum, int ave){ //매개변수 this.name=name; this.kor=kor; this.eng=eng; this.sum=sum; this.ave=ave; } //값 구하는 메소드 public void inputData(){ Scanner scan = new Scanner(System.in); System.out.println("이름을 입력하세요: "); name=scan.next(); System.out.println("국어점수를 입력하세요:"); kor=scan.nextInt(); System.out.println("영어점수를 입력하세요:"); eng=scan.nextInt(); this.sum=kor+eng; this.ave=sum/2; } public void printData(){ System.out.println("학생이름 :"+name+ ",국어점수: "+kor+",영어점수: "+eng+",총점: "+sum+", 평균"+ave); } } class Quiz05 { public static void main(String[] args) { Jumsu aa=new Jumsu(); aa.inputData(); //이건 new의 제목을 따라간다 aa.printData(); } }
Quiz06
/* 학생이름,국어,영어점수를 입력받아 총점,평균을 구하는 프로그램 작성 --> 클래스로 구현해 보세요. */ class Student{ private String name; private int kor; private int eng; private int tot; private double ave; public Student(){}//디폴트생성자 //파라미터가 없을 때 호출 public Student(String name,int kor,int eng){//생성자 this.name=name; this.kor=kor; this.eng=eng; } public void calc(){//계산해주는 메소드 tot=kor+eng; ave=tot/2.0; } public void printData(){//정보를 출력하는 메소드 calc();//계산하기 System.out.println("이름:"+name); System.out.println("국어:"+kor); System.out.println("영어:"+eng); System.out.println("총점:"+tot); System.out.println("평균:"+ave); } } class Quiz06{ public static void main(String[] args) { Student stu=new Student("홍길동",100,20);//객체 생성하기 //stu.calc();//성적계산하기 stu.printData();//정보출력하기 } }
'JAVA 기초' 카테고리의 다른 글
7일차 : 오버로딩, 오버라이딩, 상속 (0) | 2012.08.11 |
---|---|
6일차 : 오버로딩, final, static메소드 (0) | 2012.08.11 |
4일차 : 배열 (0) | 2012.08.05 |
3일차 : while문, 다중 while문, do~while문 (0) | 2012.08.05 |
2일차 : 제어문, 반복제어문, switch문, 조건연산자(삼항연산자) (0) | 2012.07.29 |
배열의 총합 구하기
class Array01 { public static void main(String[] args) { //String[]은 배열이다 int[] a=new int[5]; //int는 동일한 타입의 배열만 선언해줄 수 있다 //배열의 각 방에 값넣기 a[0]=100; a[1]=80; a[2]=90; a[3]=70; a[4]=10; //배열의 각 요소 출력하기, 배열방번호가 0부터 시작됨에 유의! for(int i=0; i<=4; i++){ //시작번호는 무조건 0부터, 0부터 4까지~ System.out.println(a[i]); } //배열의 총합 구하기 int sum=0; for(int i=0; i<=4; i++){ sum=sum+a[i]; //sum=sum+a[i]; } System.out.println("배열합:"+sum); //배열은 아래처럼 초기화 할 수 있다. int[] b={20,30,40,50,60}; //미리 값이 정해져있는 경우 {}안에 이렇게 //b.length ==> 배열요소의 갯수를 얻어 온다. '여기서는 5 b.랭스보다 작다.' 여기까지 루프를 돌리면 된다. for(int i=0; i<b;length; i++){ System.out.println(b[i]); } } }
배열의 요소 중 가장 작은 값 구하기 / 배열의 요소 중 점수가 80점 이상인 학생의 수를 구해보세요.
class Array02 { public static void main(String[] args) { int[] a={77,90,80,40,100}; System.out.println("배열의 요소값들"); for(int i=0; i<a.length; i++){ //작거나 같다라고 표시하면 안됨. System.out.print(a[i]+" "); } int max=0; //배열의 요소 중 가장 큰 값 구하기 for(int i=0; i<a.length; i++){ //i가 랭스보다 작다. if(a[i]>max){ max=a[i]; //계속 큰값을 덮어씌워서 결과값 출력 } } System.out.println("중에 가장 높은 점수:"+max); //------------------------------------------------------------------------------------ //배열의 요소중 가장 작은값 구하기 int min=a[0]; //그냥 min=0으로 시작하면(21주석) for(int i=0; i<a.length; i++){ if(a[i]<min){ //a의 0번째가 min보다 작으므로 결과값이 0으로 출력된다. min=a[i]; //계속 작은값을 덮어씌워서 결과값 출력 } } System.out.println("가장 낮은 점수:"+min); //-------------------------------------------------------------------------------------- //배열의 요소 중 점수가 80점 이상인 학생의 수를 구해보세요. int cnt=0; //처음 카운트를 0으로 줬다가 cnt++;로 증가식을 넣어주면 된다. for(int i=0; i<a.length; i++){ if(a[i]>=80){ cnt++; } } System.out.println("80점 이상인 학생의 수:"+cnt); } }
배열로 i번 째 학생 점수 구하기
import java.util.Scanner; class Array03 { public static void main(String[] args) { Scanner scan=new Scanner (System.in); int[] a=new int[5]; for(int i=0; i<a.length; i++){ //i가 0일 때 첫 번째 학생점수를 입력하세요. i가 1일 때 두 번째... System.out.print((i+1) +"번째 학생점수:"); a[i]=scan.nextInt(); } System.out.println("저장된 학생점수:"); for(int i=0; i<a.length; i++){ System.out.print(a[i]+" "); } } }
1차원 배열에 문자열 저장하기
class Array04 { public static void main(String[] args) { //1차원 배열에 문자열 저장하기 String[] name={"홍길동","김철수","김영희","황진이"}; /* String[] a=new String[5]; a[0]="홍길동"; a[1]="김철수"; */ //배열출력하기 for(int i=0; i<name.length; i++){ System.out.println(name[i]); } } }
회원의 아이디를 미리 저장하고 사용 가능한 아이디인지, 해당 아이디가 존재하는지 확인
import java.util.Scanner; class Array05 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); String[] members={"song","kim","aaa","happy","arirang"}; //이 회원의 아이디가 있는지 boolean using=true; //사용할 수 있는 상태를 나타냄 System.out.println("아이디입력"); String id=scan.next(); for(int i=0; i<members.length; i++){ if(id.equals(members[i])){ //해당아이디가 존재하는 경우 using=false; //사용할 수 없는 경우엔 break; //브레이크로 빠져나간다 } } if(using) { System.out.println("사용가능한 아이디입니다."); }else{ System.out.println("이미 사용중인 아이디입니다."); } } }
2차원 배열 출력하기
//2차원배열 class Array06 { public static void main(String[] args) { int[][] a={{1,2,3}, {4,5,6}, {7,8,9}}; //2차원배열 출력하기 for(int i=0; i<3; i++){ //겉의 i는 '행'을 담당하고 for(int j=0; j<3; j++){ //안에 있는 j는 '열'을 담당한다. System.out.print(a[i][j]+" "); } System.out.println(); } } }
랜덤 - 난수를 발생시키는 객체 생성하기
import java.util.Random;
class MyRandom {
public static void main(String[] args) {
//난수를 발생시키는 객체 생성하기
Random rnd=new Random();
int[] a=new int[5];
for(int i=0; i<a.length; i++){
//a[i]=rnd.nextInt(10); //0부터 9사이의 난수 발생하기
a[i]=rnd.nextInt(10)+1; //0부터 10사이의 난수 발생하기
}
System.out.println("발생된 난수");
for(int i=0; i<a.length; i++){
System.out.println(a[i]+" ");
}
//오름차순 정렬하기
int tmp=0; //값을 교환할 때 사용하는 변수
for(int i=0; i<5; i++){ //i=비교 대상되는 기준점
for(int j=i+1; j<5; j++){ //j=기준점과 비교되는 첨자
if(a[i]>a[j]){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
System.out.println("오름차순 정렬 후");
for(int i=0; i<a.length; i++){
System.out.println(a[i]+" ");
}
}
}
Quiz01
/* 10명 학생의 점수를 입력받아 배열에 저장하고 점수의 총합과 평균, 최대점수, 최소점수를 구해보세요. */ import java.util.Scanner; class Quiz01{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); int[] a=new int[10]; int sum=0, max, min; double ave=0; //평균을 소수점까지 출력하고 싶을 때 더블로 따로 해준다 for(int i=0; i<a.length; i++){ System.out.print((i+1) +"번째 학생점수:"); a[i]=scan.nextInt(); //점수입력받아 배열에 저장 //13,14줄 바뀌면 안됨! sum=sum+a[i]; //배열합 구하기 } ave=sum/a.length; //배열 평균 규하기 max=min=a[0]; //최대값, 최소값 초기값 설정하기 //배열 선언후 0으로 초기화되므로 상단에 올리면 안된다!(자동으로 0으로 초기화) for(int i=0; i<a.length; i++){ if(a[i]>max) max=a[i]; //최대값 구하기 if(a[i]<min) min=a[i]; //최소값 구하기 } System.out.println("학생점수"); for(int i=0; i<a.length; i++){ System.out.println(a[i]); } System.out.println("점수의 총합:"+sum); System.out.println("점수의 평균:"+ave); System.out.println("가장 높은 점수:"+max); System.out.println("가장 낮은 점수점수:"+min); } }
Quiz02
/* 학생답안을 입력받아 학생의 점수를 출력하는 프로그램 작성 정답은 아래와 같고 문제 하나 당 10점씩 계산한다. int[] jungdap={3,2,1,2,3,4,4,3,2,1}; 예) 학생답안입력 3 2 3 1 1 1 2 3 2 1 점수: 50점 */ import java.util.Scanner; class Quiz02 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int [] jungdap={3,2,1,2,3,4,4,3,2,1}; int [] studap=new int[10]; int score=0; System.out.println("학생답안입력(10개)"); for(int i=0; i<studap.length; i++){ studap[i]=scan.nextInt(); //답안 입력받아 배열에 저장 if(studap[i]==jungdap[i]){ //입력받은 답이 정답과 같은지 비교 score+=10; //점수 10점 증가하기 } } System.out.println("학생점수:"+score); } }
Quiz03
/* 각행의 마지막 열에 행의 합을 구해서 저장해 보세요! [출력결과] 1 2 3 6 4 5 6 15 7 8 9 24 */ class Quiz03 { public static void main(String[] args) { int[][] a= {{1,2,3,0}, {4,5,6,0}, {7,8,9,0}}; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ a[i][3]=a[i][3]+a[i][j]; //3번째열의 행의합 구하기 } } //배열의 요소 출력하기 for(int i=0; i<3; i++){ //겉의 i는 '행'을 담당하고 for(int j=0; j<4; j++){ //안에 있는 j는 '열'을 담당한다. System.out.print(a[i][j]+" "); } System.out.println(); } } }
Quiz04
/* 5명학생의 국어, 영어, 수학점수를 입력받아 총점, 평균을 구하세요.(배열사용) int[][] a=new int[][]; [출력결과] 국어 영어 수학 총점 평균 100 100 100 300 100 80 90 100 270 90 ... */ import java.util.Scanner; class Quiz04 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int[][]a=new int[5][5]; String[] subject={"국어","영어","수학"}; //5명 학생의 국영수 점수 입력받아 배열에 저장하기 for(int i=0; i<5; i++){ //행 for(int j=0; j<3; j++){ //열 System.out.println((i+1)+"번 학생의"+subject[j]+"점수입력"); a[i][j]=scan.nextInt(); a[i][3]+=a[i][j]; //총점 구하기 } a[i][4]=a[i][3]/3; //평균 구하기 3번째 방에 총점이 있으니[4] } System.out.println("국어 영어 수학 총점 평균"); for(int i=0; i<5; i++){ System.out.println((i+1)+" "); //번호출력 for(int j=0; j<5; j++){ System.out.print(a[i][j]+" "); } System.out.println(); //개행하기 } } }
Quiz05
/* 영어 단어를 입력받아 해당하는 뜻을 출력하는 프로그램 작성 예) 영어단어:love love의 뜻: 사랑 찾는영어 단어가 없다면 '해당단어가 존재하지 않습니다.'라고 출력 */ import java.util.Scanner; class Quiz05{ public static void main(String[] args) { String[][] words={{"love","사랑"}, {"apple","사과"}, {"red","빨강"}}; Scanner scan=new Scanner(System.in); System.out.println("찾을영어단어를 입력하세요."); String str=scan.next(); //찾을 단어 입력받기 boolean find=false; for(int i=0; i<3; i++){ //각행의 0번째 열의 문자열과 비교한다. if(str.equals(words[i][0])){//문자열이 일치하면 //해당행의 1번째 열에 있는 단어의 뜻 출력 System.out.println(str + "의 뜻 :" + words[i][1]); find=true; //단어를 찾았다는 표시 break; //단어를 찾았으면 브레이크로 막아주고~ } } if(!find){ //해당단어를 찾지 못한 경우 System.out.println("해당 단어가 존재하지 않아요!"); } } }
[ 과 제 ]
'JAVA 기초' 카테고리의 다른 글
6일차 : 오버로딩, final, static메소드 (0) | 2012.08.11 |
---|---|
5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드 (0) | 2012.08.05 |
3일차 : while문, 다중 while문, do~while문 (0) | 2012.08.05 |
2일차 : 제어문, 반복제어문, switch문, 조건연산자(삼항연산자) (0) | 2012.07.29 |
1일차 : 변수, 기본 자료형, 강제 형 변환, 자바의 연산자 (0) | 2012.07.29 |
3일차 : while문, 다중 while문, do~while문
for문으로 별 찍기
/* for문을 사용해서 아래처럼 출력해 보세요. ***** **** *** ** * */ class MyFor01 { public static void main(String[] args) { for(int i=1;i<=5;i++){ for(int j=1;j<=i; j++){ System.out.print("*"); } System.out.println(); //별 출력 } System.out.println("=========================="); //역으로 별 출력 for(int i=5;i>=1;i--){ for(int j=1;j<=i;j++){ System.out.print("*"); } System.out.println(); } } }
while문을 이용하여 1부터 100까지의 합 구하기
class MyWhile01{ public static void main(String[] args) { //while문 사용해서 1부터 100까지 합 구하기 int i=1, sum=0; while(i<=100){ //조건식 sum+=i; i++; //증감식 } System.out.println("1부터100까지합:"+sum); } }
다중 while문을 이용하여 구구단 만들기
import java.util.Scanner; class MyWhile02 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); while(true){//무한루프 //겉의 화일. true이면 무한루프 System.out.println("단입력[종료:0]"); int dan=scan.nextInt(); if(dan==0){ //0이 아니면 그 밑의 코드를 출력함 break; //루프를 강제로 빠져나감(while문을 종료) //switch, while, for에서만 break사용가능 } if(dan>9 || dan<2){ //9보다 크거나 2보다 작으면---------------▼ ex)10, -1 등 System.out.println("2에서 9사이의 수 입력"); continue;//초기의 조건절로 분기함(여기서는 15번라인) "단입력[종료:0]뜸 } int i=1; //해당구구단 출력 while(i<=9){ System.out.println(dan+"*"+i+"="+dan*i); i++; //다시 위로 올라가 단을 입력한다 } } } }
do~while문을 이용하여 1부터 100까지의 합 구하기
class MyDoWhile01{ public static void main(String[] args) { int i=1, sum=0; //3 do{ sum+=i; i++; //1. i++이 일단 2로 증가한 후 }while(i<=100); //2. 조건식을 본다. 그리고 3으로 올라감 System.out.println("1부터 100까지합:"+sum); } }
do~while문을 이용하여 구구단 만들기
import java.util.Scanner; class MyDoWhile02 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int dan=0; do{ System.out.println("구구단입력(2이에서 9사이의 수 입력)"); dan=scan.nextInt(); }while(!(dan>=2 && dan<=9)); //참이지만 2~9가 아니면 loop를 계속 돌게(재입력) !(not)을 앞에 붙여줌. for(int i=1;i<=9;i++){ System.out.println(dan+"*"+ i+"="+dan*i); } } }
퀴즈 1
/* [2단] 2*1=2 2*2=4 ............... 2*9=18 [3단] 3*1=3 3*2=6 ............... 3*9=27 ... [9단] 9*1=9 9*2=18 .............. 9*9=81 ========================================= 2*1=2 3*1=3 4*1=4 ............... 9*1=9 2*2=4 3*2=6 4*2=8 ............... 9*2=18 ... 2*9=18 .......................... 9*9=81 */ class Quiz01{ public static void main(String[] args) { System.out.println("구구단을 출력하기"); for(int i=2; i<=9; i++){ System.out.print("["+i+"]단 "); for(int j=1; j<=9; j++){ int gob=i*j; System.out.print(i+"*"+j+"="+gob+" "); } System.out.println(); } System.out.println("=================================================="); System.out.println("구구단 세로로 출력하기"); for(int i=1; i<=9; i++){ for(int j=2; j<=9; j++){ System.out.print(j+"*"+i+"="+(i*j)+" "); } System.out.println(); } } }
퀴즈 2
/* while문을 사용해서 1부터 50까지 수중 3의 배수를 출력하고 3의 배수합도 구해서 출력해 보세요. */ class Quiz02 { public static void main(String[] args) { System.out.println("1~50까지의 수중 3의 배수를 출력하고 합도 구하여라."); int i=3, sum=0; while(i<=50){ System.out.println(i+" "); sum+=i; //3의 배수합 구하기 i=i+3; //3씩 증가하기 } System.out.println(); System.out.println("3의 배수합"+sum); } }
퀴즈 3
/* 1. while문을 사용해서 알파벳 대문자를 출력해 보세요. [A:65] [출력결과] ABCDE...Z 2. 단 입력받아 구구단을 출력해 보세요.(shile사용해서) */ class Quiz03 { public static void main(String[] args) { System.out.println("알파벳 대문자 출력하기"); char ch='A'; while(ch<='Z'){ System.out.print(ch++); } System.out.println(); int a=65; while(a<=90){ System.out.print((char)a); a++; } } }
퀴즈 4
/* 단 입력받아 구구단을 출력해 보세요. */ import java.util.Scanner; class Quiz04 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("단입력"); int num=scan.nextInt(); int i=1; while(i<=9){ int gob=num*i; System.out.println(num + "*" + i + "=" + gob); i++; } } }
퀴즈 5
/* 다중 while 사용해서 아래처럼 구구단 출력해 보세요~ [2단] 2*1=2 2*2=4 .............. 2*9=18 [3단] 3*1=3 3*2=6 .............. 3*9=27 ... [9단] 9*1=9 9*2=18 ............. 9*9=81 */ class Quiz05 { public static void main(String[] args) { System.out.println("구구단 출력하기"); int i=2, j=1; //i=단 출력 while(i<=9){ System.out.print("["+i+"단] "); while(j<=9){ System.out.print(i+"*"+j+"="+i*j+" "); j++; } System.out.println(); //한 단 출력하고 개행하기 j=1; //j를 1로 다시 초기화하기(1부터 곱해져야 하므로) i++; //단 증가하기 } } }
퀴즈 6
//문제:1부터 100까지수중 3의 배수합 구하고 3의 배수 출력하기 ==>do~while사용 class Quiz06 { public static void main(String[] args) { int i=3, sum=0; do{ sum+=i;//3의 배수합구하기 System.out.println(i+" "); i=i+3; //3씩 증가하기 }while(i<=100); System.out.println("\n3의 배수합"+sum); //\n는 줄을 바꿔줄 때 } } /*
i=i+3; sum+=i; 이렇게 위치를 바꾸면 결과값이 다르게 나타난다. System.out.println(i+" "); 의 i값이 3에서 6씩 증가하게 되므로. */
퀴즈 7
/* 아이디와 비밀번호를 입력받아 맞으면 환영합니다!, 틀리면 아이디 또는 비밀번호가 틀려요! 라고 출력해 보세요. 단 입력기회는 3번이고 모두 틀리면 더이상 접속할 수 없습니다. 라고 출력하세요 */ import java.util.Scanner; class Quiz07{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); for(int i=1;i<=3;i++){ //3번의 loop를 돌아라 i가 1일 때 한 번, i가 2일 때 2번 돌지~ System.out.println("아이디를 입력하세요."); String id=scan.next(); System.out.println("패스워드를 입력하세요."); String pwd=scan.next(); //패스워드는 스트링타입으로 선언해준다 if(id.equals("choi") && pwd.equals("1234")){ System.out.println(id + "님 환영합니다."); break; //아이디와 비밀번호가 맞았을 때 브레이크로 잡아준다. 없으면 맞아도 다시 위(12~)로 올라가 반복한다. }else{ //틀린 경우 System.out.println("아이디 또는 비밀번호가 틀립니다."); } if(i==3){ //3번 모두 틀린 경우 System.out.println("더이상 접속할 수 없습니다"); System.exit(0) ;//프로그램을 강제로 종료하기 } } System.out.println("회원님 ...~~~~어쩌구 저쩌구..~"); } }
[ 과 제 ]
'JAVA 기초' 카테고리의 다른 글
5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드 (0) | 2012.08.05 |
---|---|
4일차 : 배열 (0) | 2012.08.05 |
2일차 : 제어문, 반복제어문, switch문, 조건연산자(삼항연산자) (0) | 2012.07.29 |
1일차 : 변수, 기본 자료형, 강제 형 변환, 자바의 연산자 (0) | 2012.07.29 |
요약 정리 1~15일차 (0) | 2012.07.29 |
2일차 : 제어문, 반복제어문, switch문, 조건연산자(삼항연산자)
if문을 이용. 임의의 값을 입력받아 3의 배수 구하기
어떤 수가 더 큰지 구하기import java.util.Scanner; class MyIF01 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("임의의 정수입력"); int num=scan.nextInt(); if(num%3==0){ // {}(불럭)은 어디서부터 어디까지 문장을 실행 해야하는지 구분하기 위해 꼭 필요하다. System.out.println("입력된수는 3의 배수이군요"); //3의 배수가 아닌 경우 이 문장은 출력되지 않는다. } System.out.println("입력된 수:"+num); } }
class MyIF02 { public static void main(String[] args) { int a=10, b=20; if(a>b){ System.out.println(a + "이(가) 더 큽니다."); }else{ //조건이 거짓일 경우 b가 나타난다. System.out.println(b + "이(가) 더 큽니다."); } } }
equals를 사용하여 아이디와 비밀번호를 입력받아 비교
import java.util.Scanner; class MyIF03 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("아이디입력"); String id=scan.next();//키보드로 문자열입력받기 //next자체는 정수값을 입력받을 때 사용 System.out.println("비밀번호입력"); String pwd=scan.next(); //패스워드는 스트링타입으로 선언해준다 //문자열을 비교할때는 equals메소드를 사용한다.(기억!) //==을 사용하면 안되는 이유는 될때가 있고 안될때가 있기 때문 무조건 이퀄즈사용! if(id.equals("song") && pwd.equals("1234")){ //두개의 조건은 and(&&)연산자로 묶어줘야 한다. System.out.println(id + "님 환영합니다."); }else{ System.out.println("아이디 또는 비밀번호가 일치하지 않습니다."); } } }
if문 이용해서 어떤 수가 더 큰지, 혹은 수가 같은지 비교
조건연산자(삼항연산자)이용하여 수 비교class MyIF04{ public static void main(String[] args) { int a=20, b=20; if(a>b){ System.out.println(a +"가 더 큽니다."); }else if(a<b){ System.out.println(b +"가 더 큽니다."); }else{ System.out.println("두수는 같습니다."); } } }
class MyTest01 { public static void main(String[] args) { int a=10, b=20, c=0; //a가 b보다 크다 :참 연산결과 : 앞에있는 a가 나오게 된다. c=(a>b)?a:b; //무조건 큰 값이 c에 들어가게 된다. 이 경우에는 뒤의 있는 b가 출력이 된다. System.out.println("두수중큰값은:"+c+"입니다."); } }
반복제어문 - 1부터 100가지 합
class MyFor01{ public static void main(String[] args) { int i=0; //무조건 0을 주지 않아도 실행은 된다. //1부터100까지출력하기 for(i=1;i<=100;i++){ //for문은 세미콜론(;)을 찍지 않는다. 세미콜론은 반복을 막는다. System.out.print(i+" "); } System.out.println();//개행하기 int sum=0; //무조건 초기값으로 0을 주고 시작해야 한다. //1부터 100까지 합 구하기 for(i=1;i<=100;i++){ sum+=i; //sum=sum+i; } System.out.println("1부터 100까지합:"+sum); } }
/* 4. for문을 사용해서 1부터100까지 수중 짝수합,홀수합을 구해 보세요. */ class MyEx04 { public static void main(String[] args) { int i = 0,a=0,b=0; for(i =1; i <101; i++){ if(i%2==0){ a+=i; }else{ b+=i; } } System.out.println("홀수의 합은 : "+b); System.out.println("짝수의 합은 : "+a); } }
/* 5. for문을 사용해서 1부터100까지 수중 출력하세요. 단 한줄에 10개씩 출력한다. 예) 1 2 3 4 5 6 7 8 9 10 11 12 13 14... 20 ... 91 92 ............ 100 */ class MyEx05 { public static void main(String[] args) { int i; for(i = 1; i <101; i++){ for(int j = 1; j<11; j++){ System.out.print(i+" "); } System.out.println(); } } }
/* 6. 임의의 수를 입력받아 for문을 사용해서 팩토리얼값을 구해 보세요. 참고 : 4의 팩토리얼값은 4*3*2*1 이다. 예) 정수입력:4 4!=24 */ import java.util.Scanner; class MyEx06 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("입력"); int i = scan.nextInt(); int k=1; for(int j = 1; j<=i; j++){ k=k*j; } System.out.println(k); } }
Quiz01
Quiz02//a변수가 짝수인지 홀수인지 조건연산자를 사용해서 구해 보세요. class Quiz01 { public static void main(String[] args) { int a=5; String c=(a%2==0)?"짝수":"홀수"; //문자열은 큰따옴표로 묶어줘야 한다. 문자열을 사용할 때는 스트링으로 묶어준다. System.out.println(a+"은(는) " + c +"입니다."); } }
/* 국어,영어 점수입력받아 학점구하기 평균이 90이상 학점 A 평균이 80이상 학점 B 평균이 70이상 학점 C 평균이 60이상 학점 D 평균이 60미만 학점 F [[출력결과]] 국어:90,영어:80 학점:B */ import java.util.Scanner; class Quiz02{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("국어점수입력"); int kor=scan.nextInt(); System.out.println("영어점수입력"); int eng=scan.nextInt(); double ave=(kor+eng)/2.0; char ch=' '; if(ave>=90){ ch='A'; }else if(ave>=80){ //else if(ave<90 && ave>=80) ch='B'; }else if(ave>=70){ ch='C'; }else if(ave>=60){ ch='D'; }else{ ch='F'; } System.out.println("국어점수:"+kor +",영어점수:"+eng); System.out.println("평균:"+ave +",학점:"+ch); } }Quiz03
/* 1. 국어, 영어점수를 입력받아 각 과목의 점수가 40이상이고 평균이 60이상이면 합격 아니면 불합격을 출력해 보세요. 2. 임의의 수를 입력받아 절대값을 구해 보세요! 예) -10 -10의 절대값:10 */ import java.util.Scanner; class Quiz03{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("국어점수입력"); int kor=scan.nextInt(); System.out.println("영어점수입력"); int eng=scan.nextInt(); double ave=(kor+eng)/2.0; System.out.println("평균은:" +ave); if(kor>=40 && eng>=40 && ave>60){ System.out.println("합격입니다."); }else if(kor<40 && eng<40 && ave<60){ System.out.println("불합격입니다."); } //문제2 int a=-10; int abs=a; if(a<0){ abs=-a; } System.out.println(a+"의 절대값은 " +abs); } }
Quiz04
class Quiz04 { public static void main(String[] args) { System.out.println("임의의 수를 입력하세요."); int num=scan.nextInt(); if(num<0){ System.out.println(num+"의 절대값"+-num); } else{ System.out.println(num+"의 절대값"+num); } } }
Quiz05
/* 국어, 영어 점수입력받아 학점구하기 ==> switch사용해서 평균이 90이상 학점 A 평균이 80이상 학점 B 평균이 70이상 학점 C 평균이 60이상 학점 D 평균이 60미만 학점 F */ import java.util.Scanner; class Quiz05 { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("국어점수입력"); int kor=scan.nextInt(); System.out.println("영어점수입력"); int eng=scan.nextInt(); int ave=(kor+eng)/2; char ch=' '; switch(ave/10){ case 10: case 9:ch='A';break; //99를 10으로 나누어주면 된다. case 8:ch='B';break; case 7:ch='C';break; case 6:ch='D';break; default:ch='F'; } System.out.println("국어점수:"+kor +",영어점수:"+eng); System.out.println("평균:"+ave +",학점:"+ch); } }
Quiz06
/* for문을 사용해서 1부터 50까지 수 중 5의 배수를 출력하고 5의 배수의 합도 구해보세요. [결과] 5 10 15 20 ... 50 5의 배수합:xx */ class Quiz06{ public static void main(String[] args) { int sum=0,i; for(i=5;i<=50;i=i+5){ sum+=i;//5의 배수합 구하기 System.out.print(i+" ");//5의 배수 출력하기 } System.out.println();//개행하기 System.out.println("5의 배수합:"+sum); } }
Quiz07
/* 단을 입력받아 for문을 사용해서 해당 구구단을 출력해 보세요. 예) 단입력:3 3*1=3 3*2=6 ... 3*9=27 */ import java.util.Scanner; class Quiz06{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("단입력"); int dan=scan.nextInt(); for(int i=1;i<=9;i++){ int gob=dan*i;//지역변수..블록{}안에서만 사용가능 System.out.println(dan +"*"+ i +"=" + gob); } } }
Quiz08
/* for문을 사용해서 5명의 점수를 입력받고 다섯명 점수의 총합구해보세요. 예) 점수입력:100 점수입력:30 ... 입력된점수총합:xx */ import java.util.Scanner; class Quiz08{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); int sum=0;//점수총합저장 for(int i=1;i<=5;i++){//5번 반복하기 System.out.println(i+"의 점수를 입력하세요."); int num=scan.nextInt();//점수입력받기 sum=sum+num;//총합구하기 } System.out.println("점수의 총합은:"+sum); } }
[ 과 제 ]
'JAVA 기초' 카테고리의 다른 글
5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드 (0) | 2012.08.05 |
---|---|
4일차 : 배열 (0) | 2012.08.05 |
3일차 : while문, 다중 while문, do~while문 (0) | 2012.08.05 |
1일차 : 변수, 기본 자료형, 강제 형 변환, 자바의 연산자 (0) | 2012.07.29 |
요약 정리 1~15일차 (0) | 2012.07.29 |
1일차 : 변수, 기본 자료형, 강제 형 변환, 자바의 연산자
class MyTest02{ public static void main(String[] args){ int a=10; int b=20; int c=a+b; System.out.println("두수합:"+c); double d=3.4; System.out.println("d:"+d); float e=3.14F;// 3.14f==>3.14를 float형 상수로 바꿈 System.out.println("e"+e); char ch='한'; System.out.println("ch:"+ch); String name="홍길동";//문자열을 저장할때는 string이라는 클래스를 사용 System.out.println("name:"+name); boolean f=10>1; System.out.println("f:"+f); } }
강제 형 변환
자바의 연산자class MyTest03{ public static void main(String[] args) { int a=100; System.out.println("a:"+a); byte b=(byte)a; System.out.println("b:"+b); char c='A'; System.out.println("c:"+c +" 숫자값:"+ (int)c); int d=66; System.out.println("d:"+d +", 문자값:"+ (char)d); boolean e='A'<'B'; System.out.println("e:"+e); long f=12345678987543321L;//롱형상수로 변환시키기 위해서는 끝에 'L'자(대/소구분안함)를 붙여줘야 함. System.out.println("f:"+f); int x=10, y=20; System.out.println("xy합은:"+(x+y)+"입니다.");//+x+y+: 결과값 xy합은:1020입니다. --문자열에다가 숫자를 더하여 문자열로 출력이 된다. System.out.println(x+y+"은 x와 y의 합입니다.");//결과값 30은 x와 y의 합입니다.--숫자끼리 연산하기 때문에 30이 출력된다. double g=2.4+10;//실수와 정수와 연산하면 결과타입은 실수이다.(데이터가 큰값을 따라가므로 예를 들어 byte와 int를 연산하게 되면 결과는 int로 나온다.) System.out.println("g:"+g); } }
변수 값 증가class MyTest04 { public static void main(String[] args) { int a=10; int b=a%4;// a를 4로 나눈 나머지값 System.out.println("b:"+b);//b:2 System.out.println("a+b:"+ (a+b));//a+b:12 System.out.println("a*b:"+ (a*b));//a*b:20 System.out.println("a/b:"+ (a/b));//a/b:5 System.out.println("10/4:"+ ((float)10/4));//10/4:2 =int는 소수점을 버리므로 2로 결과가 나온다.안에 float를 넣어주거나 10.0으로 써주면 소수점이 포함된다. } }
키보드로 데이터를 입력받아 면접점수, 영어점수를 입력하고 합격, 불합격 출력class MyTest05 { public static void main(String[] args) { int a=10, b=5, c=0, d=0; c=a++ + 5; //a값을 증가하지 않고 연산 c=10+5 ,a=11 d=--b + a+ 10; //b값을 감소하고 연산 System.out.println("a:"+a); //a=11 System.out.println("b:"+b); //b=4 System.out.println("c:"+c); //c=15 System.out.println("d:"+d); //d=4+11+10 int e=5, f=5,g=4; int x=++e + f + g--; //x=6+5+4 int y= e + g + ++f; //y=6+3+6 //e 는 x의 ++e를 그대로 따라온다. System.out.println("x:"+x); //x=15 System.out.println("y:"+y); //y=15 /* [결과] c:\java>java MyTest05 a:11 b:4 c:15 d:25 x:15 y:15 */ } }
import java.util.Scanner; class MyTest06 { public static void main(String[] args) { //키보드로부터 데이터를 입력받기 위한 객체 선언 Scanner scan=new Scanner(System.in); //System.in : 키보드를 의미 scan=변수 System.out.println("면접점수입력"); int interview=scan.nextInt();//키보드로 정수 입력받기 System.out.println("영어점수입력"); int eng=scan.nextInt(); System.out.println("면접점수:"+interview); System.out.println("영어점수:"+eng); if(interview>=80 && eng>=70){ //조건이 참이면 수행 System.out.println("당신은 합격입니다."); }else{ //조건이 거짓이면 수행 System.out.println("당신은 불합격입니다."); } } }
비트 값 계산
class MyTest07 { public static void main(String[] args) { int a=7,b=5; int c=a|b; //a와 b에 대응되는 비트값이 모두 거짓이면 거짓 int d=a&b; //a와 b에 대응되는 비트값이 모두 참이면 참 int e=a^b; //a와 b에 대응되는 비트값이 다르면 참 System.out.println("c:"+c); //c:7 System.out.println("d:"+d); //d:5 System.out.println("e:"+e); //e:2 } }쉬프트 연산자
class MyTest08 { public static void main(String[] args) { int a=7; int c=a<<2; //a를 좌측방향으로 2비트 옮겨서 계산 int d=a>>2; //a를 우측방향으로 2비트 옮겨서 계산 System.out.println("c:"+c +",d:"+d); } }대입 연산자
class MyTest09 { public static void main(String[] args) { int a=10, b=5, c=10, d=0, e=2; c+=a; //c=c+a의 의미 c=10+10=20 d-=b; //d=d-b; d=0-5=-5 e*=10; //e=e*10; 2*10=20 System.out.println("c:"+c); //c:20 System.out.println("d:"+d); //d:-5 System.out.println("e:"+e); //e:20 } }퀴즈01
/* 자신의 이름과 나이, 신장을 변수에 저장하고 변수에 저장된 값들을 화면에 출력해 보세요! */ class Quiz01 { public static void main(String[] args) { String name="최소희"; int age=26; float height=153.2f; System.out.println("이름:"+name); System.out.println("나이:"+age+"세"); System.out.println("신장:"+height+"cm"); } }
두 수의 합 구하기
class Test02 { public static void main(String[] args) { int a=20; int b=50; int c=a+b; System.out.println("두수의 합:"+c); double d=5.8; System.out.println("d:"+d); float e=5.18F; System.out.println("e:"+e); char ch='최'; System.out.println("ch:"+ch); String name ="최소희"; System.out.println("name:"+name); boolean f=15<5; System.out.println("f:"+f); } }
[ 과 제 ]
'JAVA 기초' 카테고리의 다른 글
5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드 (0) | 2012.08.05 |
---|---|
4일차 : 배열 (0) | 2012.08.05 |
3일차 : while문, 다중 while문, do~while문 (0) | 2012.08.05 |
2일차 : 제어문, 반복제어문, switch문, 조건연산자(삼항연산자) (0) | 2012.07.29 |
요약 정리 1~15일차 (0) | 2012.07.29 |
요약 정리 1~15일차
변수
임의의 값을 저장하기 위한 메모리상의 저장공간
선언: 자료형 변수명; (int a=10;)
기본자료형
정수형 byte(1byte), short(2byte), int(4byte), long(8byte)
실수형 float(4byte), double(8byte)
문자형 char(2byte), char='한'; 문자열 저장시 String타입 사용
논리형 boolean(1byte: true,false)
강제형 변환Type Casting
데이터타입을 일시적으로 강제로 변환함.
(바꿀자료형) 변수 or 상수
자바의 연산자
1. 산술연산자 + - * / % (%:나머지 연산자)
2. 단항연산자 ++ --
3. 관계연산자 >, >=, <, <=, ==(같다), !=(같지 않다)
4. 논리연산자
i(not): 거짓이면 거짓
&&(and): 참이면 참
||(or) 대응되는값이 모두 거짓이면 거짓
5. 비트논리연산자 ~ & | ^
6. 쉬프트연산자 <<, >>
7. 대입연산자 += -= *= &=, .....
a++ 연산식 끝난 후 값 증가
++a 연산식 자체에서 값 증가
b-- 연산식이 끝난 후 값 감소
--b 연산식 자체에서 값 감소
제어문
질행의 흐름을 조건을 주어서 제어하거나 조건이 만족하지 않을때까지 문장을 반복수행하도록 흐름을 제어하는 구조
반복제어문
for문: 조건이 거짓일때까지 문장을 반복적으로 수행
for(초기식; 조건식; 증감식){
반복실행문장;
for(초기식; 조건식; 증감식){
for(초기식; 조건식; 증감식){
반복실행문장;
switch문
선택적으로 문장을 수행하고자 할 때
case 1: 실행문장; break;
default 종료(일치되는 값이 없을 때)
조건연산자(삼항연산자)
(조건식)?피연산자1:피연산자2 (참1:거짓2)
while문
조건이 거짓일때까지 반복해서 문장 수행
조건식의 연산결과가 참일 때 수행될 문장들을 적는다.
while(조건식){
반복실행문장;
다중 while문
while(조건식){
...
while(조건식){
do~while문
do{
반복문장;
...
}while(조건식);
조건이 거짓일때까지 문장을 반복적으로 수행하고, 먼저 수행 후 조건 검사
배열
같은 자료형의 변수가 여러개 필요한 경우 연속적인 공간에 데이터 나열, 저장하고 첨자로 구분하는 자료구조
1차원배열
자료형[] 배열명=new 자료형[크기];(int[] a=new int[5];)
2차원 배열
자료형[] 배열명=new 자료형[행첨자][열첨자] (int[][] a=new int[3][5]) 15개 방을 만듦.
객체지향 프로그래밍
모든 작업을 class로 만들어서 작업
클래스
class 클래스명{
멤버변수;
..
멤버메소드();
...
클래스명 객체명=new 클래스명();
private: 은닉화, 캡슐화(안에 숨겨놓음) 메소드 사용. 클래스안에서만 사용하도록 할 때 사용.
MyRect rr=new MyRect(); : 객체 생성하기. MyRect는 클래스명
this.x=x; : 멤버변수로 따라가게 하기 위해 this사용
생성자
객체가 생성될 때(new할 때) [자동]으로 호출되는 메소드
클래스명과 동일한 이름으로 만들고 리턴값x, 리턴타입을 적지 않음(void쓰면 생성자 역할x)
일반적으로 멤버변수값 초기화 목적으로 생성자 만들고 파라미터를 여러개 줄 수 있다.
사용자 정의 메소드
어떠한 작업이 자주 반복되거나 하나의 작업에서 수행할 코드가 많을 대 사용자 정의 메소드를 만든다
타입과 개수가 일치해야 한다.
리턴형 메소드명(매개변수,..){
실행문장;
...
return 리턴값; (메인메소드로 리턴)
final
변수를 상수화. 값 변경 못함(final int MAX=10;)
변수 선언 동시에 초기화 or 생성자에서만 초기화 가능
일반적으로 변수와 구분하기 위해 대문자로 선언
변수앞에 final : 값 변경 x
class앞에 final: 상속 x
메소드 앞에 final : 자식클래스에서 오버라이딩 x
Static 메소드
객체 생성 하지 않고 [클래스 명]으로 호출
일반멤버변수(인스턴스 변수, int a;)에 접근 X, static멤버변수(클래스변수)만 접근 O
독립적인 작업을 하는 메소드를 static메소드로 만든다
static멤버변수(클래스 변수)
클래스가 로딩되는 순간 만들어진다. 오로지 하나만 만들어지고 모든 객체가 공유해서 사용.
class MyTest02 //로딩되는 순간
static int b; //객체의 수와 상관없이 하나만 생성
오버로딩
같은 이름의 메소드를 중복해서 정의. 이름은 동일 매개변수 타입or개수는 달라야 한다.
상속
기존의 클래스(부모클래스)를 재사용하여 새로운 기능 추가, 수정(오버라이딩)
class 클래스명 extends(확장) 부모클래스{ ->클래스 상속받기
...
부모클래스==>super클래스
자식클래스==>sub클래스, 파생클래스
접근지정자
private : 자신의 클래스에서만 접근 가능한 멤버
default(접근지정자가 없는 경우) : (같은 패키지+자신의클래스)에서만 접근 가능한 멤버
protected : (같은 패키지+자신의클래스+자식클래스)에서 접근 가능한 멤버
public : 어디서나 가능
자식 객체가 생성될 때 부모객체 생성
부모 클래스가 생성자를 갖는 경우
부모 생성자에서 파라미터를 받아야 하는 경우 생성자에서 반드시 super()로 부모 생성자 호출하여
파라미터를 전송해야 하며 super는 자식생성자 첫라인에 반드시 와야함.
오버라이딩 Overriding - 수정, 덮어씌우기
부모클래스의 메소드를 자식클래스에서 수정
메소드 명과 파라미터의 개수, 타입, 리턴형 모두 일치해야 하고 접근지정자의 범위는 최소한 같거나 넓어야 함.
클래스 간의 형변환
상속관계에서는 형 변환 가능. 부모클래스는 자식클래스를 참조할 수 있지만 자식클래스에서 추가된 멤버는 참조X
But, 오버라이딩 된 멤버는 참조 가능.
자식클래스가 부모 클래스 참조 하려면 무조건 형 변환!
this
객체 자신을 의미(this는 객체 자신의 주소 값)
사용이유 : 멤버변수이름과 매개변수 이름이 같을 대 멤버변수 앞에 this붙여 구분
다른 생성자 호출, 객체 자신을 파라미터로 전달할 때
추상클래스
추상메소드를 포함하는 클래스(추상메소드 하나만 있어도 추상클래스)
객체(new)생상 X, 상속의 목적으로만 만듬. abstract
abstract class MyShape{
추상 메소드
body(몸체)를 갖지 않는 메소드. 자식클래스에서 반드시 오버라이딩.
메소드 명 앞에 abstract 붙이고 body를 만들지않음
abstract void print();
자식클래스에서 반드시 해당 메소드를 가져야 하는 경우 추상메소드를 이용.
인터페이스
자식클래스들이 가져야 할 기능들의 목록을 가짐(메뉴판 역할) 상수와 추상메소드로만 이루어짐(빈껍데기)
객체 생성 x, 자식 클래스 참조 가능. 뼈대 역할. 다중상속 가능. 유지보수 수월.
interface 인터페이스명
상수;
...
추상메소드;
...
인터페이스로 상속받을 때 : implements
Object 클래스
모든 클래스의 최상휘 클래스. 자바의 모든 클래스는 Object클래스를 상속받음.
ArrayList
여러 객체를 배열처럼 관리해주는 클래스. 동적인 크기의 배열을 갖는다.
메소드
public boolean add(Object e)=>요소 저장
public Object get(in index) => 요소 꺼냄
String 클래스
문자열 저장하고 관리하는 클래스
String과 String Builder차이
String클래스 : 불면의 클래스. 문자열 조작해서 변경할 때 원본 문자열을 변경x 복사본 생성해서 문자열 조작.
복사본 생성으로 메모리를 많이 차지
String Buffer : 스레드의 동기화 지원 => 메모리 많이 차지, 속도 느림, 멀티스레드 환경에서 안전
String Builder : 스레드 동기화 지원안함 => 메모리 적제 차지, 속도 빠름. 멀티스레드 환경에서 불안전
Wrapper클래스
자바의 기본자료형(int, byte, double,...)를 클래스로 포장해 놓는 것. 기본 자료형과 관련된 속성과 메소드 갖음.
확장for문(jdk 5.0이상)
for(저장변수 : 배열 또는 컬렉션 객체{
반복문;
...
컬렉션 객체에 저장된 요소를 하나씩 자동으로 꺼내와 저장변수에 저장, 반복문 수행.
Vector 클래스
객체를 배열처럼 관리해주는 클래스, ArrayList와 유사, Vector는 스데르의 동기화 지원
map
Key와 Value가 한쌍으로 저장되는 자료 구조. key는 중복될 수 없으며 value눈 중복 가능
제네릭(jdk1.5이상)
컬렉션 클래스에 특정타입의 객체만 저장하도록 지정하는 것
컬렉션에 저장된 객체를 꺼내 올 때 형변환으 없애라.
Calendar 클래스
날짜와 시간에 대한 정보를 갖는 클래스
추상클래스. new생성 x, But 객체를 얻어와 사용 가능.
예외(Exception)처리
- 예외 : 프로그램 실행 도중에 예기치 못하게 발생되는 경미한 에러
- 예외처리 : 예외가 발생되었을 때 이에 대한 적절한 처리를 하는 것
- 형식
try{
예외가 발생될 수 있는 실행문장;
...
}catch(예외타입1 변수명){
예외가 발생되었을 때의 적절한 처리
}catch(예외타입2 변수명){
예외가 발생되었을 때의 적절한 처리
}finally{
예외가 발생되든 발생되지 않든 무조건 실행해야 할 문장;
..
}
==> 예외가 발생될 수 있는 문장을 try블록으로 묶고 catch절에서 예외가
발생되었을 때에 해당하는 적절한 처리를 한다.
- 자바의 모든 예외는 Exception의 자식 클래스이므로 Exception은 모든 예외를 처리 할 수 있다.
- catch절에서 Exception은 모든 예외를 처리 할 수는 있으나 자식예외보다 먼저 올 수 없다.
예외 처리 방법
- 자바에서는 예외처리 방법이 두 가지가 있다. 예외가 발생될 수 있는 문장을
try~catch로 직접 처리 하거나, 자신이 직접 처리하지 않고 throws로 떠넘기는
방법이 있다. throws로 떠넘길 때는 이를 호출하는 곳에서 try~catch로 처리해야 한다.
강제로 예외 발생시키기
형식
throw 예외객체;
문법적 오류는 없지만(컴파일 가능) 실행 시 문제가 되는 경우 강제로 예외 발생
자바의 IO(InputOutput)
- 데이터를 저장하거나 읽어오는 작업을 IO라고 함
- 자바에서는 IO를 스트림을 이용해서 처리함
## 스트림
- 데이터의 흐름
- 기본 처리단위는 1바이트
- 스트림의 종류
(1) 바이트 단위
1) 1바이트처리 스트림
- 데이터를 1바이트 단위로 처리 함
- ~InputStream, ~OutputStream
2) 2바이트처리 스트림
- 데이터를 2바이트 단위로 처리 함(오로지 문자를 처리하기 위해 만들어짐)
- ~Reader, ~Writer
3 기능별
- Node스트림
: 가장 근원이 되는 스트림
- Filter스트림
: Node스트림을 포장해서 더 많은 기능을 갖도록 만들어진 스트림
패키지 만들기
cmd>javac -d 경로 클래스명.java (-d : 패키지를 만들겠다는 의미)
- 패키지 : 관련성 있는 클래스를 하나의 묶음으로 만드는 것
- 만드는 방법
package 패키지 경로1.경로2;
...
import ...
class 클래스명 {
..
}
- 사용하기
import 패키지명.클래스명;
...
File클래스
파일 또는 디렉토리에 관련된 정보를 갖는 클래스
내부 클래스
- 클래스 안에 클래스가 포함되는 경우
- 사용 이유
코드의 복잡성을 줄일 수 있다.
private멤버를 내부클래스에서 접근할 수 있다.
-종류
1) 인스턴스 내부 클래스 : 멤버변수와 같은 레벨로 선언
2) 로컬 내부 클래스 : 메소드 안에서 선언
3) static 내부 클래스 : static멤버처럼 사용. 내부 클래스 멤버변수로 static이 있다면
static내부 클래스로 만들어 져야 한다.
4) 익명의 내부 클래스 : 이름이 없는 내부 클래스. 한 번만 쓰고 버려질 클래스인 경우에
익명의 내부 클래스로 만든다.
객체의 직렬화
- 객체를 바이트 단위로 일렬로 나열하는 것
- 직렬화가 가능하도록 하려면 Sserializable인터페이스를 상속받는다.
- 멤버가 transient인 경우, static인 경우는 직렬화가 되지 않는다.
#역직렬화
- 바이트 단위로 나열된 데이터를 다시 조합해 객체로 만드는 것
Stream
ObjectOutputStream
==> 객체를 출력하기 위한 스트림
ObjectInputStream
==> 객체를 읽어오기 위한 스트림
접근 지정자
- private : 같은 클래스 안에서만 접근
- default : 같은 패키지 안에서 접근가능
- protected : 같은 패키지 안에서 접근 가능, 자식 클래스는 다른 패키지라도 접근 가능
- public : 어디서든 접근 가능
스레드(Thread)
- 경량의 프로세스 (프로그램의 흐름) : 하나의 프로그램에서 어떠한 작업을 작은 프로세스로 따로 실행시키는것
- 사용이유
1) 어떠한 작업이 동시에 이루어져야 할때
예:게임에서 이미지가 이동될때,여러 파일을 동시에 다운로드받을때...등
2) 어떠한 작업이 시간이 지연되는 작업일때
예:파일복사,프린터로 출력하기,...
- 만드는 방법
방법1)
Thread클래스를 상속받고 run메소드를 오버라이딩해서 스레드로 구현되어야 할 작업을 구현한다.
실행할때는 start메소드를 사용한다.
방법2)
Runnable인터페이스를 상속받아 run 메소드 오버라이딩하기
스레드의 동기화
- 하나의 자원(객체)를 여러개의 스레드가 공유해서 사용할 때 하나의 스레드가 공유자원(객체)를 사용중이면
다른 스레드는 사용 할 수 없도록 락(lock)을 걸어두는 것
- 동기화 처리 방법
방법 1) 동기화 객체를 synchronized 블록으로 묶기
synchronized(공유자원객체){
...
}
방법 2) 동기화 될 객체 자체에서 동기화 처리하기 - 동기화 메소드
public synchronized 리턴형 메소드명(){
...
}
가변형 인자
매개변수의 개수에 상관없이 처리되는 인자
'JAVA 기초' 카테고리의 다른 글
5일차 : 객체지향 프로그래밍, 생성자, 사용자 정의 메소드 (0) | 2012.08.05 |
---|---|
4일차 : 배열 (0) | 2012.08.05 |
3일차 : while문, 다중 while문, do~while문 (0) | 2012.08.05 |
2일차 : 제어문, 반복제어문, switch문, 조건연산자(삼항연산자) (0) | 2012.07.29 |
1일차 : 변수, 기본 자료형, 강제 형 변환, 자바의 연산자 (0) | 2012.07.29 |