1. 데이터 출력
System.out.print("안녕하세요.");
System.out.println("안녕하세요. 줄바꿈 가능합니다.");
2. 데이터 입력
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
double height = scanner.nextDouble();
int age = scanner.nextInt();
double height = scanner.nextDouble();
3. 조건문
int score = 70;
if(score >= 80){
System.out.print("A");
}else if(score >= 70){
System.out.print("B");
}else{
System.out.print("C");
}
System.out.print(" 점수를 받았습니다.");
if(score >= 80){
System.out.print("A");
}else if(score >= 70){
System.out.print("B");
}else{
System.out.print("C");
}
System.out.print(" 점수를 받았습니다.");
4. switch 문
int menu = 2;
switch (menu) {
case 1:
System.out.println('커피선택');
break;
case 2:
System.out.println('차 선택');
break;
default:
System.out.println('잘못된 선택');
}
switch (menu) {
case 1:
System.out.println('커피선택');
break;
case 2:
System.out.println('차 선택');
break;
default:
System.out.println('잘못된 선택');
}
5. 반복문
for (int i = 1; i <= 5; i++) {
System.out.println("반복: " + i);
}
System.out.println("반복: " + i);
}
int i = 1;
while (i <= 5) {
System.out.println("반복: " + i);
i++;
}
while (i <= 5) {
System.out.println("반복: " + i);
i++;
}
int i = 1;
do {
System.out.println("반복: " + i);
i++;
} while (i <= 5);
do {
System.out.println("반복: " + i);
i++;
} while (i <= 5);
6. 배열 - length 고정
int[] scores = {90, 80, 70};
String[] names = {"철수", "영희", "민수"};
String[] names = {"철수", "영희", "민수"};
System.out.println(names[0]); // 철수
System.out.println(scores.length); // 3
7. 메서드
public static void sayHello() {
System.out.println("안녕하세요!");
}
public static int add(int a, int b) {
return a + b;
}
System.out.println("안녕하세요!");
}
public static int add(int a, int b) {
return a + b;
}
8. List - length 가변
import java.util.*;
List<String> names = new ArrayList<>();
names.add("철수");
names.add("영희");
- new ArrayList<>()는 ArrayList 클래스의 인스턴스(객체)를 생성하는 코드입니다.
- 자바에서 List는 인터페이스이기 때문에, 실제로 사용할 때는 반드시 구현체(예: ArrayList, LinkedList 등)로 객체를 만들어야 합니다.
- new 키워드를 사용하지 않으면, 메모리에 리스트가 만들어지지 않으므로 사용할 수 없습니다
9. Map
import java.util.*;
Map<String, String> user = new HashMap<>();
user.put("name", "민수");
user.put("email", "minsu@test.com");
10. Set
import java.util.*;
Set<String> names = new HashSet<>();
names.add("김철수");
names.add("이영희");
System.out.println("Set 내용: " + names);
11. List 안에 Map 형식 만들기
//사용자1
Map<String, Object> user1 = new HashMap<>();
user1.put("name", "david");
user1.put("age", 20);
user1.put("emial","david@naver.com");
//사용자2
Map<String, Object> user2 = new HashMap<>();
user2.put("name", "emily");
user2.put("age", 30);
user2.put("emial","emily@naver.com");
//사용자그룹
List<Map<String, Object>> db = new ArrayList<>();
db.add(user1);
db.add(user2);
System.out.println("user all:"+db);
System.out.println("user1:"+db.get(0));
for(int i=0; i < db.size(); i++ ){
System.out.println("user name :" + db.get(i).get("name"));
}
12. 클래스
Main.java
public class Main {
public static void main(String[] args) {
// 예제 2: 동일한 경로에 있는 class는 import가 필요 없다.
new User("a", 2);
User user1 = new User("b", 3);
System.out.println("외부 출력"+user1.name);
System.out.println("외부 출력"+user1.age);
User.java - private
public class User {
public String name = "David";
private int age = 20;
// 생성자 constructor : new 연산자로 인스턴스 생성시 자동으로 실행되는 생성자 안쪽의 함수
// 클래스에서 인스턴스 생성시 전달되는 인자가 생성자함수 내부로 전달
public User(String n, int a) {
name = n;
age = a;
System.out.println("내부 출력"+name);
System.out.println("내부 출력"+age);
}
}
13. 클래스 - this 키워드
this는 클래스로 생성된 인스턴트를 가리키며, this를 이용해 자신의 변수를 선택할 수 있다.
이렇게 하면 매개변수와 이름이 동일해도 구분해서 사용할 수 있다.
public class User {
String name;
public User(String name) {
this.name = name; // 필드와 파라미터 구분
}
}
14. 패키지로 묶기 - package User
아래와 같이 main과 별도로 패키지를 생성할 수 있다.
패키지로 묶이는 파일에는 상단에 패키지를 선언해준다.
package user;
패키지를 사용하는 파일에는 import를 사용해준다.
import user.User;
import user.UserHobby;
15. 클래스 상속하기
- 클래스명 뒤에 extends '클래스명'을 선언한다.
- 생성자 함수 안에 super와 상속받을 변수를 입력한다.
public class UserHobby extends User{
// 새로운 취미 리스트가 담길 멤버 변수
private List<String> hobbies;
public UserHobby(String userid, String email, List<String> hobbies){
// 상위 클래스인 User클래스를 호출해서 자동으로 1,2번째 인자값을 넘겨줌
super(userid, email);
// 추가적인 List값만 인스턴스에 추가로 넘겨줌
this.hobbies = hobbies;
}
//getter
public List<String> getHobbies(){
return this.hobbies;
}
//setter
public void setHobbies(List<String> hobbies){
this.hobbies = hobbies;
}
public void addHobby(String hobby){
this.hobbies.add(hobby);
}
}
public class Main {
public static void main(String[] args) {
// 예제 5 - 클래스 상속(확장)
// 예제4
User user1 = new User("David", "abc@naver.com");
user1.setName("Andy");
String userName = user1.getName();
System.out.println(userName);
// Arrays.asList로 매개변수 한번에 입력
ArrayList<String> hobbies = new ArrayList<>(Arrays.asList("reading", "music", "drawing"));
// UserHobby 확장 클래스의 세번째 인자값으로 취미 리스트 전달
UserHobby user2 = new UserHobby("Emily","emily@naver.com", hobbies);
System.out.println(user2.getHobbies());
16. 클래스 오버라이딩(부모속성 덮어씌우기)
User.java
public String getName(){
return this.userid;
}
UserHobby.java
//오버라이딩
@Override
public String getName(){
return super.getName() + "["+String.join(",",hobbies)+"]";
}
Main.java
String userNameWidthHobbies = user2.getName();
System.out.println(userNameWidthHobbies);
결과:
Emily[reading,music,drawing]
Emily[reading,music,drawing]
17. 인터페이스(클래스의 타입) - 필수 메서드'명' 지정
IUser.java
package user;
// User 클래스가 사용할 전용 툴 (클래스 전용 커스텀 타입)
// 쓰는 목적 : 특정 클래스안에 약속된 메서드만 등록하가 위함
// getter와 setter는 선택적으로 등록 가능하다.
// setter는 보안상의 이유로 등록하지 않는 게 일반적이다.
// ㄴ 왜냐하면 interface는 외부에서 확인 가능하기 때문이다.
public interface IUser {
String getName();
String getEmail();
}
User.java
package user;
public class User implements IUser{
private String userid;
private String email;
private String address;
public User(String userid, String email) {
this.userid = userid;
this.email = email;
}
// getter, setter 구분
// getter: 이미 생성된 인스턴트 정보를 변경처리 하지 않음
// setter: 이미 생성된 인스턴트 정보를 어떤식으로든 변경
public String getName(){
return this.userid;
}
public String getEmail(){
return this.email;
}
public void setName(String userid){
this.userid = userid;
}
public void setEmail(String email){
this.email = email;
}
public void delAll(){
this.userid = null;
this.email = null;
}
}
객체지향 정리
- 대단위 프로젝트에서 동일한 품질의 객체(인스턴스)를 대량 생산하기 위한 시스템적인 틀
- 웹에서의 인스턴스 예시 : 개별적인 게시글 (강제된 개별적 게시글 데이터 형식)
- 클래스 : 인스턴스 생성하는 시스템적인 틀
- 인터페이스 : 클래스의 형식을 강제하는 설계서 (인터페이스에 기술된 메서드는 실 클래스에 포함되어야 함)
- extends : 기존 클래스에 새로운 확장 클래스 연결
- override : 기존 클래스의 특정 메서드를 덮어쓰기
Tags:
웹개발_교육