✏️ Truthy && Falsey


🟩 Truthy

 

JavaScript에서, 참 같은 값(Truthy)인 값이란 Boolean을 기대하는 문맥에서 true로 평가되는 값입니다. 따로 거짓 같은 값으로 정의된 값이 아니면 모두 참 같은 값으로 평가됩니다. (예: false, 0, -0, 0n, "", null, undefinedNaN 등)

   

    if (true)
    if ({})
    if ([])
    if (42)
    if ("0")
    if ("false")
    if (new Date())
    if (-42)
    if (12n)
    if (3.14)
    if (-3.14)
    if (Infinity)
    if (-Infinity)
 

 

https://developer.mozilla.org/ko/docs/Glossary/Truthy

 

참 같은 값 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

JavaScript에서, 참 같은 값(Truthy)인 값이란 불리언을 기대하는 문맥에서 true로 평가되는 값입니다. 따로 거짓 같은 값으로 정의된 값이 아니면 모두 참 같은 값으로 평가됩니다. (예: false, 0, -0, 0n, "

developer.mozilla.org


🟩 Falsey

거짓 같은 값(Falsy, falsey로 쓰이기도 함) 값은 Boolean 문맥에서 false로 평가되는 값입니다.

JavaScript조건절 (en-US), 반복문 (en-US) 등 불리언 값이 필요한 곳에서 형 변환을 이용해 특정 값을 불리언 값으로 변환합니다.

다음은 8가지 거짓 같은 값들입니다:

false 키워드 false
0 숫자 zero
-0 음수 zero
0n BigInt. 불리언으로 사용될 경우, 숫자와 같은 규칙을 따름. 0n은 거짓 같은 값.
"" string
null null - 아무런 값도 없음
undefined undefined - 원시값
NaN (en-US) NaN - 숫자가 아님

https://developer.mozilla.org/ko/docs/Glossary/Falsy

 

 

거짓같은 값 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

거짓 같은 값(Falsy, falsey로 쓰이기도 함) 값은 불리언 문맥에서 false로 평가되는 값입니다.

developer.mozilla.org


 

✏️ eval()

var code = "var x=30;";

    eval(code);

    console.log(code);

 

eval()의 인자는 문자열 입니다. 문자열 안에 연산식을 코드로 실행한다. (해킹의 위혐이 있으니 사용하지 말것)

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/eval

 

eval() - JavaScript | MDN

**eval()**은 문자로 표현된 JavaScript 코드를 실행하는 함수입니다.

developer.mozilla.org


✏️ JSON.parse()

JSON 문자열의 구문을 분석하고, 그 결과에서 JavaScript 값이나 객체를 생성합니다.

var str = '{"id":1, "username":"newlec", "password":"111"}';
var member = JSON.parse(str);//JSON.parse(str);
console.log(member.username);

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

 

JSON.parse() - JavaScript | MDN

JSON.parse() 메서드는 JSON 문자열의 구문을 분석하고, 그 결과에서 JavaScript 값이나 객체를 생성합니다. 선택적으로, reviver 함수를 인수로 전달할 경우, 결과를 반환하기 전에 변형할 수 있습니다.

developer.mozilla.org


✏️ JSON.stringify() ⭐️중요~!

 

JSON.stringify() 메서드는 JavaScript 값이나 객체를 JSON 문자열로 변환합니다. 선택적으로, replacer를 함수로 전달할 경우 변환 전 값을 변형할 수 있고, 배열로 전달할 경우 지정한 속성만 결과에 포함합니다.

 

var member = { id: 1, username: "dragon", password: 111 };

var json = JSON.stringify(member);//JSON.stringify(member); -> 문자열로 자동으로 변환해줌

console.log(json);


https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

 

JSON.stringify() - JavaScript | MDN

JSON.stringify() 메서드는 JavaScript 값이나 객체를 JSON 문자열로 변환합니다. 선택적으로, replacer를 함수로 전달할 경우 변환 전 값을 변형할 수 있고, 배열로 전달할 경우 지정한 속성만 결과에 포함

developer.mozilla.org


 

'IT > JavaScript' 카테고리의 다른 글

[JS] ✏️ Infinity / ifFinite()  (0) 2023.07.17
[JS] ✏️ NaN (Not a Number) / isNaN()  (0) 2023.07.17
[JS] ✏️ Nullish (??)  (0) 2023.07.17
[JS] ✏️ Logical AND(&&) & OR( | | )  (0) 2023.07.17
[JS] ✏️ Truthy && Falsey  (0) 2023.07.17

🟩 제네릭(Generic)이란?

 

콜렉션을 사용하면서 반환하는 값무엇 인지 모르면 치명적이게 된다.

 

그래서 우리는 자료형식을 비우게 된다.


자바에서는 생성된 자료형식으로 Object를 만들고, 담고 빼줄때 사용자가 원하는 형식으로 형변환을 해준다.

 

 

Object가 들어오고, 나갈때 사용자가 원하는 어떠한 형식으로 바꿔주는 것을 Generic이라고 한다.

 

GList<String,Integer> list = new GList<String,Integer>();

반드시 Object로 변환이 가능한 Wrapper형식으로 적어줘야한다. [int (x) / Integer (o)]

 

public class GList<타입, 두번째타입>
public class GList<T>//상징적으로 <T>를 많이 씀

 


예시 코드

package com.newlecture.app.util;

public class Program {
    public static void main(String[] args) {
        GList<Integer> list = new GList<>();
        list.add(3);
        list.add(5);
        int size = list.size();
        System.out.printf("size : %d\n",size);

        list.clear();
        size = list.size();
        System.out.printf("size : %d\n",size);

        list.add(7);
        int num = (Integer) list.get(0); //Object -> Integer
        System.out.printf("num : %d\n",num);
        //num= (Integer)list.get(1);
    }
}
package com.newlecture.app.util;

public class GList<T> {

    private Object[] nums;
    private int current;

    public GList(){
        nums = new Object[3];
        current =0;
    }

    public void add(T num) {
        nums[current]=num;
        current++;
    }

    public void clear() {
//        for(int i=0;i<current;i++)
//            nums[i]=0;

        //nums = new int[3];
        current = 0;
    }

    public int size() {
        return current;
    }

    public T get(int index) {
        if(current<=index)
            throw new IndexOutOfBoundsException();

        return (T)nums[index];
    }
}

🟩 가변크기 컬렉션으로 변경하기

package com.newlecture.app.util;

public class Program {
    public static void main(String[] args) {
        GList<Integer> list = new GList<>();
        list.add(3);
        list.add(5);
        int size = list.size();
        System.out.printf("size : %d\n",size);

        list.clear();
        size = list.size();
        System.out.printf("size : %d\n",size);

        list.add(7);
        int num = (Integer) list.get(0); //Object -> Integer
        System.out.printf("num : %d\n",num);
        //num= (Integer)list.get(1);
    }
}
package com.newlecture.app.util;

public class GList<T> {

    private Object[] nums;
    private int current;
    private int capacity;//용량
    private int amount;//추가 증가량

    public GList() {
        current = 0;
        capacity = 3;
        amount = 5;
        nums = new Object[capacity];
    }

    public void add(T num) {
        //만약에 공간이 모자라면
        if (capacity <= current) {
            Object[] temp = new Object[capacity + current];

            for(int i =0;i<current;i++)
                temp[i]=nums[i];

            nums = temp;
            capacity+=amount;
        }

        nums[current] = num;
        current++;
    }

    public void clear() {
//        for(int i=0;i<current;i++)
//            nums[i]=0;

        //nums = new int[3];
        current = 0;
    }

    public int size() {
        return current;
    }

    public T get(int index) {
        if (current <= index)
            throw new IndexOutOfBoundsException();

        return (T) nums[index];
    }
}

🟩 자바 컬렉션의 3대 계보 (Set/List/Map)

 

        List<Integer> list = new ArrayList<>();
        list.add(3);//Index 0
        list.add(5);//Index 1
        list.add(7);//Index 2
        list.add(8);//Index 3

        list.get(2);// 7이라는 값이 나온다.
        System.out.println(list.get(2));
        System.out.println(list.size());

//        ----------------------------------------------
        //중복제거할때 유용하게 사용한다.
        Set<Integer> set = new HashSet<>();
        set.add(3);
        set.add(5);
        set.add(6);
        set.add(7);
        set.add(7);
        set.add(7);
        System.out.println(set.add(7));
        System.out.println(set.add(8));
        System.out.println(set.size());

//        ---------------------------------------------
        Map<String, Object> map = new HashMap<>();
        map.put("id", 3);
        map.put("title", "Hello");
        map.put("hit", 12);
        
        System.out.println(map.get("title"));

'IT > JAVA' 카테고리의 다른 글

[Java] 수업내용 메모  (0) 2023.08.30
[JAVA] ✏️ Boxing과 Unboxing  (1) 2023.07.09
[Java] 컬렉션(Collection) ?  (1) 2023.07.09
[Java] 함수 오버로드(overload)  (1) 2023.07.04
[Java]구조적인 프로그래밍(메서드)  (2) 2023.06.28

🟩 Java에서 Primitive 데이터 타입

 

  • 정수타입(byte, short, int, long)
  • 실수타입(float, double)
  • 논리타입(boolean)
  • 문자타입(char)

총 4가지 타입으로 구성되있습니다. 

 

이와 비슷하게 Wrapper 타입이라고 각 Primitive 별 참조타입이 따로 존재합니다.

 

🟩 Wrapper 타입

 

  • 정수타입(Byte, Short, Integer, Long)
  • 실수타입(Float, Double)
  • 논리타입(Boolean)
  • 문자타입(Character)

🟩 Boxing 과 Unboxing 의미와 사용 이유

 

위의 Primitive 타입Wrapper 타입을 서로 왔다갔다(Casting) 할때 사용한다.

 

  • Boxing : Primitive -> Wrapper
  • Unboxing : Wrapper -> Primitive

 

자바에서는 기본형 타입(Primitive)값을 저장하기 때문에 Collection에 담을 수 없다.

 

이를 해결하기 위해  기본형 타입(Primitive Type)Boxing해서 참조 타입(Reference Type)으로 변환해서 Collection에 담을 수 있게 된다.

 


🟩 Boxing 과 Unboxing 방법

 

int x = 3;
Integer 정수갑옷 = Integer.valueOf(x);// new Integer(x); Boxing
int x1 = 정수갑옷.intValue();// Unboxing
		

String y = "hello";// 태생이 갑옷을 입고있는 문자열!

double d1 = 3.9;
Double 더블갑옷 = Double.valueOf(d1);// new Double(d1);
double d2 = 더블갑옷.doubleValue();// Unboxing

// ---정수를 문자열로 변환 & 문자열을 더블로 변환.
int n1 = 10;
String s1 = String.valueOf(n1);

String s2 = "30.2";
double n2 = Double.parseDouble(s2);

 

아래 소스코드 원본을 볼 수 있다.

👇 👇

 

https://beastit.tistory.com/34

 

[Java] 문자열 (String)

public class program { public static void main(String[] args) { String name1 = "아이유";// 실행환경이 입힌 갑옷 //String name2 = "아이유"; String name2 = new String("아이유");// 내가 입힌 갑옷 // ==이라는 기호가 값이 같은

beastit.tistory.com

 

 

컬렉션에 관해 궁금하다면 아래 링크를 참조하면 된다.

 

https://beastit.tistory.com/87

 

[Java] 컬렉션(Collection) ?

🟩 컬렉션(Collection)이란? 데이터를 수집하고 관리해 주는 객체 🟩 Why? 데이터 관리를 직접 할 필요가 없다. 배열을 사용할 때는 한번 설정한 공간을 더 늘리거나, 줄이지 못함! 그러나 컬렉션을

beastit.tistory.com

 

'IT > JAVA' 카테고리의 다른 글

[Java] 수업내용 메모  (0) 2023.08.30
[Java] 제네릭(Generic)  (1) 2023.07.09
[Java] 컬렉션(Collection) ?  (1) 2023.07.09
[Java] 함수 오버로드(overload)  (1) 2023.07.04
[Java]구조적인 프로그래밍(메서드)  (2) 2023.06.28

🟩 컬렉션(Collection)이란? 

 

데이터수집하고 관리해 주는 객체


🟩 Why?

데이터 관리를 직접 할 필요가 없다.

 

배열을 사용할 때는 한번 설정한 공간더 늘리거나, 줄이지 못함!

 

그러나 컬렉션을 사용하면 이 문제를 해결할 수 있다.

 

 

컬렉션가변길이 배열을 사용하고 싶을 때 쓰는 객체

 


✏️ 정수형을 관리할 수 있는 컬렉션 예시

package com.newlecture.app.util;

public class Program {
    public static void main(String[] args) {
        IntList list = new IntList();
        list.add(3);
        list.add(5);
        int size = list.size();
        System.out.printf("size : %d\n",size);

        list.clear();
        size = list.size();
        System.out.printf("size : %d\n",size);

        list.add(7);
        int num = list.get(0);
        System.out.printf("num : %d\n",num);
    }
}

package com.newlecture.app.util;

public class IntList {

    private int[] nums;
    private int current;

    public IntList(){
        nums = new int[3];
        current =0;
    }

    public void add(int num) {
        nums[current]=num;
        current++;
    }

    public void clear() {
//        for(int i=0;i<current;i++)
//            nums[i]=0;

        //nums = new int[3];
        current = 0;
    }

    public int size() {
        return current;
    }

    public int get(int index) {
        if(current<=index)
            throw new IndexOutOfBoundsException();

        return nums[index];
    }
}

 

📌 우리가 정수형 컬렉션을 만들면 정수형만 담을 수 있다.

 

 

  • Exam이라는 객체를 관리하고 싶으면 Exam 방식이 필요하다.
  • 문자형을 관리하고 싶으면 문자형 방식이 필요하다.
  • 실수라는 객체를 관리하고 싶으면 실수형 방식이 필요하다.

 

 

✏️ 일괄적으로 한 번에 관리하고 싶은데 이런 방법이 있을까???

 

💡 있음 💡


 

자바에서 모든 클래스Object라는 녀석을 상속받게 돼있다.

 

 

어떠한 클래스도 Object라는 부모를 가진다면 모든 객체Object라는 단일화된 형식으로 참조할 수 있다.

 

👇 👇 👇 👇 👇

 

 

그러나!

 

기본형식(Primitive)으로 사용하는 값들(int, float, double.... 등등)은 참조할 수 없다.

 

기본 형식값은 담는 것이다.

👇 👇

 

이 문제를 해결하기 위해 JDK5.0부터 새로운 것이 등장했다.(Auto Boxing/ UnBoxing)


 

🟩 Wrapper 클래스와 Auto Boxing/ UnBoxing

 

Object라는 자료형이 있다. 

 

형식 자체는 참조형이어서 객체 자체는 참조할 수 있지만, 값은 담는 것이어서 참조할 수 없다.

 

 

" 3 " 이라는 녀석 (Primitive)이 참조가 되려면 공간으로 바뀌어야 하는데, 공간이 되도록 감싸는 것이 필요하다. 

 

이것을 Boxing이라고 한다.

 


 

 

이렇게 Boxing 한 값은 객체여서 나중에 쓰려면 다시 기본형식(Primitive)으로 바꿔 주어야 한다.

 

이것을 UnBoxing이라고 한다.

 

 


 

이렇게 Boxing에 사용되는 것Wrapper 클래스라고 한다.

 

👇 👇

 

 

String참조형이어서 바로 참조가 가능하다.

 

 

 

이제 값을 이용할 수 있는 변수 형식이 2가지(값형식, 참조형식)가 생긴다.

 

👇 👇

 

 

 

동작하는 것이 같다고 "Integer"로만 사용하게 되면, 내부적으로 Boxing, UnBoxing이 연산이 자꾸 일어나

 

때문에 연산작업이 계속되어서 효율이 안 좋아진다!

 

(한 두 개 작업하면 괜찮지만, 수백만 개의 데이터를 연산하면... 어후...)

 


https://beastit.tistory.com/34

 

[Java] 문자열 (String)

public class program { public static void main(String[] args) { String name1 = "아이유";// 실행환경이 입힌 갑옷 //String name2 = "아이유"; String name2 = new String("아이유");// 내가 입힌 갑옷 // ==이라는 기호가 값이 같은

beastit.tistory.com

 

위 링크는 수업 초기에 선생님께서 "정수갑옷"이라는 표현을 사용해서 설명해 주신 게... 이제 와서 보니 Wrapper Class에

 

관한 설명이었다! 지금 너무 속이 후련해서 행복하다!   뉴레카! 유레카! 유렉쌤짱!

 


🟩 Object 컬렉션으로 변경하기

 

package com.newlecture.app.util;

public class Program {
    public static void main(String[] args) {
        ObjectList list = new ObjectList();
        list.add(3);
        list.add(5);
        int size = list.size();
        System.out.printf("size : %d\n",size);

        list.clear();
        size = list.size();
        System.out.printf("size : %d\n",size);

        list.add(7);
        int num = list.get(0); //Integer
        System.out.printf("num : %d\n",num);
        num= list.get(1);
    }
}

package com.newlecture.app.util;

public class ObjectList {

    private Object[] nums;
    private int current;

    public ObjectList(){
        nums = new Object[3];
        current =0;
    }

    public void add(Object num) {
        nums[current]=num;
        current++;
    }

    public void clear() {
//        for(int i=0;i<current;i++)
//            nums[i]=0;

        //nums = new int[3];
        current = 0;
    }

    public int size() {
        return current;
    }

    public Object get(int index) {
        if(current<=index)
            throw new IndexOutOfBoundsException();

        return nums[index];
    }
}

 

이렇게 이전 int형 컬렉션Object형식으로 변환해주었다.


 

참조를 반환해서 오류가 발생한다. 

 

 

 

Object -> Integer로 수정하면 위 문제가 해결된다.

 

👇 👇

 

 


더 자세하게 알고 싶으면 아래 뉴렉처 선생님의 강의를 들어보세요. 강추!

 

👇 👇

 

https://youtube.com/playlist?list=PLq8wAnVUcTFWKOIbvo18pJZ9zsxtXz_-k 

 

5. 자바 컬렉션과 제네릭 강의

 

www.youtube.com

 

'IT > JAVA' 카테고리의 다른 글

[Java] 제네릭(Generic)  (1) 2023.07.09
[JAVA] ✏️ Boxing과 Unboxing  (1) 2023.07.09
[Java] 함수 오버로드(overload)  (1) 2023.07.04
[Java]구조적인 프로그래밍(메서드)  (2) 2023.06.28
[JAVA] 변수와 상수변수  (0) 2023.06.26

🟩 문제

 

 

🟩 해결방법

  • 배열속에 있는 김서방을 찾아보자!

🟩 코드

public String solution(String[] seoul) {
        String answer = "";
        int find = 0;

        for(int i=0;i<seoul.length;i++)
            if(seoul[i].equals("Kim"))
                find=i;

        return answer="김서방은 "+find+"에 있다";
    }

+ Recent posts