field (멤버 변수) 와 메소드 (멤버 함수)로 구성된다
C/C++에서의 함수
public static void main(String[] args){
..
}
System.out.print() // 여러 타입의 데이터 출력 가능, 문장 끝에 줄바꿈 없음
System.out.println() // 문장 끝에 줄바꿈 있음
CamelCase
boolean, char, byte, short, int, long, float, double
타입 명세 : 데이터 타입을 만드는 행위
int radius;
radius = 10;
radius = 10 * 5;
대입연산자'=' 뒤에 오는 것은 "식" (expression)
var price = 200; // price -> int로 추론
var name = "seungwon"; // name -> String
var pi = 3.14; // pi -> double
compiler 가 식을 평가한다.
식을 평가하면 값이 나온다
a = 3 + 5 ; // 3 + 5 를 계산한다 = 식을 평가한다
한 문장 전체 = statement
d = a + b * 3 - 4
// statement
statement라고 해서 expression인 것은 아님
int a;
// statement는 맞지만, expression 은 아님
식 평가에는 자동형변환을 포함한다.
식 평가의 차이
a = 10 ;
이 식을 10으로 평가 하는 경우
a=b=c=d=10;
compile OK
이 식을 10으로 평가하지 않는 경우
a=b=c=d=10;
compile Error
프로그램에서 직접 표현한 값
숫자 리터럴 사이사이에 '_' 허용
ex. int exnum = 10_1000_1000;
문자 리터럴 : ' '로 문자 표현, 특수문자 리터럴
' '로 문자 표현 = \u + 2바이트(4자리 16진수)의 유니코드
ex) \u0041 = 문자 'A'의 유니코드
특수문자 리터럴: \로 시작
논리 리터럴 : true, false
boolean 타입의 변수에 치환하거나 조건문에 이용
1,0을 참/거짓으로 사용 불가능
null 리터럴 : 레퍼런스에 대입하여 사용, 기본타입에는 사용 불가
ex. String str = null;
문자열(String) 리터럴 : String 객체로 자동 처리
실행 중 값을 변경 불가능
final double PI = 3.141592;
.
.
PI = 3.14; // error
byte < short < int < long < float < double
int n;
byte b = (byte)n; // 강제 타입 변환 - 값 손실 우려
System.in
: 키보드로부터 직접 읽는 자바의 표준 입력 스트림java.util.Scanner 클래스
: System.in에게 키를 읽게 하고 읽은 바이트를 다양한 타입으로 변환하여 리턴객체 생성
import java.util.Scanner;
...
Scanner a = new Scanner(System.in); //Scanner 객체 생성
ex.
import java.util.Scanner;
public class ScannerEx {
public static void main(String args[]) {
System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리해 입력하세요");
Scanner scanner = new Scanner(System.in);
String name = scanner.next(); // 문자열 읽기
System.out.print("이름은 " + name + ", ");
String city = scanner.next(); // 문자열 읽기
System.out.print("도시는 " + city + ", ");
int age = scanner.nextInt(); // 정수 읽기
System.out.print("나이는 " + age + "살, ");
double weight = scanner.nextDouble(); // 실수 읽기
System.out.print("체중은 " + weight + "kg, ");
boolean single = scanner.nextBoolean(); // 논리값 읽기
System.out.println("독신 여부는 " + single + "입니다.");
scanner.close(); // scanner 닫기
}
}
연산 : 주어진 식을 계산하여 결과를 얻어내는 과정
인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조 (fixed-length)
cf. linked-list : 필요할때마다 메모리를 할당
C랑 달리 배열의 시작주소를 가리키는 것은 아님
배열을 만들면 객체가 만들어지고 그 안에 배열이 존재
객체 : 메모리에 존재 = run time에 존재, heap에 생성됨(heap에 있는 변수는 0으로 초기화 됨)
배열 선언 / 생성
// (1)
int arr[];
// (2)
int[] array;
//(1)
arr = new int[10]; // new : 연산자
//(2)
char charArr[] = new char[20];
int arr[];
arr = new int[5];
int size = arr.length; //출력값 : 5
2차원 배열
비정방형 배열(ragged array)
메소드에서 배열 리턴 : 리턴 타입에 배열의 크기를 지정하지는 않음
int[] testArray(){
...
}
for(i=0;i<10;i++, System.out.println(i)){
..
}
int[] nums = {1,2,3,4,5};
for(int i:num)
// int 타입 i는 num의 각 요소값으로 설정됨
System.out.print(i); // 출력 :12345
명품 Java Programming(황기태, 김효수 저)