문자열 비교 (==, equals) 자바의 문자열은 String 객체로 생성 (참조 타입) char타입과 다르게 빈 문자열 (”“)를 대입할 수도 있음 자바는 문자열 리터럴이 동일하다면 String 객체를 공유함 new 연산자로 직접 String 객체를 생성하고 대입할 수도 있음 new 연산자는 새로운 객체를 만드는 연산자로 객체 생성 연산자라고도 함 String name1 = "홍길동"; String name2 = "홍길동"; String name3 = new String"홍길동"; name1 == name2 // true name1 == name3 // false 내부 문자열을 비교할 경우에는 equals() 메소드 사용 (대소문자 구분) boolean result = str1.equals(str2)..
JAVA
null 참조 타입 변수는 아직 변수를 저장하고 있지 않다는 뜻으로 null값을 가질 수 있음 기본 타입 변수에는 null값을 대입할 수 없음 null로 초기화된 참조 변수는 스택 영역에 생성만 됨 참조 타입 변수가 null값을 가지는지 확인하려면 ==, !=연산 수행 메모리 효율성을 높이기 위해 번지를 없애고 싶을 때 일부러 null을 대입하기도 함 Garbage collector 힙 메모리에는 있지만 어떤 변수에서도 참조하지 않는 객체를 자동으로 제거시켜주는 jvm의 부가기능 null값을 대입하거나 다른 객체를 변수에 대입하면 원래의 객체는 쓰레기 객체가 됨 NullPointException 예외 : 프로그램 실행 도중에 발생하는 오류 참조 변수가 null인 상태에서 객체의 데이터나 메소드를 사용하려..
자바의 데이터 타입은 기본 타입과 참조 타입으로 분류됨 기본타입 : 실제 값을 바로 담는 타입 참조타입 : 객체의 번지 (메모리 위치) 를 참조하는 타입 참조타입 종류 : 배열, 열거, 클래스, 인터페이스 기본타입 변수와 참조타입 변수의 차이 기본타입으로 선언된 변수는 값 자체를 저장하고 있지만 참조 타입으로 선언된 변수는 객체가 생성된 메모리 번지(heap) 를 저장 기본타입, 참조타입 변수들은 모두 스택 메모리 영역에 생성 객체는 heap 영역에 생성 RAM 구조 메모리 (RAM)는 메소드, 힙, 스택 영역으로 나뉘어서 씀 메소드 : 자바 코드 저장 힙 : 객체 저장 스택 : 변수 저장 참조 타입 변수의 ==, != 연산 참조 타입 변수의 값은 객체의 번지이므로 번지를 비교함 번지가 같다면 동일한 객..
BREAK문 현재 속해있는 반복문 중 가장 가까운 반복문을 빠져나가는 구문 public void method2() { // 매번 사용자에게 문자열을 입력받은 후 해당 문자열의 길이 출력 // 단, 사용자가 입력한 문자열이 "exit"라는 문자열과 일치한다면 반복을 종료 Scanner sc = new Scanner(System.in); while(true) { System.out.print("문자열 입력 : "); String str = sc.nextLine(); if(str.equals("exit")) { break; } // xxxx의 글자수 : xx System.out.println(str+"의 글자수(길이) : "+str.length()); } System.out.println("프로그램이 종료됩니..
WHILE문 for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우에 계속해서 반복하고 false가 되면 반복을 멈추고 종료 무한 반복 (true) 할 때, 분기문과 함께 자주 쓰임 for문과 다르게 초기식, 증감식이 필수는 아님 표현법 [초기식] while(조건식) { // 조건이 true인 경우 해당 구문들을 반복적으로 실행, 조건식 내용에 true적는다면 무한반복 반복적으로 실행할내용 .... [증감식 or 분기문;] } for문을 while문으로 바꿔보기 public void method1() { for(int i = 0; i
반복문 특정 실행코드를 반복적으로 수행시켜줌 크게 for문과 while문(do-while)으로 나뉨 FOR문 초기식 : 반복문이 시작될 때 초기에 단 한번만 실행되는 구문 반복문에서 사용할 변수 선언 및 초기화 예) int i = 0; 조건식 : "반복문이 수행될 조건"을 작성하는 구문 조건식이 true일 경우 반복문 실행, false면 종료 예) i 조건식 -> true일 경우 실행할 코드를 실행 -> 증감식 … -> 조건식 -> false일 경우 코드를 실행하지 않고 for반복문 종료. 초기식, 조건식, 증감식에 아무것도 안 쓰면 무한반복 (for(;;)) 초기식 선언 변수는 for문 안에서만 사용 가능하고, 다른 for문에서도 같은 이름으로 반복적으로 선언이 가능하다 증감식은 상관 없지만 후위연산자..
제어문 기본적으로 프로그램의 진행은 순차적으로 진행되지만 순차적인 흐름을 바꾸고자 한다면 제어문을 이용해서 제어 가능 종류 : 조건문, 반복문, 분기문 조건문 조건식을 통해 참, 거짓 이냐를 판단해서 그에 해당하는 코드 실행 조건식의 결과는 항상 true/false여야함. 보통 조건식에서는 비교연산자(대소,동등), 논리연산자(&&,||)을 주로사용한다 조건문은 크게 if문( 단독if, if~else, if ~else if, 중복 if)과 switch문으로 나뉨 단독 IF문 조건식의 결과가 참(true)일 경우 중괄호 블럭 안의 코드가 실행 조건식의 결과가 거짓(false)일 경우 중괄호 블럭은 무시하고 넘어감 실행문이 하나라면 중괄호 생략 가능하지만 쓰는 걸 권장 표현법 if(조건식) { // 조건식이 ..
랜덤값 구하는 메소드 : random() java.lang.Math 클래스에 정의되어있는 random()메소드를 호출하여 0.0 ≤~ java.base안에 담겨있고, java.lang패키지안의 모든 클래스는 모든클래스에 자동으로 import 되어있음 스캐너 생성시 java.util 클래스라서 new로 생성했지만 Math클래스의 경우 별도의 생성없이 사용가능 1 ~ 10사이의 랜덤수를 원한다면 (int) (Math.random() * 10 ) + 1을 하면됨 => 1.0 1
나눗셈 또는 나머지 연산에서 0으로 나눌 경우 예외 (ArithmeticException) 발생 무한대의 값을 정수로 표현할 수 없기 때문 하지만 좌측 피연산자가 실수이거나 우측 피연산자가 0.0 또는 0.0f이면 예외가 발생하지 않고 연산의 결과는 Infinity(무한대) 또는 NaN (Not a Number)이 됨 5 / 0.0 -> Infinity 5 % 0.0 -> NaN Infinity 또는 NaN 상태에서 계속 연산을 수행하면 안됨 어떤 연산을 하더라도 결과는 계속해서 Infinity 또는 NaN이 되므로 데이터가 엉망이 될 수 있음 그렇기 때문에 연산 결과가 Infinity 또는 NaN인지 먼저 확인하고 다음 연산을 수행하는 것이 좋음 //Infinity 또는 NaN일 경우 true를, 그렇..
연산자 종류와 우선순위 부호연산자 변수의 부호를 유지하거나 변경 + : 피연산자의 부호 유지 - : 피연산자의 부호 변경 부호 변경도 연산이므로 int 타입 변수에 대입해야함 (정수타입 연산 결과는 int타입) byte b = 100; int result = -b; 산술연산자 (이항연산자) 산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는 것이 좋음 (부동 소수점 방식) 피연산자가 정수타입이면 연산 결과는 int 타입 피연산자가 정수타입이고 그 중 하나가 long 타입이면 연산의 결과는 long 타입 피연산자 중 하나가 실수 타입이면 연산 결과는 실수 타입 + - (덧셈, 뺄셈) int num1 = 10; int num2 = 3; System.out.println("num1 + num2 =..