하나의 페이지에 여러개의 클래스가 있을수있지만  
public class는 한번만 존재해야하며
public 타입을 가지는 클래스를 파일명으로한다 
main method 를 가지는 클래스에 public타입을 준다 

class 변수는 static이 붙는 변수로 static 변수라고 한다
class 변수는 클래스명.변수명 으로 호출한다  
같은 클래스일경우 클래스명없이 호출가능하다

instance 변수는 static이 붙지않고 class영역에서 선언된변수를 말한다 
instance 변수는 instance 생성후 생성한 객체명.변수명 으로 호출한다 
class 변수와 instance변수는 class영역에 선언되 멤버변수로 불린다 
멤버변수는 초기화하지 않을경우 default값이 들어간다

static 변수는 공유변수로 각각의 instance가 같이사용한다  
static 변수는 instance생성과 상관없이 생성된다 

생성자는 instance(객체)를 생성할때 호출하고 생성자명은 해당class명과 동일해야한다 
반환타입이 없어야 하고 멤버변수를 초기화할때 사용한다
CarDemo()생성자를 호출해서 new 연산자를 통해 클래스에 객체를 생성한다

생성자 없이 멤버변수를 초기화할때는 static String kind = "소형차"; 식으로 가능하다 

생성자를 이용하여 멤버변수를 초기화할수있다


local 변수는 method안에서 선언된변수를 말한다 
local 변수는 method의 block이 끝나는순간 사라진다. 
local 변수는 초기화를 해줘야한다.

class method에는 static이 붙고 class 변수만 사용할수있다
class method호출은 class명.method명 으로 호출하고 instance를 생성할필요없다

JVM 은 main method가 있어야 실행되기때문에  
main method는 static 이 붙어 객체생성없이 실행된다 

//class CarDemo
static String kind = "소형차"; //class변수
int number;  //instance 변수 
int speed;
String color;  

 

