자바에서 함수는 항상 클래스에 싸여서 사용

public class Hello{ 
	public static class int plusone(int a){//메소드 
    	return a+1;
    } //main()함수 부터 실행 
    public static void main(String[] args){ 
    	int a = 10; System.out.println(a + "+1은" + plusone(a));//메소드 호출,출력 
    }
} //모든 함수는 항상 클래스에 포장된 상태

 

  • 자바 식별자: 클래스, 변수, 상수, 메소드 등에 붙이는 이름 
    • @,8,! 등 특수문자, 공백 등은 식별자로 사용할 수 없으나 _,$는 가능(근데 잘 사용하지 않습니다.)
    • 유니코드문자는 사용가능(한글도 유니코드)
    • 키워드는 식별자로 사용불가능
    • 식별자의 첫 문자로 숫자는 불가능
    • true,false,null 은 불가능
    • 길이 제한 없음
    • 대소문자를 구분함
  • 자바의 데이터 타입
    • 기본타입: unsigned 없음, 크기가 정해져 있음.(자바는 JVM기반)
      • boolean 논리타입 1비트
      • char 문자타입 2바이트
      • byte 정수타입 1바이트
      • short 정수타입 2바이트
      • int 정수타입 4바이트
      • long 정수타입 8바이트
      • float 실수타입 4바이트
      • double 실수타입 8바이트
    • 레퍼런스 타입 1개
      • 배열,클래스 와 인터페이스에 대한 레퍼런스
    • 문자열
      • 문자열은 기본타입이 아니므로 String클래스로 문자열을 표현 해야 한다.
      • 문자열에서 + 연산은 문자열을 연결시키는 역할을 함
    • 리터럴: 프로그램에서 직접 표현한 값
      //Ex
      int n = 15;
      int m = 015;
      int l = 0x15;
      int k = 0b0101;//n==m==l==k
      
      double d = 0.1234
      double e = 0.1234f//d==e
      
      boolean a = true;
      boolean b = (1>0);//a==b
      boolean c = 1;//타입 불일치 오류.자바에서는 1,0을 참,거짓으로 이용 불가
      • 숫자 리터럴에 _를 사용할 수 있다. 이 점을 이용해 가독성을 높이자.
    • var 키워드
      • Java10부터 사용가능한 키워드. var을 사용하여 변수타입 생략 가능
      • 지역 변수의 선언에만 사용
      • 컴파일러가 변수 타입을 추론, 초기값 지정 필수 
var age = 23; //int형 변수로 선언
var name = "Soohwan" //string형 변수로 선언
var weight = 64.5 //double형 변수로 선언
    • 상수(const in C++)
      • final 키워드 사용
      • 선언시 초기값을 지정한후, 실행 중 값 변경 불가
      • 컴파일러가 변수 타입을 추론, 초기값 지정 필수
    • 타입 변환
      • 자동 타입 변환 (컴파일러에 의해 크기가 작은 타입->큰 타입 으로 변환)
      • 강제 타입 변환 (개발자가 필요에 의해 강제로 타입 변환)
long m = 25;//25는 int 타입 이지만 long 타입 으로 자동변환
double k = 19.1;
int n = (int)k; // n에 int 타입 으로 강제변환된 k저장 (n=19)

 


JAVA에서의 키입력

  • System.in : 자바의 표준 입력 스트림
    • 키 값을 byte로 return
    • 키 값을 byte 데이터로 반환하기 때문에 프로그램이 알아서 문자 정보로 변환해야 함.
  • Scanner클래스 :  java.util.Scanner 클래스                     
    • System.in에게 키를 읽게 하고, 다양한 타입으로 변환하여 return 시킴
    • 객체생성 
import java.util.Scanner;//java.util.Scanner를 import문 필요
...
Scanner scnr = new Scaner(System.in);//Scanner 객체 scnr 생성

 

 

  • Scanner에서 입력되는 키값을 공백으로 구분되는 아이템 단위로 읽음
Scanner scnr = new Scanner(System.in);
String name = scnr.next();//String은 .next()함수이용
String age = scnr.nextInt();//int는 .nextInt()함수이용
double weight = scnr.nextDouble();//double은 .nextDouble()함수이용

 

<- 입력 값 예시: soohwan 23 64.5   (soohwan->name, 23->age, 64.5->weight)


JAVA에서의 연산과 조건문 

연산의 종류 연산자 연산의 종류 연산자
증감 ++ , -- 비트 & , | , ^ , ~ 
산술 + , - , * , / , % 논리 && , || , ^ , !
시프트 >> , << , >>> 조건 ? :
비교 > , < , <= , >= , ==, != 대입 = , += , -= , *= , /= , &= , ..
  • 조건문
    • if 문 & if else 문
    • 다중 if-else문
    • switch문
if(condition){ }
else{ }
if(condition1){ }
else if(condition2){ }
else if(condition3){ }

