복습
형변환
package day02_dataType;
public class Reminder {
public static void main(String[] args) {
// Ctrl + D = 한줄 삭제
// Ctrl + Alt + 화살표 = 한줄복사
// Ctrl + F11 = 실행
// 파이썬과 달리 자바는 CamelCase를 사용
// 주석은 //
/*
* 멀티라인 주석
*/
// 파이썬에서는 들여쓰기로 구분했던 단위를 자바에서는 { } 중괄호로 구분
// { -> braket
// 엔터로 실행문 하나하나를 구분했다면 자바에는 ;를 마침표로 사용
// 자료형이 정적이기 때문에 자료형 변수명 방식으로 선언
int a;
a = 10;
int b =10;
float c = 3.14F;
long d = 100000000L;
boolean e = true;
System.out.println(a);
System.out.println(); // sysout + Ctrl + space
}
}
삭제 삽입 등
package day02_dataType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
public class DataType3 {
public static void main(String[] args) {
// Array - 길이가 고정적
// ArrayList - 자료형은 공통, 길이가 가변적, Array와 유사한 메서드, 변수
// 넣고, 빼기 쉽게 하기 위해
ArrayList arr = new ArrayList();
System.out.println(arr);
arr.add("morning");
arr.add("afternoon");
arr.add(1, "late morning"); // 인덱스를 통한 중간 끼워넣기가 가능
arr.add(true);
arr.add(3.14);
System.out.println(arr);
ArrayList<String> arr2 = new ArrayList();
System.out.println(arr);
arr2.add("morning");
arr2.add("afternoon");
arr2.add(1, "late morning"); // 인덱스를 통한 중간 끼워넣기가 가능
// arr2.add(true);
// arr2.add(3.14);
System.out.println(arr2);
// set
arr2.set(1, "lateMorning");
System.out.println(arr2);
System.out.println(arr2.size());
// "morning" 찾기
//String으로 자료형을 고정해뒀기 때문에 String의 메서드를 상속받아서 사용
System.out.println(arr.contains("morning"));
// remove - 삭제
arr2.remove(0); // index로 삭제
System.out.println(arr2);
arr2.remove("afternoon"); // 값으로 삭제
System.out.println(arr2);
// 같은 함수를 서로 다른 파라미터로 이용
// 함수, 메서드는 재사용을 위해 만듦
// 자바에서 가능
// 같은 메서드를 파라미터 개수가 달라도 사용할 수 있게
// 같은 메서드를 서로 다른 파라미터로 사용할 수 있게
// 오버로딩 - 같은 클래스에서 이름이 같은데 파라미터 구조가 다르면 다른 기능을 할 수 있게
// 같은 메서드를 int냐 String이냐 다른 파라미터를 받아서 다른 결과를 리턴하도록
// 오버라이딩 - 부모클래스의 메서드를 다시쓰기
// Array로 만들어서 쓰던 변수를 ArrayList로 바꾸는 경우 -> 형변환
// Array로 하나 만들어볼게요. "morning", "afternoon"
String[] arr4 = {"morning", "afternoon"}; // 메모리에 바이러니로 기억하고 있기 때문에
// list->ArrayList
ArrayList<String> arr5 = new ArrayList(Arrays.asList(arr4));
System.out.println(arr5);
// join - String의 메서드 중 split의 반대
// 1. String 변수를 만든다.
// 2. String.join(arrayList를 넣는다.)
String str = String.join(";", arr5);
// 3. sysout으로 확인. morning;afternoon
System.out.println(str);
// sort 해서 출력해야 하는 경우가 많습니다. abc 가나다 123
arr5.sort(null); // void -> 반환값 없음
//natural Order -> 오름차순
//System.out.println(arr5.add(sort(null)));
System.out.println(arr5);
arr5.sort(Comparator.reverseOrder()); // 내림차순
System.out.println(arr5);
// DataType4라는 클래스 생성 -> 1, 2, 7, 3, -10, 0이 들어있는 Arraylist를 만듭니다.
// 3.15라는 값을 삽입
// 5라는 값을 삽입
// 2 삭제
// 내림차순 정렬
}
}
내림차순 정렬 sort
package day02_dataType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
// DataType4라는 클래스 생성
// 1) 1, 2, 7, 3, -10, 0 이 들어있는 ArrayList arr을 만듭니다
// 2) 3.15 라는 값을 삽입
// 3) 5라는 값을 삽입
// 4) 2 삭제
// 5) 내림차순 정렬
public class DataType4 {
public static void main(String[] args) {
ArrayList<Integer> arrList = new ArrayList(Arrays.asList(1, 2, 7, 3, -10, 0));
System.out.println(arrList);
// 2) 3.15라는 값을 삽입
arrList.add((int)3.15); //버림
System.out.println(arrList);
// 2) 5를 삽입
arrList.add(5);
// 4) 2 삭제
arrList.remove(2);
System.out.println(arrList);
// 5) 내림차순 정렬
arrList.sort(Comparator.reverseOrder());
System.out.println(arrList);
System.out.println(arrList.size()); // 길이
// getter setter
arrList.set(2, 100);
System.out.println(arrList);
//getter - 가져오기만 할 뿐 원본 변경 x
System.out.println(arrList.get(2) + 2);
System.out.println(arrList);
//
// ArrayList<Number> arrList = new ArrayList<Number>(Arrays.asList(1, 2, 7, 3, -10, 0));
// arrList.add(3.15);
// arrList.remove(2);
// arrList.sort(Comparator.reverseOrder());
// System.out.println(arrList);
//
}
}
딕셔너리
package day02_dataType;
import java.util.HashMap;
import java.util.Map;
public class DataType5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Map -> Dictinary
// key - value
// Map이 본체, Hash 구현 방식
// ArrayList도 List가 본체, Array가 구현방식
// String String<키자료형, 벨류자료형>
//Map<String, String> map = new HashMap<String, String>();
Map<String, String> map = new HashMap();
System.out.println(map);
// 가변 자료형 C R U D
// Create
map.put("name", "kim");
map.put("age", "30");
System.out.println(map);
// Read - 전체, Key, Value
System.out.println(map.get("name")); // key로 value 호출
System.out.println(map.keySet()); // key만
System.out.println(map.values()); // value만
System.out.println(map.entrySet()); //
// Update - 있는 key에 대한 value는 변경, 없으면 삽입
map.put("name", "lee");
System.out.println(map);
// Delete
map.remove("name");
System.out.println(map);
// 특정한 key가 있는지
map.containsKey(map.containsKey("age"));
// 특정 value가 있는지
System.out.println(map.containsKey("lee"));
// 특정 key가 있는지
}
}
set
package day02_dataType;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class DataType6 {
public static void main(String[] args) {
// Set -> 집합 -> 중복되지 않고, 순서가 없는 값의 묶음
// HashSet
Set<String> set = new HashSet<>();
System.out.println(set);
// 중복되지 않는 값들만 걸러서 들어갑니다.
set.add("장정우");
set.add("신짱구");
set.add("신짱구");
System.out.println(set);
set.remove("장정우");
System.out.println(set);
System.out.println(set.isEmpty());
System.out.println(set.contains("신짱구"));
// 중복되지 않는 값만 확인할 수 있게 set3라는 set을 만들어주세요.
// "양", "염소", "염소", "염소", "염소", "양", "알파카", "알파카",
// "흑염소", "흑염소", "염소(흑)", "양(아기)", "산양"
Set<String> set3 = new HashSet<>();
set3.addAll(Arrays.asList("양", "염소", "염소", "염소", "염소", "양", "알파카", "알파카","흑염소", "흑염소", "염소(흑)", "양(아기)", "산양"));
System.out.println(set3);
// 다른 방법
String[] animals = {"양", "염소", "염소", "염소", "염소", "양", "알파카", "알파카",
"흑염소", "흑염소", "염소(흑)", "양(아기)", "산양"};
HashSet<String> set2 = new HashSet<>(Arrays.asList(animals));
System.out.println(set2);
}
}
enum
package day02_dataType;
import java.util.ArrayList;
import java.util.Arrays;
public class DataType7 {
public static void main(String[] args) {
// enum -> 파이썬 판다스 category와 같다
// SQL의 enum과 같습니다
// 값을 강제할 때 또는 반복되는 값이 나와서 매번 string으로 입력하기 귀찮을 때
// 반복적으로 같은 값을 쓴다 -> 개념적으로 상수와 같다라고 생각해주시면 됩니다
// 값으로 거의 대문자를 사용한다.
// String HashSet A....
// python, java, sql, javascript
// Python, PYTHON
System.out.println(Language.JAVA);
// 여러분이 쓸 수 있는 languageList를 담을 ArrayList를 하나 만들어주세요.
// 들어가는 자료형은 Language 입니다.
ArrayList<Language> languageList = new ArrayList(); // 이 안에는 개발자가 따로 지정한 옵션이 아닌 옵션은 들어가지 않는다.
languageList.add(Language.JAVASCRIPT);
languageList.add(Language.SQL);
System.out.println(languageList);
}
}
enum Language { // 데이터의 묶음이자 타입을 만듭니다.
JAVA, PYTHON, SQL, JAVASCRIPT // 그 타입 안에 속하는 자료들을 지정 해줍니다.
}
switch
package day02_flowControl;
public class SwitchExample {
public static void main(String[] args) {
// SwitchExample 이라는 Class를 만드셔서
// Lunch라는 enum 타입에 Chicken Kimchi Soup
// 3개의 값을 넣어주시고
// switch문으로 해당 enum이 들어오면 한국어로 결과를 출력하도록 작성해주세요
System.out.println(Lunch.Chicken);
Lunch lunch = Lunch.Chicken;
switch (lunch) {
case Chicken:
System.out.println("치킨");
break;
case Soup:
System.out.println("수프");
break;
case Kimchi:
System.out.println("김치");
break;
default:
System.out.println("모르겠음");
}
}
}
enum Lunch {
Chicken, Kimchi, Soup
}
switch 2
package day02_flowControl;
public class flowControl_switch {
public static void main(String[] args) {
// switch - case 문 -> case에 맞춰서 결과값이 switching 되기 때문이다
int a = 3;
//
switch(a) {
case 1:
System.out.println("일");
break;
case 2:
System.out.println("이");
break;
case 3:
System.out.println("삼");
break;
default:
System.out.println("몰라요");
break;
}
// switch (경우) {
// case 1:
// case1를 만족시켰을 때 실행문;
// break; // case를 만족시켰으면 더이상 뒤의 case는 실행하지 마시라
// case 2:
// case2를 만족시켰을 때 실행문;
// break;
// case 3:
// case3를 만족시켰을 때 실행문;
// break;
// default:
// else처럼 위의 case에 모두 해당되지 않을 때의 실행문;
// }
// a의 값을 확인해서 1, "일", 2 - "이", 3 = "삼", 나머지 모든 경우이면 "몰라요"
}
}
flow_if
package day02_flowControl;
public class flowControl_if {
public static void main(String[] args) {
// if 조건
int age = 16;
if (age > 18) {
System.out.println("어른입니다.");
}
else if (13 <= age && 18 > age) {
System.out.println("청소년입니다.");
}
else {
System.out.println("어린이입니다.");
}
}
// age라는 변수를 만들어서 16이라는 값을 넣고
// 나이가 18보다 크면 '어른입니다' 를 출력해주세요
// 나이가 13~18미만 '청소년입니다'
// 나머지는 '어린이입니다.'
// if ~ else
// if ~ else if ~ else
}
flow_while
package day02_flowControl;
public class flowControl_while {
public static void main(String[] args) {
// while (조건) {
// 조건이 만족될 경우의 실행문
// }
// 1. 외부에 실마리 -> while (언젠가 참이 될 조건) -> ++ -- 와 함께 많이 사용됩니다.
// 0~10까지를 출력하는 while문을 만들거에요.
int i = 0; // 초기값
// while (i < 11) {
//// System.out.println(++i);
// System.out.println(i);
// i++; // i += 1 -> 후위증가연산자
//// ++i;
// }
// // 2. while True -> if -> break 걸어주는 방법
// while (true) {
// System.out.println(i++);
//
// if (i == 11) {
// break;
// }
// }
// 0~10 사이에서 값을 하나씩 증가시키면서 3의배수는 출력하지 않는 while문을 만들어 주세요.
// continue -> 한번만 상황을 빠져나가는 명령어
i = 0;
// while (i < 11) {
// i++;
// if (i % 3 == 0) {
// continue;
//// System.out.println("3의배수입니다");
//// Unreachable code
// }
// System.out.println(i);
//
while (true) {
i++;
if (i % 3 == 0) {
continue;
}
System.out.println(i);
if (i > 10) {
break;
}
}
// 0에서 11사이에서 3의 배수만 출력하는 while문
// 최대한 효율적으로 - 짧거나(개발 생산성), 덜 반복하거나(메모리 효율)
while (i < 11) {
System.out.println(i);
i += 3;
}
// do(딱 한번은 판단없이 실행) while(조건을 만족하는 동안만 실행)
// i < 11
i = 13;
do {
System.out.println(i);
} while (i < 11);
}
}
조건문 예시
package day02_flowControl;
public class IfExample {
public static void main(String[] args) {
// IfExample 이라는 class를 만드셔서
// arr 이라는 int Array에 값을 받아올 건데
// size가 0이거나 null인 경우에는
// "결과가 없습니다"를 화면에 출력하는 조건문을 만들고
// 실행해주세요.
int arr[] = null;
System.out.println(arr);
// int arr1[] = null;
// System.out.println(arr1);
// // 1. if ~ else if - size가 0이거나 null
// if (arr == null) {
// System.out.println("결과가 없습니다");
// } else if (arr.length == 0) {
// System.out.println("결과가 없습니다");
// }
// 2. 다중조건 -1. || 첫번째 조건 확인 true -> 두번째는 보지도 않고 넘김 (Circuit Evaluation)
// if (arr == null || arr.length == 0) {
// System.out.println("결과가 없습니다");
// }
// 2. 다중조건 -2.
// java.lang.NullPointerException
// null 이 가지지 않는 변수나 함수를 사용하려고 할 때 나는 에러
// if (arr.length == 0 || arr == null ) {
// System.out.println("결과가 없습니다");
// }
// 3. 중첩조건문
// java.lang.NullPointerException
// null 이 가지지 않는 변수나 함수를 사용하려고 할 때 나는 에러
if (arr != null ) {
System.out.println("arr은 null이 아닙니다.");
if (arr.length==0) {
System.out.println("결과가 없습니다.");
}
} else {
if (arr == null) {
System.out.println("결과가 없습니다");
}
}
}
}
연산자
package day02_flowControl;
public class operand {
// 연산자 - 단항 / 이항 / 삼항 연산자
public static void main(String[] args) {
// 연산자
// 부호연산자 ( +, - ) - 부호를 결정하는 연산자
int num = +9;
int num1 = -9;
System.out.println(num);
System.out.println(num1);
// 대입연산자 =
int a = 1;
// 단항: 증감연산자 (전위연산자 / 후위연산자)
System.out.println(a); // 1
// 실행 후에 값을 1 추가하고 싶은 경우 - 후위연산자
System.out.println(a++); // 1
System.out.println(a); // 2 a = a+1
// 실행 전에 값을 1 추가하고 싶은 경우 - 전위연산자
System.out.println(++a); // 3
System.out.println(a); // 3 a+1 = a
// 관계연산자 >, <, <=, >=, ==, != -> true/false 로 판단의 결과 리턴
int b = 3;
System.out.println(a == b);
System.out.println(a != b);
// 논리연산자 &&(and), ||(or), !(not) -> true
System.out.println((a > 0) && (b > 0));
System.out.println((a > 0) || (b > 0));
System.out.println((a > 0) || !(b > 0));
System.out.println((a > 0) && !(b > 0));
// 비트연산자
System.out.println((a > 0) & (b > 0));
System.out.println((a > 0) | (b > 0));
System.out.println((a > 0) | !(b > 0));
System.out.println((a > 0) & !(b > 0));
boolean c = false;
boolean d = false;
System.out.println(c && (d = true));
// && 연산 -> c를 판단할 때 결과는 확정
// d에 대해서는 보지도 않음
// d = true 는 실행 안됨
System.out.println(d);
boolean f = false;
boolean g = false;
System.out.println(f & (g = true));
System.out.println(g);
// 비트연산은 앞 뒤를 다 보고 연산 -> f의 결과와 상관없이 g를 실행
// 복합대입연산자 += -> 1이 아닌 어떤 값을 사칙연산에서 적용
System.out.println(a);
a = a % 2;
System.out.println(a);
a %= 2; // a = a + 2;
System.out.println(a);
// 조건연산자(삼항연산자) -> 간단한 조건문 대신 할 수 있어서
// (조건) ? 참 : 거짓
int age = 16;
String answer = (age > 18) ? "어른입니다" : "어린이입니다";
System.out.println(answer);
a = 5;
b = 3;
boolean flag = (a > b) && (a > 0);
System.out.println(flag);
}
}
for문
package day02_flowControl;
public class flowControl_for {
public static void main(String[] args) {
// int i = 0; // 초기값
// while (i < 11) { // 조건식
//// System.out.println(++i);
//// i++; // 증감식
// }
// for (초기값;조건식;증감식){
// }
int a = 3;
// int a = 3;
for (int i = 0; i < 11; i++){
System.out.println(i);
}
// 2씩 건너뜀 -> 보기에 편하지는 않죠
for (int i = 0; i < 11; i++){
System.out.println(++i);
}
// for문 - 참조자료형과 많이 사용됨 arr[i]
// 다양한 치즈의 종류를 for문으로 출력
String[] cheese = {"cheddar", "gouda", "edam"
, "provolone", "parmesan"};
// 초기값 조건식 증감식
for (int i = 0; i < cheese.length ;i++) {
System.out.println(cheese[i]);
}
System.out.println("--------");
// 0, 2, 4번 인덱스만 호출
for (int i = 0; i < cheese.length ; i+=2) {
System.out.println(cheese[i]);
}
// 치즈를 인덱스 거꾸로 출력
// 초기값 조건식 증감식
for (int i = cheese.length - 1 ; i >= 0; i--) {
System.out.println(i+ ' ' + cheese[i]); // 4 3 2 1 0
}
System.out.println("---------");
// for chees in cheese
// 방향 조절이 불가능합니다
// 집합자료형에서 인덱스를 경유하지 않고 값을 가져올 수 있습니다
for (String chees : cheese) {
System.out.println(chees);
}
}
}
java 쉽지 않다..
'Study Language > Java' 카테고리의 다른 글
| java 4 (1) | 2024.01.24 |
|---|---|
| 우리FISA AI엔지니어링 - JAVA - lambda, spring, git협업 (0) | 2024.01.15 |
| 우리 FISA AI엔지니어링 - JAVA 1 (1) | 2024.01.05 |