public class HelloJava {
}
public class HelloJava {
public static void main(String[] args) {
}
}
int level; // 정수형, 정수이름 -> 변수를 선언하였다. 빈 그릇 상태
level = 10; // 변수에 10 이라는 값을 넣었다.
위 예시에서 '=' 기호는 오른쪽 값을 왼쪽에 대입한다 라는 의미(대입연산자)
public class HelloJava {
public static void main(String[] args) {
int age = 31; // 이와같이 선언과 대입을 동시에 할 수 있다.
System.out.println("저의 나이는 " + age + "살 입니다.");
}
}
: 저의 나이는 31살 입니다.
맥OS에서 단축키로 실행 시키는 방법 : control + shift + R
기본 자료형과 참조 자료형
기본 자료형 : 정수형, 문자형, 실수형, 논리형, ...
참조 자료형 : class형, ...
상수
final double PI = 3.14;
final int MAX_NUM = 100;
리터럴(literal)
항과 연산자
연산자의 우선순위는 단항 -> 이항 -> 삼항 순서이다.
대입 연산자
int age = 24; // 오른쪽 변수를 왼쪽 변수에 대입
myScore = mathScore + engScore;
이항 연산자를 우선 계산하고(+), 그 뒤에 대입연산자(=)를 수행한다.
산술 연산자
연산자 | 기능 |
---|---|
+ | 두 항을 더한다 |
- | 뒤에 있는 항을 뺀다 |
* | 두 항을 곱한다 |
/ | 두 항을 나눈 후 몫을 구한다 |
% | 두 항을 나눈 후 나머지를 구한다 |
관계 연산자
연산자 | 기능 |
---|---|
> | 왼쪽 값이 크면 참을 반환 |
< | 왼쪽 항이 작으면 참을 반환 |
>= | 왼쪽 항이 크거나 같으면 참을 반환 |
<= | 왼쪽 항이 작거나 같으면 참을 반환 |
== | 두 항의 값이 같으면 참을 반환 |
!= | 두 항의 값이 다르면 참을 반환 |
논리 연산자
연산자 | 기능 |
---|---|
&& | 논리 곱 : 두 항이 모두 참인 경우에만 참 |
II | 논리 합 : 두 항 중 하나라도 참인 경우에 참 |
! | 부정 : 단항 연산자, 참인 경우 거짓으로 거짓인 경우 참으로 바꾼다 |
조건 연산자
연산자 | 기능 | 연산 예 |
---|---|---|
조건식 ? 참 결과1 : 거짓 결과2 | 조건식이 참이면 결과1, 조건식이 거짓이면 결과2 | int num = (5>3) ? 10 : 20 |
public class HelloJava {
public static void main(String[] args) {
int motherAge = 40;
int fatherAge = 43;
String trueOrFalse = (motherAge < fatherAge) ? "참입니다." : "거짓입니다.";
System.out.println(trueOrFalse);
}
}
if문의 형식
if(조건식){
수행문;
}
int age = 15;
if (age > 18) {
System.out.println("성인입니다.");
}
이 경우 조건문이 거짓이기 때문에 수행문이 수행되지 못한다.
if-else문의 형식
int age = 15;
if (age > 18) {
System.out.println("성인입니다.");
}else{
System.out.println("미성년자입니다.");
}
else를 사용한다면 조건문이 필요없다.
while문의 형식
while (조건식) {
수행문 1;
} 수행문 2;
조건식이 참인동안 수행문 1을 반복한다. 거짓이라면 수행문2로 넘어간다.
int num = 0;
int sum = 0;
while(num < 10){
sum += num + 1;
num++;
}
System.out.println("1부터 10까지의 총 합은 " + sum + "입니다.");
출력값 : 1부터 10까지의 총 합은 55입니다.
do-while문은 수행문이 먼저 나오고 그 뒤에 조건문이 나오는 형식
조건에 맞지 않더라고 적어도 한번 이상은 수행되어야할 때 사용
for문의 형식
for (초기화식; 조건식; 증감식) {
수행문;
}
public class HelloJava {
public static void main(String[] args) {
int sum = 0;
for (int num = 0; num < 10; num++){
sum += num + 1;
}
System.out.println("1부터 10까지의 총 합은 " + sum + "입니다.");
}
}
for문은 for문의 초기화식에서 num을 초기화시켜주기 때문에 따로 초기화를 해주지 않는다.
이미 이전에 초기화식으로 변수가 초기화되었다면 초기화식을 생략해도된다.
for문 안에 if문으로 조건을 넣는다면 조건식을 생략해도된다.
증감식을 생략하고 for문 안에서 증감을 따로 넣어도된다.
모든 요소를 생략한다면 무한반복된다.
public class HelloJava {
public static void main(String[] args) {
int num;
for (num = 1; num <= 100; num++){
if (num % 3 !=0){
continue;
}
System.out.println(num);
}
}
}
continue문을 이용해서 100이하의 3의 배수 전부를 출력하는 경우
while(조건식1){ // 바깥 반복문
while(조건식2){ // 안쪽 반복문
if(조건식3){ // 조건문
break;
}
}
}
if문은 조건문이므로 안쪽 반복문을 빠져나와 조건식1의 반복문을 반복하게된다.
예를들어 학생이 아침에 일어나 밥을 먹고 버스를 타고 학교에 간다. 라는 예시에서
객체는 학생, 밥, 버스, 학교이며
학생이 밥을 먹는다 라는 표현은 학생과 밥이라는 객체 끼리의 협력으로 이루어진다.
학생이라는 객체를 student라는 클래스로 정의할 수 있으며,
학생의 이름, 학번, 사는곳을 클래스의 속성,특성이라 하며, 이를 멤버 변수 라고한다.
클래스를 정의하는 문법
public(접근제어자) class (class의 이름) {
멤버 변수;
메서드;
}
예시
public class Student {
int studentID;
String studentName;
int grade;
String address;
}
클래스 안에 내용들은 클래스의 속성, 특성을 나타내는 멤버 변수이다.
자바 프로그램은 모든 요소가 클래스 내부에 있어야 한다. 외부에는 package선언과 inport문장만 선언한다.
클래스의 이름은 항상 대문자로 시작한다 라는 사람들 끼리의 규칙이 있다
public class Student {
int studentID;
String studentName;
int grade;
String address;
public void showStudentInfo(){
System.out.println(studentName + ", " +address);
}
}
클래스 내부에서 멤버 변수 아래에 멤버 변수의 속성을 호출하는 메서드를 구현하였다
int add (int num1, int num2){
int result;
result = num1 + num2;
return result;
}
return 예약어는 함수 수행을 끝내고 함수를 호출한 곳으로 다시 되돌아갈 때도 사용한다. 이 때는 return 뒤에 반환 값을 적지 않아도 된다. (반복문의 break와 비슷한 기능)
클래스 내부에 main함수를 만드는 것
클래스 외부에 테스트용 클래스를 만드는 것
package pkg;
public class Student {
int studentID;
String studentName;
int grade;
String address;
public String getStudentName(){
return studentName;
}
public static void main(String[] args) { // main함수 생성
Student studentAhn = new Student(); // main함수 안에서 클래스를 생성
studentAhn.studentName = "안연수"; // 클래스의 멤버 변수에 값을 대입
System.out.println(studentAhn.studentName);
System.out.println(studentAhn.getStudentName());
}
}
클래스형 변수이름 = new 생성자
Student studentAhn = new Student();
위 코드는 Student 클래스 자료형으로 studentAhn라는 참조변수를 선언하고 new Student()로 클래스를 생성하여 studentAhn에 대입한다는 의미
비유하자면 클래스는 학생, 인스턴스는 안연수(학생)
참조 변수.멤버 변수
참조 변수.메서드
studentAhn.studentName = "안연수"; // 멤버 변수 사용 -> 참조 변수로 멤버 변수에 이름을 저장
System.out.println(studentAhn.getStudentName()); // 메서드 사 용 -> getStudentName() 메서드를 사용
용어 | 설명 |
---|---|
객체 | 객체 지향 프로그램의 대상, 생성된 인스턴스 |
클래스 | 객체를 프로그래밍하기 위해 코드로 만든 상태 |
인스턴스 | 클래스가 메모리에 생성된 상태 |
멤버 변수 | 클래스의 속성, 특성 |
메서드 | 멤버 변수를 이용하여 클래스의 기능을 구현 |
참조 변수 | 메모리에 생성된 인스턴스를 가리키는 변수 |
참조 값 | 생성된 인스턴스의 메모리 주소 값 |
접근 제어자 | 설명 |
---|---|
public | 외부 클래스 어디에서나 접근할 수 있다. |
protected | 같은 패키지 내부와 상속 관계의 클래스에서만 접근할 수 있고, 그 외 클래스에서는 접근할 수 없다. |
private | 같은 클래스 내부에서만 접근할 수 있다. |
비워둘 경우 | default이며 같은 패키지 내부에서만 접근할 수 있다. |