switch(식){
	case1:
    	action1;
        break;
    case2:
    	action2;
        break;    
    ...
    default 
    	actionn;
}
  • 반복문
    • for문
    • while문 : 조건 충족시 무한 반복
    • do-while문 : 한번 실행후 조건 충족시 반복
    • continue : 반복문을 빠져나가지 않고 다음 반복문 진행
    • break : 반복문 하나를 완전히 빠져 나갈때 사용

배열 Array

인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조같은 타입의 데이터들이 순차적으로 저장

  • 일차원 배열 
    • 배열 선언과 배열 생성 두 단계 필요
int arr [];//배열선언
int [] arr2;//배열을 선언하는 두번째 방법
arr = new int[15];//배열생성
int arr3 = new int[15];//선언과 동시에 생성
int arr4[] = {0,1,2,3,4,5,6,7,8,9};//배열선언과 동시에 초기화
int arr5[10];//컴파일 오류, 배열의 크기를 지정하면 안돼.
    • int : 배열의 타입, arr : 배열에 대한 레퍼런스 변수, [] : 배열선언, new : 배열생성, 15: 원소개수 
  • 레퍼런스 치환과 배열 공유
    • 하나의 배열을 다수의 레퍼런스가 참조 가능
int arr1[] = new int[5];
int arr2 = arr1;//arr1과 arr2는 동일한 배열을 참조하는 레퍼런스

arr1[1] = 4;
arr2[1] = 8;//--------> 오류!!!
  • 자바에서는 배열을 객체로 관리
    • length 필드는 배열의 크기를 나타냄.
  • for-each문
    • 배열의 원소를 순차적으로 접근하는데 유용한 for문
int []num = {1,2,3,4,5};
int sum = 0;
for(int k : num){
	sum+=num;
}
  • 2차원 배열
    • 2차원 배열의 length.
      • i.length -> 2차원 배열의 행의 개수
      • i.[n].length -> 2차원 배열의 열의 개수
int arr1[][];//2차원 배열 선언
int[][] arr2;//2차원 배열 선언

arr1 = new int[2][5];//2차원 배열 생성
int arr3[][] = new int[2][5];//2차원 배열 선언과 생성 동시에

int arr4[][] = {{0,1},{3,4},{5,6},{7,8}};//2차원 배열 선언, 생성과 초기화 동시에 

int size = arr1.length; //=2 5칸 짜리 배열이 두개 들어 있음.
int size2 = arr1[0].length; //=5 0번째 셀에는 셀이 다섯개 들어 있음.
  • 정방형 배열 : 각 행의 열의 개수가 같은 배열.
  • 비정방형 배열 : 각행의 열의 개수가 다른 배열.
int i[][];//정방형 배열 선언
i[][] = new int[4][4];//정방형 배열 생성

int ii[][];//비정방형 배열 선언
ii = new int[4][];//비정방형 배열 선언

ii[0] = new int[1];//각 행의 레퍼런스 배열 선언
ii[1] = new int[2];//생성 별도로 해도 됨
ii[2] = new int[3];
ii[3] = new int[6];

 


main() 메소드

  • main()은 자바 응용프로그램의 실행 시작 메소드
public static void main(String[] args){
}

public : main메소드는 다른 클래스에서도 접근이 가능해야한다.(필수)

static : main메소드가 포함된 객체가 생성되기 전부터 호출이 가능해야 한다.

void : main메소드는 return 값이 없다.

String[] : 문자열 배열 , 매개변수가 문자열 배열이 되게 하기 위함이다.

args: 매개변수


JAVA의 예외 처리

  • 컴파일 오류
    • 문법에 맞지 않게 작성된 코드
    • 컴파일 시 발견
  • 예외
    • 오작동이나 결과의 악영향을 미칠 수 있는 실행 중 발생한 오류 
      • 정수를 0으로 나누는 경우
      • 배열보다 큰 인덱스로 배열의 원소를 접근하는 경우
      • 존재하지 않는 파일을 읽으려고 하는 경우
      • 정수 입력을 기다릴때, 문자가 입력된 경우
    • 자바에서 예외 처리
      • 예외 발생 -> 자바 플랫폼 인지 -> 프로그램에 전달
      • 프로그램이 예외를 처리하지 않으면, 프로그램 강제 종료
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = 0;
try{
	num3 = num1/num2;//예외가 발생할 가능성이 있는 실행문
    System.out.prinln(num3);
    break;
}
catch(ArithmeticException e){
	System.out.prinln("0으로 나눌수 없습니다.");//예외 처리문
}
finally{
	//예외 발생 여부와 관계없이 무조건 실행(생략가능)
}

'JAVA' 카테고리의 다른 글

[Java.2-5] static 과 final  (0) 2022.04.15
[Java.2-4] 접근 지정자  (0) 2022.04.15
[Java.2-3] 객체 소멸과 가비지  (0) 2022.04.15
[Java.2-2] 메소드  (0) 2022.04.15
[Java.2-1] 클래스 와 객체  (0) 2022.04.15

+ Recent posts