new project 만들때 add sample code 해제
에디터 : 문장을 작성하는 편집기, 들여쓰기, 가독성있게 작성하도록 도움을 줌
인스턴스(Instance) - 실체화된 객체
메모리 상에 생성된 class로 만든 객체
객체 = 정보 + 기능(방법)
= 변수 + 함수(메소드)
클래스(Class) : 객체를 만들기 위한 설계도
프로그램은 인스턴스를 사용하여 만든다.
자바의 라이브러리는 내가 설계하지 않지만 사용해야 하는 class로 되어 있다. 즉, 설계도의 모음
예) Scanner
완성된 프로그램 = 내가 작성한 코드(class)로 만든 인스턴스 + 라이브러리로 제공되는 class로 만든 인스턴스
인스턴스를 만드는 방법(문법)
설계도명(class명) 인스턴스이름 = new 설계도명(필요자원);
예) Scanner scan = new Scanner(System.in);
System.in - 키보드로 입력받는 값을 의미한다.
인스턴스 사용법
인스턴스이름.인스턴스변수 = 값; //입력
인스턴스이름.인스턴스메소드(); //함수호출, 메소드호출
자바는 모든 것을 객체로 만들었다.(객체 지향 프로그래밍 언어)
데이터 타입(자료형, Date Type)
데이터의 크기 순서
byte < short < int < long < float < double < String(크기를 알 수 없다.)
형변환(Type Casting) p 53
숫자형과 문자열형에서만 이루어진다.
변수는 변하지 않는다. 단, 변수에 저장된 값을 꺼내와서(복사) 새로운 자료형으로 변환하는 것을 형변환이라고 한다.
규칙1. 작은 자료형의 데이터를 큰 자료형의 데이터로 변환할 때는 자동을 처리한다.(자동형변환, 암시/묵시적 형변환)
규칙2. 큰 자료형의 데이터를 작은 자료형의 데이터로 변환할 때는 반드시 형변환 연산자를 사용한다.
(강제형변환, 명시적 형변환)
형변환연산자(Cast Operator)
' ' 사이에 형 지정
예) long a = 10000L;
int b = (int) a;
클래스는 하나의 로봇을 만드는 설계도라고 생각하자.
main은 시작과 끝을 나타내는 메소드다.
Cannot resolve symbol : 변수 타입에러가 생겼을 때
// 형변환
public class SecondClass {
public static void main(String[] args) {
byte byteValue = 10;
int intValue = byteValue; // 자동 형변환
long longValue = 5000000000L;
float floatValue = longValue;
double doubleValue = floatValue;
char charValue = 'A'; //65라는 숫자를 저장
int intValue2 = charValue;
char charValue2 = 68;
System.out.println(intValue2);
System.out.println(charValue);
System.out.println(charValue2);
for(byte i = 65; i < 91; i++){
char c = (char)i;
System.out.println(c);
}
// 숫자 -> 문자열, 문자열 -> 숫자 : 특별한 방법이 필요
/*
String snum = "1234";
int intNum = (int) sunm; 실행 오류
*/
}
} // 클래스 밖에는 명령문이 올 수 없다.
참고) 객체의 원자적인 형태
변수(필드)와 변수에 값을 넣는 메소드(setter), 변수의 값을 가져오는 (복사하는) 메소드(getter)
물론 setter와 getter는 선택 사항이다.
Wrapper Class(기본 자료형을 객체로)
자료형은 객체가 아니다!
자바는 모든 것을 객체로 -> 자료형을 객체로 만들자
=> Wrapper Class 탄생
자료형에 대한 정의와 보조적으로 사용할 수 있는 기능 메소드를 묶어 놓은 class (기본 자료형 8개에 대해서만 존재)
보조기능 예) 문자열을 숫자로 변환하는 기능 등
Type | Wrapper Class |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
※ 권장 규칙 : 클래스의 이름은 첫글자를 대문자로 한다.(파스칼케이스)
String : 문자열로 처리하는 규칙과 보조 기능 메소드로 구성된 클래스
형변환 제외 : boolean 타입
각 class에서 변환용 메소드를 제공 p64-5
숫자 -> 문자열 : String 클래스에 valueOf 메소드로 제공
"" + 숫자 -> 문자열로 자동 형변환
숫자문자열 -> 숫자 : 각 Wrapper에 parseXXX 메소드 제공
예) "1324" -> Interger.parseInt("1324"); => 정수 1324로 변환
"3.14" -> Float.parseFloat("3.14"); => 실수 3.14로 변환
//숫자형 변수와 문자열 변수의 연산(결합)
//최종 결과는 무조건 문자열.
String s = 1 + 5 + 6 * 2 + "개";
System.out.println(s);
s = "갯수 : " + (1 + 5 + 6 * 2);
System.out.println(s);
// 숫자 -> 문자열 : String.valueOf(숫자)
s = "갯수 : " + String.valueOf(50);
System.out.println(s);
// 공백문자열을 사용하면 자동으로 문자열로 형변환이 된다.
s = "" + 1000;
s = 1000 + "";
Scanner문제점 해결 방법 1, 2
import java.util.Scanner;
// Scanner의 문제
public class ThirthClass {
public static void main(String[] args) {
// 사용자로부터 2개의 값을 입력받아서 덧셈하고 출력하는 프로그램
int num1, num2, result;
// 입력을 받는 장치 객체 Scanner
// 인스턴스(소문자)는 객체 이름(대문자)을 따와서 만드는 경우가 많다.
// 입력장치 System.in
Scanner scanner = new Scanner(System.in);
// Scanner의 문제
/*System.out.print("문자열 입력 : ");
String str = scanner.nextLine();
System.out.print("정수 입력 : ");
int num = scanner.nextInt();
System.out.println("문자열 - " + str);
System.out.println("정수 - " + num);
// 정수 입력 후 문자열 입력이 실행되지 않고 출력된다.
// 숫자를 입력할 때 엔터를 칠 때까지 키버퍼에 모아두었다가 실행 1인지 1000인지 구별하기 위해서
// nextInt는 숫자만 받기 때문에 엔터가 문자열로 처리되어서 값을 입력할 수 없게 된다.
// 문제 없애기 1. 엔터 문자 없애기
System.out.print("정수 입력 : ");
int a = scanner.nextInt();
scanner.nextLine();//엔터 문자 없애기
System.out.print("문자열 입력 : ");
String b = scanner.nextLine();
System.out.println("문자열 - " + b);
System.out.println("정수 - " + a);*/
// 문제 없애기 2. Wrapper Class 문자열로 전부 값을 받고, 숫자는 숫자로 변환시키기
System.out.print("문자열 숫자 입력 : ");
String a1 = scanner.nextLine();
System.out.print("문자열 입력 : ");
String b2 = scanner.nextLine();
System.out.println("문자열 - " + b2);
System.out.println("문자열 숫자 입력 - " + a1);
// 숫자 문자열을 정수로 변환
int a2 = Integer.parseInt(a1);
System.out.println("숫자로 변환 : " + a2);
}
}
'공부기록 > Java' 카테고리의 다른 글
4월 10일 (2) Java - 참조 변수, 배열 (0) | 2023.04.10 |
---|---|
4월 10일 (1) Java - 제어문 (0) | 2023.04.10 |
4월 7일 (2) Java - 연산자 (0) | 2023.04.07 |
4월 6일 (2) Java - 변수, 자료형 (0) | 2023.04.06 |
4월 6일 (1) Java - 특징, 프로그램 설치 (0) | 2023.04.06 |