



package j231218; // 패키지 선언부
public class BasicStructure { // 클래스 선언
// 메소드(함수) 선언
public static int sum(int n, int m) {
return n+m;
}
// main() 메소드
public static void main(String[] args) {
// 변수 선언
int i = 20;
int s;
s = sum(i, 10); // sum()메소드 호출
System.out.println(s);
}
}
: 변수, 상수, 메서드, 클래스 등의 이름을 지정하는 데 사용되는 단어나 문자열
_, $는 사용 가능int barChart; 와 int barchart; 는 서로 다른 식별자: 값을 저장하기 위해 사용되는 이름이 있는 메모리 공간
: 프로그램 실행 중 값을 임시 저장하기 위한 공간
데이터타입 변수명; (ex. int a;)int age; // 변수 age를 선언
age = 25; // 변수 age에 값 25를 할당 (초기화)
int age = 25; // 변수 age 선언과 초기화 동시에 진행
: 프로그램에서 직접 표현한 값
: 소스 코드에서 고정된 값을 나타내는 것으로, 직접 값을 표현하는 것
int a = 3; 에서 3은 리터럴int age = 25; // 정수 리터럴 25
double pi = 3.14; // 실수 리터럴 3.14
char grade = 'A'; // 문자 리터럴 'A'
String name = "John"; // 문자열 리터럴 "John"
boolean isTrue = true; // 논리 리터럴 true
int n = 15; //10진수 리터럴 15
int m = 015; //8진수 (10진수로 8*1 + 1*5 = 13) //영문자O가 아닌, 숫자0임!!
int k = 0x15; //16진수 (10진수로 16*1 + 1*5 = 21)
int b = 0b0101; //2진수 (10진수로 4*1 + 2*0 + 1*1 = 5)
long g = 24L; //long타입 리터럴 : 숫자 뒤에 L 또는 l을 붙여서 표시
2진수로 바꾸기
: 8진수는 2진수의 3자리씩 8진수의 1자리,
16진수는 2진수의 4자리씩 16진수의 한자리
- ex. 16(10) → 00010000(2)
- ex. 16(8) → 001 110(2)
- ex. 16(16) → 0001 0110(2)
double d = 0.1234;
double e = 1234E-4; //1234*(10의 -4승) = 0.1234 과 동일
// 숫자 뒤에 f(float)나 d(double)을 명시적으로 붙이기도 함(생략하면 double타입)
float f = 0.1234f;
double w = 0.1234D; //0.1234와 동일
char a = '글';
char b = 'W';
char c = \uae00; // \u 다음에 4자리 16진수로 2바이트의 유니코드
특수문자 리터럴 : 백슬래시(\)로 시작
\b :백스페이스\t : 탭\n : 라인피드\f : 폼피드\r : 캐리지 리턴\” : 이중 인용부호\’ : 단일 인용부호\\ : 백슬래시)null 리터럴 : 레퍼런스에 대입 사용
(기본타입에 사용불가)
int n = null; // 사용불가능 (int형은 기본 타입)
String str = null; // 가능
String str = "Good";
: 변하지 않는 값을 나타내는 식별자
final 데이터타입 상수명 = 초기값;// 예시
final int MAX_SIZE = 100;
static final 데이터타입 상수이름 = 값;// 예시
public class MathUtil {
public static final double PI = 3.14159;
}
: 한 데이터 타입을 다른 데이터 타입으로 변환하는 과정
: 원래의 타입보다 큰 타입으로 자동 변환
long m = 25; //25는 int타입이 long타입으로 자동 변환
double d = 3.14*10; //실수연산을 위해 10이 10.0으로 자동 변환
byte b = 127;
int i = 100;
System.out.println(b+i); //227, b가 int타입으로 자동변환
: 개발자의 의도적 타입 변환
int n = 300;
byte b = n; //오류 : int타입이 byte로 자동변환 안됨
byte b = (byte)n; //강제 변환 (값 손실 우려)
double d = 1.9;
int n = (int)d; //강제 변환 => n=1(소수점 이하 0.9 손실)
System.out.println((int)2.9 + 1.8); // 2+1.8=3.8 (2.9를 int형으로 강제변환)
: 프로그램과 외부 환경(사용자 또는 파일) 간의 데이터 흐름을 처리하는 데 사용되는 스트림
System.out.println('출력 내용'); : 출력 후 다음 행으로 커서 이동System.out.print('출력 내용'); : 출력 (다음 행으로 이동x)System.out.printf('출력서식', '출력내용'); : 출력내용을 출력서식에 따라 출력 (다음 행으로 이동x)%[-][0][전체자리수][.소수점이하자리수]지시자- : 전체 자리수가 지정되면 왼쪽 정렬하고 오른쪽 빈칸에 공백 (기본값(-생략) : 오른쪽 정렬)0 : 전체 자리수가 지정되면 남은 공백에 0을 대입System.out.printf("%04x%n",a); : 16진수로, 전체 4자리, 공백은 0으로 채워서, 마지막 줄바꿈예시
public class Main {
public static void main(String[] args) {
int age = 25;
double height = 175.5;
char grade = 'A';
String name = "John";
System.out.printf("이름: %s%n", name);
System.out.printf("나이: %d세%n", age);
System.out.printf("키: %.1fcm%n", height);
System.out.printf("학점: %c%n", grade);
}
}
출력 결과
이름: John
나이: 25세
키: 175.5cm
학점: A
\t’, ‘\f’, ‘\r’, ‘ ‘, ‘\n’데이터타입 변수명 = System.in.read(); : 입력받은 것을 변수에 대입import java.util.Scanner; // Ctrl+Shift+영문자O 로 자동 import 가능
public class ScannerEx{
public static void main(String args[]){
Scanner 스캐너객체명 = new Scanner(System.in); // Scanner 객체 생성
String 스캐너객체명.next(); // 다음 토큰을 문자열로 리턴
byte 스캐너객체명.nextByte(); // byte타입으로 리턴
short 스캐너객체명.nextShort(); // short타입으로 리턴
int 스캐너객체명.nextInt(); // int타입으로 리턴
long 스캐너객체명.nextLong(); // long타입으로 리턴
float 스캐너객체명.nextFloat(); //float타입으로 리턴
double 스캐너객체명.nextDouble(); //double타입으로 리턴
boolean 스캐너객체명.nextBoolean(); //boolean타입으로 리턴
String 스캐너객체명.nextLine(); // '\n'을 포함하는 한 라인을 읽고, '\n'제외한 나머지를 리턴
boolean 스캐너객체명.hasnext(); // 현재 입력된 토큰이 있으면 true, crtl+z 키 입력되면 입력 끝이므로 false 리턴
스캐너객체명.close(); // Scanner 사용 종료
}
}
a > n
→
a>n은 식(expression),
a와n은 피연산자(operand),
>는 연산자(operator)
+(더하기), -(빼기), *(곱하기), /(나누기), %(나머지)&,|,^,~&b : a,b의 각 비트들의 and연산|b : a,b 각 비트들의 or연산^b : a,b 각 비트들의 XOR연산, 비트가 서로 다르면1, 같으면0~a : a의 각 비트들에 not연산// 예제 : 냉장고 8개 센서 중 냉장고 온도가 0도 이상으로 올라가면 비트3이 1, 이하이면 0을 유지할 때
// 현재 냉장고의 온도가 0도 이상인지 판단하는 코드는?
byte flag = 0b00001010; // 냉장고의 8개의 센서
// flag & 0b00001000 : 3비트를 제외한 나머지는 0비트를 반환하고
// 3비트는 flag의 3비트가 1이면 1을, 0이면 0을 반환
if ( flag & 0b00001000 == 0 ): // flag의 3비트가 0일 때
System.out.print("온도는 0도 이하");
else // flag의 3비트가 1일 때
System.out.print("온도는 0도 이상"); >>,>>>,<<>>b : a의 각 비트를 오른쪽으로 b번 시프트, 빈자리는 시프트 전의 최상위 비트로 채움>>>b : >>와 동일, But 빈자리는 0으로 채움<<b : a의 각 비트를 왼쪽으로 b번 시프트, 빈자리는 0으로 채움<,>,<=,>=,==,!=!,^,||,&&!a : a가 true이면 false, false이면 true^b : a,b같으면 false||b : a,b 중 하나라도 true이면 true&&b : a,b 모두 true이면 true=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=,>>>=++, a--, ++a, --aint a, b = 4;
a = b++ * 3; //a=12, b=5 (b*3을 a에 대입한 후에 b를 1증가)
a = ++b * 3; //a=15, b=5 (b를 1증가 시킨후 *3을 a에 대입)조건?값1:값2시간복잡도를 줄이기 좋은 연산!!!
조건이 참이면 값1, 거짓이면 값2를 반환
int big;
if (x>y)
big = x ;
else
big = y ;
// if-else를 조건연산자로 간결하게 표현가능
int big = (x>y)?x:y ;
단순 if문
if(조건식) {
실행문장; //조건식이 참인 경우
}
if-else문
if(조건식) {
실행문장1; //조건식이 참인 경우
else {
실행문장2; //조건식이 거짓인 경우
}
if-else if-else문
(조건문이 너무 많은 경우, switch문 사용 권장)
if(조건식1) {
실행문장1; //조건식1이 참인 경우
}
else if(조건식2) {
실행문장2; //조건식2가 참인 경우
}
else if(조건식3) {
실행문장3; //조건식3이 참인 경우
} ...
else {
실행문장n; //앞의 모든 조건이 거짓인 경우
}
switch(식) {
case 값1:
실행문장1; //식의 결과가 값1일 때
break;
case 값2;
실행문장2; //식의 결과가 값2일 때
break;
...
default: //어느 값과도 같지 않을 때 (생략가능)
실행문장n;
}
//예제 : 월을 입력받아 봄, 여름, 가을, 겨울을 출력
import java.util.Scanner;
public class Season {
public static void main(String[] args) {
Scanner a = new Scanner(System.in);
System.out.print("월(1~12)을 입력하시오:"); int month = a.nextIn();
switch(month) {
case 3: case 4: case 5:
System.out.println("봄입니다");
break;
case 6: case 7: case 8:
System.out.println("여름입니다");
break;
case 9: case 10: case 11:
System.out.println("가을입니다");
break;
case 12: case 1: case 2:
System.out.println("겨울입니다");
}
}
}for문
for(초기문; 조건식; 반복 후 작업) {
반복문장;
}
while문
while(조건식) {
반복문장;
}
do-while문
do {
반복문장;
} while(조건식);
continue; : 반복문을 빠져 나가지 않고, 다음 반복으로 제어 변경break; : 하나의 반복문을 즉시 벗어남
정말 좋은 내용이네요 잘 보고 갑니다~