클래스란
클래스 형식(=문법=Syntax)
public
[접근제어자] class 클래스명{
멤버필드1; (=속성=property=attribute=요소)
멤버필드2;
멤버필드3;
...
메소드1(=메서드) (=기능)
메소드2
메소드3
...
}
클래스명, 변수명을 붙이는 명명규칙
클래스명은 첫글자로 올수 있는 것으로는 $ 영어대문자 세 개 중에 가능
=> 변수명은 첫글자로 올수 있는 것으로는 $ 영어대문자/소문자까지 가능
클래스명이나 변수명에 숫자를 사용할 수 있으나 첫글자에서는 숫자 사용 불가
특수문자로는 _ $만 가능하다
클래스명은 되도록 첫글자만 영어대문자로 나머지는 영어소문자로 기술(권장사항)
변수명은 되도록 영어소문자로 기술(권장사항)
이름사이에 공백이 있으면 절대 안된다.
이름은 카멜기법, 파스칼기법, 스네이크기법등으로 기술해준다(권장사항)
카멜기법 : 두 단어 이상이 결합된 이름을 지을 경우 연결되는 단어의 첫 글자를 영어대문자로하는 방법
예: TestJava HelloJava,스네이크 기법: 두 단어 이상을 결합시 _로 연결하는 방법
예: Test_java , Hello_java
키워드(=예약어)로는 이름을 지을 수 없다.
ASCII > ANSI > EUK-KR > UTF-8(유니코드)
연산 : 명령문을 실행해서 처리하는 것을 연산이라고 한다
연산자 (오퍼레이터 = operator) : 피연산자를 연산처리하기 위한 기호
피연산자 (항=오퍼런드=operand) : 연산의 대상이 되는 것을 말함
연산자의 종류 및 우선순위
1. 괄호연산자 : () {} []
2. 단항연산자 (항이 한 개인 연산자)
논리연산자 : !(부정)
비트연산자 : ~(부정)
전위연산자 : ++ , --
접근연산자 : .
부호연산자 : + , -
3. 이항연산자 (항이 두 개인 연산자)
결합연산자(문자열결합) : +
산술연산자 : *(곱셈) , /(나눗셈-몫) %(나눗셈-나머지) + , -
비교연산자 : == , != , < , <= , > , >= instanceof
논리연산자
비트 : &(논리곱 AND-> 모두 참인 경우만 참, 나머지는 거짓 )
|(논리합 OR-> 모두 거짓인 경우만 거짓, 나머지는 참)
^(배티적논리합 XOR -> 항이 서로 다른 경우만 참 , 나머지믄 거짓) => 값을 1,0으로 반환
--> 조건식에서 사용
논리곱 : &&(두 조건이 모두 참인 경우만 참)
논리합 : || (두 조건 중 하나라도 참인 경우 참) => 값을 true , false 로 반환
삼항연잔사(항이 새 개인 연산자)
=> 조건식 ? 참일떄의 실행문이나 값 : 거짓일떄의 실행문이나 값
대입연산자 : = , *= , /= , %= , -= , +=
후위연산자 : ++ , --
지역변수는 자동 초기화 불가능
멤버면수는 자동 초기화 가능
src안에 클래스 만들기
논리연산자
int value2 = 5; // 값 자체를 일컫는 용어는 리터럴(literal)이라고 함
System.out.println(true || value2++ > 6); // value2++ > 6 는 계산하지 않는다 ( 앞이 true이기때문에 생략 )
System.out.println(value2);
true
5
변수 : 값이 변하는 수
상수 : 값이 변경 되지 않는 수 (키워드 'final=막는다, 금지한다' 추가)
상수명은 되도록 영어 대문자로 기재
상수는 반드시 선언과 동시에 초기화가지 해야 함
변수 상수명은 대소문자 구별 함(클래스이름은 대소문자 구별 안 한다)
frintf 포맷 사용
포맷 기호
%d 10진수 , %o 8진수 , %x/X 16진수 ,
%s/S 문자열 , %f 실수행 (float) ,
%.2f .2는 소숫점 둘째자리에서 반올림하라는 뜻
System.out.printf("%10.2f\n", 3.2582);
// 10은 10자리표시 (양수는 오른쪽 음수는 왼쪽)
3.26
조건문 : 어떤 조건에 따라 값을 boolean형으로 판단하여 그 값에 따라 기능을 수행하도록 처리하는 명령문
조건문 형식
기본 :
조건문 switch case 구문
형식 swich(조건값 /int 이하 문자열까지만 가능 ) {
case 값 : 실행문; break;
case2 값 : 실행문; break;
case3 값 : 실행문; break;
default : 실행문; (생략가능)
}
break가 없으면 true이후 문장을 다 실행 시킨다
중첩 if조건문
형식 if(조건문){
참일 때 실행;
if(조건식2){
조건 2가 참일 때 실행;
}else if(조건식3){
}else {
위의 조건이 모두 아닌 경우 실행;
}else{
거짓일 때 실행;
if else(조건식4){
조건식 4가 참일 때 실행;}esle {
조건식이 모두 거짓일 때 실행
}
*지역변수는 재선언을 할 수 없음 단 재사용은 가능
반목문 (for문)
기본형식
초가식은 한 번만 실행이 된다.
조건식은 값이 boolean으로 반환 ,만족하지 않을 때 까지
증감식 후위연산자
for(초기식; 조건식; 증감식){
실행문 : 조건문, 반복문, 출력문, 지역변수
}
break : 제어문안에 들어있는 break는 자신을 감싸고 있는 최초의 제어문 밖으로 나간다
continue : 건너띄기, 자신을 감싸고 있는 최초 제어문의 for문으로
int n = 0;
for( n = 1; n <= 10; n++){
<=10 거짓 여기서 멈춤
//for 안에서는 n의 값 10
System.out.println(n);
}
System.out.println("n의 값은: " + n);//n <= 10 값을 확인하고 다음으로 넘어감 (11) 11
-> 11
라벨 제어문 위에다 위치
라벨이 붙으면 제어문 전체를 종료 시킨다
gugudan: //라벨 for문 위에다 위치
for (int i =2; i<=9; i++) {
if(i<4)System.out.println("구구단 " + i + "단");
for (int j = 1; j<=9; j++) {
if (i == 4) break gugudan; //라벨이 붙으면 for문 전체를 실행 종료 시킨다
System.out.println(i + "*" + j + "=" + (i * j));
}System.out.println();
}
System.out.println("\n============================\n");
무한루프 형식
for( ;; ){
}
while ( true ){
}
do{
}while(true);
배열 : 같은 자료형의 값을 여러개 요소들의 집합체
인덱스 = 방번호 0부터 시작
형식
자료형[] 변수명(참조변수명) ;
or 자료형 변수명[]
공간 할당 방법
변수명 = new 자료형[방개수];
초기화 방법
변수명[인덱스 번호] = 리터럴;
선언&공간할당 동시
자료형[] 변수명 = new 자료형[방개수];
선언&공간할당&초기화 동시
자료형[] 변수명 = new 자료형[]{값1,값2 ~};
단축형식 <선언, 공간, 초기화> //가장 많이 사용 됨
자료형[] 변수명 = {값1,값2~};
int[] iarr = new int[5]; //iarr.length(배열 길이) (키워드) => 5
iarr[2] = 5; (초기화)
for문 단축어 형식
for(자료형 변수명 : 배열객체명){ 실행문 };
배열객체 인덱스 순서대로 1개씩 떼옴
객체명.length() (메소드) = 문자열 길이를 출력
System.arraycopy(객체명 , 객체명 star idx(어느 위치부터 복사 할건지), 새로운 객체명 , 새로운 객체명 star idx(어느 위치부터 복사 받을건지) , 객체명에서 복사 해 올 갯수); //배열 복사 기능
String s1 = "Java Korea";
//직접 문자열을 지정(canonical 문자열)
//단축(shorthand) 초기화로 객체 생성
String s2 = new String("Java Korea");
String s3 = s2.intern(); //intern() 메소드 = 문자열만 추출
//s2 문자열을 canonical 문자열로 전환
String s4 = "Java Korea";
//단축 초기화로 객체 생성
// 같은 문자열은 메모리 주소가 같다 하지만 new키워드가 붙으면 힙 메모리 주소가 달라진다
System.out.println("> String 객체가 참조하는 주소가 같은지 비교");
System.out.println("s1 == s2 :" + (s1 == s2));
System.out.println("s2 == s3 :" + (s2 == s3));
System.out.println("s1 == s3 :" + (s1 == s3));
System.out.println("s1 == s4 :" + (s1 == s4));
//객체에서 == 은 주소 비교
객체명.hashCode() : 메모리의 주소값
System.identityHashCode(객체명) : 힙 메모리의 주소값
객체명.concat() 메소드 : 문자열 뒤로 새로운 문자열 추가
객체명.trim() 메소드 : 문자열 기준으로 앞 뒤 공백만 제거 (중간 공백은 제거 X)
객체명.charAt(문자열 인덱스 번호) 메소드 : 가져올 문자열 인덱스번호안의 값을 char에 저장 시킨다.
객체명.substring() 메소드 : 문자열 일부 발취 (값이 하나면 시작 인덱스부터 종료 인덱스 까지)
(값이 두개면 시작 인덱스부터 종료 인덱스 -1 까지)
객체명.indexOF() 메소드 : 문자열에 문자가 있는지 찾고 그 문자의 첫 번째 문자의 인덱스를 표시해준다
객체명.lastIndexOF() 메소드 : 역순으로 찾는다
객체명.indexOF() 객체명.lastIndexOF() 에
숫자가 붙으면 왼쪽부터 오른쪽으로 작성한 숫자인덱스 번호 찾아감
객체명.contains() 메소드 : 문자열이 포함이 되어있는지를 확인 시켜주는 메소드
객체명.replace() 메소드 : 작성한 문자열을 객체 문자열에서 찾아 작성한 문자열로 대체
형식 객체명.replace("포함되어있는 문자열","대체할 문자열")
객체명.replaceAll() 메소드 : 특정문자열만 바꿀 수 있는 기능이 있음
String str = "abcdefghijk";
System.out.println("result ===> " + str.replaceAll("[abchij]", "굿"));
System.out.println("result ===> " + str.replaceAll("[^abchij]", "굿"));
result ===> abcdefghijk
result ===> abc굿굿굿굿hij굿
만약 replace()로 하려면 바꾸려면 하나씩 다 작성 해야한다
객체명.toUpperCase() 메소드 : 문자열 전체를 대문자로 변경
객체명.toLowerCase() 메소드 : 문자열 전체를 소문자로 변경
클래스 : 하나 이상의 메소드와 하나 이상의 필드로 구성된 집합체
객체 : 현실에서는 식별 대상 모두
컴퓨터에서는 연산 처리, 컴퓨터가 작업 할 수 있는 최소 단위
메소드(기능) : 처리 할 실행문을 묶어 놓은 집합체
메소드 형식 : [접근제어자][기타제어자] 자료형 리턴 할 타입 메소드명(매개인자(선택) 변수 객체 올 수 있음 ){
실행문; : 출력문, 조건문, 제어문, 지역변수, 지역객체
return; 반환값;(선택)(실행문,조건문,제어문 못 들어옴)
}
리턴타입(자료형) 종류
void : 리턴 할 값이 없다 라는 뜻 (return 생략가능)
기본자료형 : int double 등등
클래스급 이상의 자료형 : String, int[] 등등