public CarDemo() {  
kind="소형차";  
int aa = 20;  
 //생성자이용해 멤버변수 초기화

public static void kind() { 
System.out.println("소형차");
//class method

public void speedUp() {  
    kind="대형차"; 
    speed +=10;  
//instance method에는 class 변수를 사용할수있다 

public void speedDown() {  
speed -=5;  
}  

//public class CarTest
static String kind1; //class변수

//main
CarDemo myCar = new CarDemo(); //instance 생성 
myCar.color="white"; 
CarDemo yourCar = new CarDemo(); 

System.out.println(CarDemo.kind); //class변수 호출 
System.out.println(kind1); //같은클래스내 class변수 호출 

System.out.println("myCar.color"); //instance변수 호출

System.out.println(myCar.kind); //공유변수이므로 같은값이 나온다 
System.out.println(yourCar.kind); 

myCar.kind = "중형차"; 
System.out.println(myCar.kind); 
System.out.println(yourCar.kind); //공유변수로 "중형차"가 출력된다  

int c = 100; //지역변수는 초기화 해줘야 한다 
System.out.println(c); 

System.out.println(aa); //생성자 안에서 선언된변수로 block밖에선 사용할수없다. 

System.out.println(myCar.speed); //0 
myCar.speedUp(); //멤버 메소드는 인스턴스 생성후 호출이가능하다 
System.out.println(myCar.speed); //10 

System.out.println(yourCar.speed); //0 
yourCar.speedUp(); //(참조변수명.메소드명) 
System.out.println(yourCar.speed); //10 

CarDemo.kind(); //class method 호출

'java' 카테고리의 다른 글

메소드, 생성자 오버로딩(overloading)  (0) 2019.08.02
return, 매개변수  (0) 2019.08.02
class 객체 및 instance, 멤버요소들  (0) 2019.08.02
입출력(main method/System.in/Scanner)  (0) 2019.08.01
배열 Array  (0) 2019.08.01

클래스를 속성(필드)과 기능(method) 로 정의하고
객체화를통해 인스턴스(객체)가 된다

객체는 속성(variable)과 기능(method)의 집합이며,

속성과 기능을 객체의 멤버라고한다

car2 = car1과 같이 하나의 참조변수는 

여러개의 객체를 가리킬수있다. 


//class Car
int number;
int speed;
String color;
//class에서 선언된 변수는 default값 0,null을 가진다

public void speedUp() {  //접근제어자, 반환타입, 메소드명 의형태로 작성
    speed +=10;
}

public void speedDown() {  //void 는 반환타입이 없다.
speed -=5;
}

//실행하기위해 main method에서 new라는 연산자를통해 객체를 생성해야한다
//main 
Car myCar = new Car(); //클래스를 객체화한다
Car yourCar = new Car();

//(class명 참조변수 = new class명();) 

myCar.number=1;
myCar.speed=10; //myCar의 변수만 변한다
myCar.color=Black;
System.out.println(myCar.speed); //speed 10 
myCar.speedUp(); //method 호출
System.out.println(myCar.speed); //speed 20
System.out.println(myCar.number); // 1
System.out.println(myCar.color); //Black

yourCar.speed=30; 
System.out.println(yourCar.speed); //speed 30
yourCar.speedDown();
System.out.println(yourCar.speed); //speed 25

'java' 카테고리의 다른 글

return, 매개변수  (0) 2019.08.02
class, instance 변수 와 method  (0) 2019.08.02
입출력(main method/System.in/Scanner)  (0) 2019.08.01
배열 Array  (0) 2019.08.01
보조 제어문 break, continue  (0) 2019.08.01

main이라는 method는 JVM이 호출해서 자동으로 실행된다
main method 에서 String type의 
args 배열 이라는 매개변수를 이용해 값을 출력한다
run, configuration, arguments에서 입력가능(eclips)

System.out.println(args.length);
//args 배열의 크기를 출력

for(int i = 0; i<args.length; i++) {
System.out.println(args[i]);
//args 배열의 값을 출력

for Each문은 배열과 함께사용할때 유용하다
for(변수 : 배열변수){}
for(String str : args) {
System.out.println(str);
//배열의 각 index의 값을 

str변수로 가져와서 출력한다 

data 입력받는 방법
import java.io.*; //to use System.in
import java.utill.*; //to use Scanner

throws IOException{ //입력을 받을때 예외처리를 해주어야한다
int n = System.in.read()-'0'; //값을 읽고 int형으로 받아 ASCII값으로 반환한다
//0~9 사이의 ASCII값은 48~57이다 그래서 0을빼줄시 정수가 출력된다
System.out.println(n);

InputStreamReader id = new InputStreamReader(System.in);
//System.in 을통해 값이 입력되면 InputStreamReader라는 클래스가 생성된다

//System.in은 한단어만 받아올수있는반면

//InputStreamReader은 여러단어를 받아올수있다
while(true) {
int n = id.read(); //read method를 통해 한글자씩 읽어온다
     if(n == -1) //-1 ASCII 값은 Ctr+z를 의미한다
     break;
     System.out.println((char)n);
}

//Scanner method는 예외처리가 필요없고 간단하다
Scanner sc = new Scanner(System.in);
System.out.println(sc.next()); //next method를 이용해서 문자를 읽어온다
System.out.println(sc.nextInt()); //정수형으로 반환하는 method

'java' 카테고리의 다른 글

class, instance 변수 와 method  (0) 2019.08.02
class 객체 및 instance, 멤버요소들  (0) 2019.08.02
배열 Array  (0) 2019.08.01
보조 제어문 break, continue  (0) 2019.08.01
반복문 for, while, do while. +(제어문자)  (0) 2019.08.01

int[] i; //배열 선언
i = new int[3];  //배열 생성
int[] i = new int[3];  //선언과 생성

i[0] =100; //index는 항상 0부터시작
i[1] =200; //초기화를 하지 않을시 0이란값이 출력된다
i[2] =300;

int [] i = {100,200,300,400}; //선언 생성 초기화를 동시에할수있다 
System.out.println(i.length); //배열의 길이 확인

int aa[] = new int[5];
aa[0] = 90;
aa[1] = 80;
aa[2] = 70;
aa[3] = 60;
aa[4] = 50;

int bb[];
bb = aa; //aa배열의 값이 bb배열에 입력된다

 

for(int i=0;i<aa.length;i++) {
System.out.println(aa[i]);
}
for(int i=0;i<bb.length;i++) {
System.out.println(bb[i]);
}

double []tt = new double[3];
tt[0] = 11.1;
tt[1] = 15.3;
tt[2] = 18.2;
double ttSum = 0;
for(int i=0;i<tt.length;i++) {
ttSum += tt[i];
//tt배열의 합을구한다
double ttAvg = ttSum/tt.length;

//tt배열의 평균을 구한다

다차원 배열 (2차원)
int a[][]; //선언
a = new int [2][3]; //2행 3열 배열 생성
a[0][0] = 11;
a[0][1] = 12;
a[0][2] = 13;
a[1][0] = 14;
a[1][1] = 15;
a[1][2] = 16; //초기화

for(int i=0;i<a.length;i++) {
for(int j=0;j<a[i].length;j++) {
System.out.print(a[i][j]+"");
} System.out.println();
} //배열내 모든값 출력

int b [][] = {{1,2,3},{4,5,6}}; //2행 3열의 배열을 만든다

char ch [][] = new char[3][]; //3행 배열 생성
//열을 할당하지 않을경우 가변적으로 할당할수있다
ch[0] = new char[3]; //3열 
ch[1] = new char[2]; //2열
ch[2] = new char[1]; //1열

ch[0][0] = 'A';
ch[0][1] = 'B';
ch[0][2] = 'C';
ch[1][0] = 'D';
ch[1][1] = 'E';
ch[2][0] = 'F';

for (int i=0;i<ch.length;i++) {
for( j=0;j<ch[i].length;j++) {
System.out.println(ch[i][j]);
//A B C D E F 가 출력된다
}

String str[][] = {{"hello"},{"Im jusung","^^"},{"thanks million","really","yes!"}};
for (int i=0;i<str.length;i++) {
for( j=0;j<str[i].length;j++) {
System.out.println(ch[i][j]);
//1행 1열, 2행 2열, 3행 3열의 배열이 생성된다
}

'java' 카테고리의 다른 글

class 객체 및 instance, 멤버요소들  (0) 2019.08.02
입출력(main method/System.in/Scanner)  (0) 2019.08.01
보조 제어문 break, continue  (0) 2019.08.01
반복문 for, while, do while. +(제어문자)  (0) 2019.08.01
조건문 if, switch  (0) 2019.08.01

보조 제어문 break, continue는
조건문, 반복문과 함께사용한다

for(int i=0;i<5;i++) {
if(i==3)break;
System.out.println(i);
//break에서 바로 빠져나오기때문에 0,1,2 가 출력된다

for(int i=0;i<5;i++) {
if(i==3) continue;
System.out.println(i);
//continue에서 다시 처음부터 실행되기때문에 0,1,2,4 가 출력된다

out:
for(int i=0;1<3;i++) {
for(int k=0;k<3;k++) {
if(k==1) break out;
//out 과 가장 가까운 반복문을 벗어나라는뜻
System.out.println("i="+i+",k="+k);
}  //i=0, k=0 이 출력된다
}

out:
for(int i=0;1<3;i++) {
for(int k=0;k<3;k++) {
if(k==1) continue out;
//out과 가장 가까운 반복문을 계속해서 실행하라는뜻
System.out.println("i="+i+",k="+k);
}  //i=0,k=0//i=1,k=0//i=2,k=0이 출력된다
}

'java' 카테고리의 다른 글

입출력(main method/System.in/Scanner)  (0) 2019.08.01
배열 Array  (0) 2019.08.01
반복문 for, while, do while. +(제어문자)  (0) 2019.08.01
조건문 if, switch  (0) 2019.08.01
연산자  (0) 2019.08.01

for(초기화;조건식;증감식) {
반복실행될 문장
}

for(;;) {} //무한 반복

int total=0;
for(int i=0;i<=10;i++) {
total +=i;
} System.out.println("sum of 1~10: "+total);

int total=0;
for(int i=0;i<=100;i++) {
if(i%2==0) {
total=total+i;
}

}  System.out.println("sum of 1~100 even number: "+total);

for(int i=1;i<=9;i++) {
for(int j=2;j<=9;j++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
} System.out.println();

}

while(조건식) {
반복실행될 문장
}

while(true) {} //무한반복

int i = 1;
while (i<5) {
System.out.println(i);
i++;
}

do {
반복실행될 문장
}while(조건식)

i=0
do {
i++;
System.out.println(i);
}while(i<5); //1~5까지 출력

char a = 'a';
a=(char)(a+1); //a+1 은 정수형이되기때문에 char형으로 변환해준다
do {
System.out.println(a);
}while(a<='z'); //a~z 까지 출력하기

제어문자 \=역슬래시
'\b' backspace
'\t' tab //값을 띄워준다
'\n' line feed //줄을 바꿔준다
'\f' form feed //프린트할때 페이지넘겨준다
'\r' carriage return //라인에서 제일앞으로 넘어온다
System.out.print("hahahohohihi\rso"); //so가 글 제일앞으로 온다
'\"' double quote 
System.out.println("hello \"jusung\""); //hello "jusung"
'\'' single quote
'\\' backslash

'java' 카테고리의 다른 글

배열 Array  (0) 2019.08.01
보조 제어문 break, continue  (0) 2019.08.01
조건문 if, switch  (0) 2019.08.01
연산자  (0) 2019.08.01
변수(variable)  (0) 2019.08.01

if(조건식) {
실행문장
}
true 일경우 실행문장을 실행
false 일경우 실행문장을 수행하지않고 if문을 빠져나온다

if(조건식) {
실행문장1
}else {
실행문장2
}
true일경우 실행문장 1 실행후 if-else문을 벗어난다
false일경우 실행문장 2 실행후 if-else문을 벗어난다

if(조건식1) {
실행문장1
}else if(조건식2) {
실행문장2
}else if(조건식3) {
실행문장3
}else {
실행문장 n
}
조건식 1 이 참일경우 실행문장 1
조건식 1 이 false일경우 조건식 2 
....모든 조건식이 거짓일경우 실행문장 n수행

if(true)

System.out.println("how are you?");    
(if다음 단일문장일경우 {}생략 가능)

if(false) System.out.println("false 이기때문에 실행안됨");
else System.out.println("이문장이 실행됨");


int score = 60;
char rank='';

if(score >= 90) rank = 'A';
else if(score >= 80) rank = 'B';
else rank = 'C';

System.out.println("your rank is "+rank);

rank = (score>=90)? 'A':((score>=80)?'B':'C');

//삼항연산자로 표현 


switch문은 식과 case문의 값과 비교해
값이 일치하면 해당 case의 실행문장을 수행하고
break 를 만나면 switch문을 벗어난다
case의 비교 값과 일치하는게 없을시 default문 실행
default문은 생략 가능하다

switch(식) {
case 값1:
실행문장1;
break;
case 값2:
실행문장2;
break;
default:
실행문장n;
}

int kor=90, math=80, eng=70;
char rank = '';
int total = kor+math+eng;
int avg = total/3;

switch(avg/10) { 
//10으로 나눠서 앞의자리숫자랑 일치할경우 실행되게한다
case 10:    
//10인경우는 다음 case문을 같이 실행한다
case 9:
rank='A';
break;
case 8:
rank='B';
break;
case default:
rank='C';
}

'java' 카테고리의 다른 글

배열 Array  (0) 2019.08.01
보조 제어문 break, continue  (0) 2019.08.01
반복문 for, while, do while. +(제어문자)  (0) 2019.08.01
연산자  (0) 2019.08.01
변수(variable)  (0) 2019.08.01

단항 연산자 ++, --, +, -, ~, !, 
boolean a = true; : !a = false; (논리부정 연산자)
2=0010 : ~2=1101 (비트를 반대로 바꿔준다)
int aa = ++bb; bb값을 먼저 증가시키고 aa에 대입
int aa = bb++; aa에 대입을 먼저한후 bb값을 증가

산술 연산자 *, /, %, +, -, <<, >>, >>>(비트를 이동시킨다)
비교 연산자  <, >, <=, >=, ==, != 

instanceof(비교대상이 같으면 true 아니면 false 출력)

논리 연산자 & (and:둘다 1일경우 1) 

^ (xor:두개가 다를경우만 1) 

| (or 둘중하나만 1일이여도 1)
&&(and), ||(or) :두개의논리 연산자 비교 에서 사용된다 
삼항 연산자 : aa=(조건)? a:b; 조건이 참이면 a값 조건이 거짓이면 b값

대입연산자 =, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, !=

priority: 단항연산자, 산술연산자, 비교연산자, 논리연산자, 삼항연산자, 대입연산자

'java' 카테고리의 다른 글

배열 Array  (0) 2019.08.01
보조 제어문 break, continue  (0) 2019.08.01
반복문 for, while, do while. +(제어문자)  (0) 2019.08.01
조건문 if, switch  (0) 2019.08.01
변수(variable)  (0) 2019.08.01

+ Recent posts