Java 기초1

jungseo·2023년 4월 17일
0

Java

목록 보기
1/10

학습 내용

1. 자바의 특징

	1) 운영체제에 독립적
    2) 객체 지향 언어
    3) 함수형 프로그래밍 지원 (람다식, 스트림)
    4) 자동 메모리 관리
    

		이곳 저곳 찾아봐도 2)3) 특징들이 아직 무슨말인지 모르겠다..

    

2. 변수

	변수란 값이 변할 수 있는 데이터를 임시로 보관하기 위한 수단이다.
    
    기억하고자 하는 값이 얼만큼의 메모리 공간을 필요로 하는지 파악한뒤
    차지하는 용량 만큼의 메모리 공간을 확보하고
    값을 저장한 공간에 이름을 붙이고
    그 공간에 값을 저장한다.
    
    *상수는 값을 재할당 할 수 없는 변수이다.
    
    

3. 타입

	타입은 값의 유형 및 종류를 의미하고 타입에 따라 
    값이 차지하는 메모리 공간의 크기와 값이 저장되는 방식이 결정된다.
    
    기본 타입(primitive type) : 
    		값을 저장할 때 데이터의 실제 값이 저장된다.
    	     ex) 정수 타입, 실수 타입, 문자 타입, 논리 타입
                 int a = 100;
             
        정수 타입 : byte < short < int < long
        	오버플로우시 최대값을 넘어 최소값으로 순환
            언더플로우시 최소값을 넘어 최대값으로 순환
        
        실수 타입 : float < double
        	float의 경우 뒤에 f를 붙여야 한다. float pi = 3.14f;
            오버플로우시 값은 무한대
            언더플로우시 값은 0
            
        논리 타입 : boolean
        	true 혹은 false의 값만 가진다.
            
        문자 타입 : char ''
        	하나의 문자형 값을 가진다.
            문자형 값을 저장할때 해당 값의 유니코드 숫자값을 저장하고 값을 불러올때
            숫자값을 유니코드로 인식하여 해당 숫자와 일치하는 문자로 변환해 준다.
				char a = a;
                char A = 97;
                System.out.print(a); -> a 출력
                System.out.print(A); -> a 출력
    참조 타입(reference type) : 
    		값을 저장할 때 데이터가 저장된 곳을 나타내는 주소값이 저장된다.
            저장하고자 하는 것이 존재하는 위치를 저장한다...
            객체를 저장한다......
    		 ex) 정수, 실수, 문자, 논리 타입 제외 나머지 타입
                 Object reference = new Object();
                 reference를 출력하면 주소값이 출력되는것 같다..

    타입의 변환 (바이트 크기)
    	  자동 변환 가능 :byte(1) -> short(2)/char(2) -> int(4) -> long(8) 
                      -> float(4) -> double(8)
            
            *float과 double의 경우 정수형보다 바이트가 작아도
            표현 할 수 있는 값이 더 정밀해 자동으로 변환될 수 있다.
            
            메모리 용량이 더 큰 타입에서 작은 타입으로 변환할 때는
            수동으로 변환해 주어야 한다. (casting)
			int a = 32768;
            short b = (short)a;
            System.out.print(b); // -32768

4. 문자열

	java에서 클래스 타입을 사용해 문자열을 다룬다.
    -> 문자열은 String class를 통해 다뤄지고
       그안에 있는 여러 문자열 메서드를 사용할 수 있다.
       
       문자열 리터럴을 String 타입의 변수에 할당하는 방법
       String a = "Aa";
       
       String 클래스의 인스턴스를 생성하는 방법
       String b = new String("Bb");
      String name1 = "jungseo";                    // junseo
      String name2 = "jungseo";                    // junseo

      String name3 = new String("jungseo");        // junseo
      String name4 = new String("jungseo");        // junseo

      boolean comparison1 = name1 == "jungseo";         // true
      boolean comparison2 = name1 == name2;             // true
      boolean comparison3 = name1 == name3;             // false
      boolean comparison4 = name3 == name4;             // false
      boolean comparison5 = name1.equals("jungseo");    // true
      boolean comparison6 = name1.equals(name3);        // true
      boolean comparison7 = name3.equals(name4);        // true
	1. 문자열 리터럴을 직접 할당하는 방식, String 클래스의 인스턴스를 생성하여 할당하는 방법
       모두 참조 타입의 변수에 할당된다.
    2. String 타입의 변수를 참조하면 String 클래스의 메서드인 toString()이 자동으로 호출된다.
    3. toString()이 자동으로 호출되면 String 타입의 변수가 저장하고 있는 
       주소값에 위치한 String 인스턴스의 내용을 문자열로 변환해준다.   
    4. 위의 예시에서 System.out.println() 으로 변수를 호출하면 
    5. 인스턴스의 내용을 문자열로 변환해주어 같은 내용이 출력된다.
    6. 문자열 리터럴은 내용이 같다면 같은 주소값을 가진다.
    7. String 클래스로 인스턴스를 생성하면 항상 별개의 인스턴스가 생성된다.
       -> 다른 주소값을 갖는다.
    8. equals() 메서드는 문자열의 내용이 같은지만 비교한다.
    
    

5. String 클래스의 메서드

	1. charAt() : 해당 문자열의 특정 인덱스에 해당하는 문자를 반환
    			  String str = new String("Hello");
                  System.out.println(str.charAt(0)); // H
    
    2. compareTo() : 해당 문자열을 인수로 전달된 문자열과 사전 편찬 순으로 비교
  				     대소문자도 구분하며 두 문자열이 같으면 0을 반환
   				     해당 문자열이 인수로 전달된 문자열보다 작으면 음수
			         크면 양수를 반환
                     String str = "abcd";
                     System.out.println(str.compareTo("bcdf")) // -1
                     
                     
    3. concat() : 해당 문자열 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열을 반환
    			  String str = "Hello";
                  System.out.println(str.concat(" world") // Hello world
                  
    4.indexOf() : 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환
    			  String str = "Hello";
                  System.out.println(str.indexOf('e')); // 1
    
    5. trim() : 해당 문자열의 맨 앞과 뒤에 포함된 모든 공백을 제거
    			String str = "      Hello        ";
                System.out.println(str.trim()); // Hello
    
    6. toLowerCase() / toUpperCase() : 해당 문자열의 모든 문자를 소문자, 대문자로 변경
    			String str = "hello";
                System.out.println(str.toUpperCase()); // Hello
    

회고

시간이 너무 빠르다...지난주는 컴퓨터에 관한 내용이 대부분이어서 책 보듯이
편하게 넘어갔던 것 같은데 오늘 java를 시작하니 머리가 아파온다. 훌륭하게
연습문제를 해결했다 생각하고 누군가가 만들어둔 참조 코드를 보면 깔끔한 코드에 경쟁심이 생긴다.
오늘 페어 프로그램을 하며 가독성 좋은 코드가 얼마나 대단한지 느꼈다.
페어 전에 혼자 문제를 풀고 페어분에게 설명을 하는데 내가 작성한 코드인데도 다시 보고
설명하려니 생각이 필요했다. 누구나 보면 쉽게 이해할 수 있게 만들고 싶다. 강해져야지.
강해지려면 알고리즘 문제를 많이 풀어보고 많은 메소드를 써봐야 할 것 같은데
오늘은 배운 내용 복습하고 정리하다 보니 시간이 없다.
몸부터 강해져야 될 것 같다..
조금씩 시간내서 더 해봐야지.

0개의 댓글