Java

Minki CHO·2022년 10월 28일
0

CodeStates

목록 보기
6/43

1. list

Java
변수와 타입
문자열
연산자
콘솔

2. remind

-Java : 객체지향 프로그래밍(Object Oriented Programing)

1) 자바 특징

  • 운영 체제에 독립적
  • 개체지향 언어
  • 함수형 프로그래밍 지원
  • 자동 메모리 관리(Garbage Collection) : 사용하지 않는 메모리를 자동으로 수거

-Public class main{ ... }
: 접근 허용 범위가 Public인 main이라는 이름의 class를 정의
→ main이라는 이름의 class가 있고, 그 안에 코드를 작성하는구나!

Public static void main(String[] args) { ... }
→ void main(String[] args) { ... }

→ A main(B C) { D } : 메서드를 정의하는 문법
→ 반환타입 메서드_이름(매개변수_타입 매개변수_이름) {메서드 바디}

-A 반환타입 : 메서드가 반환할 반환값의 종류 및 유형, 메서드 정의 시 꼭 명시
-B 매개변수 타입, C 매개변수_이름 : 외부에서 전달받은 값을 저장하는 변수
→매개변수는 메서드 외부에서 메서드 내부로 전달한 값을 할당받아 저장하여, 매서드 내부에서 사용할 수 있게 함
-D 메서드 바디 : 구체적으로 메서드가 어떤 기능을 수행할지에 대한 코드

-메서드 : 어떤 기능을 하는 코드를 묶음으로 묶은 것
: 어떠한 기능을 수행(데이터를 받아 해당 데이터에 일련의 처리를 가함으로 써 만들어낸 결과값을 반환하는 것)하기 위한 일련의 코드 집합체

-main 메서드
: 자바로 작성한 소스코드를 실행하면 가장 먼저 실행되는 메서드
: 이처럼 프로그램 실행 시 가장 먼저 실행되는 함수&메서드 : 진입점 함수

-의사코드(슈도코드 Pseudo code)
: 프로그래밍 언어로 코드를 작성하기 전, 무엇을 어떤 과정을 통해 만들지 사람의 언어로 먼저 작성하는 것

2) 변수와 타입

ⅰ) 기억하고자 하는 값이 얼만큼의 메모리 공간을 필요로 하는지 파악
ⅱ) 기억하고자 하는 값이 차지하는 용량만큼의 메모리 공간 확보
ⅲ) 값을 저장한 공간에 이름을 붙임
ⅳ) 확보한 메모리 공간에 기억하고자 하는 값을 저장
(ⅰ~ⅲ : 선언 / ⅳ : 할당)

-변수 variable
: 값이 변할 수 있는 데이터를 임시적으로 저장하기 위한 수단
→값을 저장할 수 있는 메모리 공간을 확보하고, 사람이 식별할 수 있는 이름을 붙인 것
:변수 선언

int num;

→변수를 선언하면 컴퓨터는 값을 저장할 메모리 공간을 확보-확보한 메모리 공간에 사용자가 입력한 변수 이름으로 이름 붙임

-값 할당 : 대입연산자(=)를 이용하여 변수에 값 저장

num=1; //값 할당 (초기화: 변수 선언 후 처음으로 값을 할당)
num=2; //값 할당 (재할당)

-상수 content
: 변하지 말아야할 데이터를 임시적으로 저장하기 위한 수단이자 재할당 금지됨

final double CALCULATOR_PI=3.14; //final로 선언

-상수 사용 이유
: 프로그램 실행 시 값이 변하면 안되는 경우, 코드 가독성 높이고 싶은 경우, 코드 유지관리 용이하고자 할 경우

-타입
: 어떤 값의 유형 및 종류
: 타입에 따라 값이 차지하는 메모리의 크기와 값 저장 방식이 결정
ⅰ) 기본타입 Primitive type
: 값 저장시 데이터의 실제 값 저장
: 정수 타입(byte, short, int, long) 실수 타입(float, double), 문자 타입(char), 논리 타입(boolean)
ⅱ) 참조타입 reference type
: 값을 저장할 때 데이터가 저장된 곳을 나타내는 주소 값 저장

(22.11.12 추가)
-수동타입변환
: 차지하는 메모리 용량이 더 큰 타입에서 작은 타입으로 자동변환되지 않으므로, 수동으로 타입을 변환하는데, 이를 캐스팅casting 이라함

int intValue=128;
byte byteValue=(byte) intValue; //캐스팅

-리터럴 : 문자가 가르키는 값 자체

3) 문자열

-String 타입
: 기본적으로 String 타입은 큰 따옴표("")로 감싸진 문자열 의미

-선언한 변수에 문자열을 할당하는 방법
→String 타입의 변수는 String 변수명;으로 선언할 수 있음
ⅰ) 문자열 리터럴을 할당하는 방법 : 변수 = "문자열";

String name1="Hello World";

ⅱ) String 클래스의 인스턴스를 생성하여 할당하는 방법 : 변수 = new String("문자열");

String name2= new String("Hello World");

(22.11.12 추가)
-클래스를 통해 인스턴스 생성 시 해당 인스턴스의 타입은 자신을 생성해낸 클래스를 타입으로 가짐

선언한 변수에 문자열을 할당하는 방법 두 가지는 공통점과 차이점을 가짐
→공통점 : name1과 name2는 실제 문자열의 내용을 값으로 가진 것이 아닌 문자열이 존재하는 메모리 공간 상의 주소값을 저장
→차이점: 아래 name3과 name4를 이용하여 비교할때 확인할 수 있는데,
name1과 name3은 동일 문자열 리터럴을 두 변수에 할당하였으므로, 같은 문자열 참조값을 공유함
그런데 String 클래스의 인스턴스를 생성하는 name2와 name4는 별개의 인스턴스가 따로 생상되므로 서로 다른 인스턴스 주소값을 저장하게 됨

String name3 = "Hello World";
String name4 = new String("Hello World");

등가 비교 연산자 ==
: 좌항 == 우항
: 좌항의 과 우항의 이 일치하는지 검사하여 일치 시 true, 불일치 시 false 반환

equals() 메서드
: .앞의 변수가 저장하고 있는 문자열의 내용과 () 안의 문자열의 내용이 같은지 비교하여 동일하면 true, 동일하지 않으면 false 반환

boolean comparison1 = name 1 =="Hello World"; //true
boolean comparison1 = name1 == name2; 
        //false, name2는 String 클래스의 인스턴스를 생성하여 
          별개의 인스턴스를 생성하므로 name1과 다른 주소값을 저장함
boolean comparison1 = name1 == name3; 
        //true, 같은 문자열의 참조값을 가짐
boolean comparison1 = name1 == name4; //false
boolean comparison1 = name1.equals("Hello World"); //true
boolean comparison1 = name1.equals(name2); //true
boolean comparison1 = name1.equals(name4); //true

-String 클래스의 메서드
ⅰ)charAt() : 특정 인덱스에 해당하는 문자 반환

String str = new String("Java");

System.out.println(str.charAt(0)); //J
System.out.println(str.charAt(3)); //a

ⅱ)compareTo() : 해당 문자열을 인수로 전환된 문자열과 사전 편찬순으로 비교, 대소문자 비교

String str = new String("abcd");

System.out.println(str.compareTo("bcdf")); //-1
System.out.println(str.compareTo("abcd")); //0
System.out.println(str.compareTo("Abcd")); //32

ⅲ)concat() : 해당 문자열 뒤에 인수로 전달된 문자열을 추가하여 새로운 문자열 반환

String str = new String("Java");

System.out.println(str.concat("수업")); //Java수업

ⅳ)indexOf() : 특정 문자나 문자열이 처음 등장하는 위치의 인덱스를 반환, 문자/문자열 미포함시 -1 반환

String str = new String("Oracle Java");

System.out.println(str.indexOf('o')); //-1
System.out.println(str.indexOf('a')); //2
System.out.println(str.indexOf("Java")); //7

ⅴ)trim() : 해당 문자열의 맨 앞과 맨 뒤에 포함된 모든 공백 제거

String str = new String(" Java   ");

System.out.println(str + 'l')); // Java   l
System.out.println(str.trim() + 'l'); //Javal

ⅵ)toLowerCase(), toUpperCase() : 해당 문자열의 모든 문자를 소문자/대문자로 변환

String str = new String("Java");

System.out.println(str.toLowerCase()); //java
System.out.println(str.toUpperCase()); //JAVA

4) 연산자

-산술연산자
-증감연산자 : 변수값을 1씩 증가/감소시키는 연산자
→전위형 증감연산자 : 증감연산자를 먼저 수행 후 결과값 적용
→후위형 증감연산자 : 기존 값을 먼저 적용시키고 그 다음 증감연산자 수행

int num1=1;
int prefix =++num1; //전위형 증감연산자
//num=2, prefix=2

int num2=1;
int postfix =num2++; //후위형 증감연산자
//num2=2, postfix=1

-복합대입 연산자

-비교 연산자
: boolean 타입으로 평가될 수 있는 조건식에 사용
: 대소비교, 등가비교(==, !=)

-논리 연산자
: boolean 타입 반환
연산자 && || !
의미 AND OR NOT
→AND 연산자 &&
: 피연산자 두개가 모두 true - true 반환
: 피연산자 둘 중 하나가 false - false 반환
→OR 연산자 ||
: 피연산자 모두 false - false 반환

5) 콘솔

-출력 System.out.print
-출력 후 줄 바꾸기 System.out.println
-형식대로 출력하기 System.out.printf

-콘솔 입력

import java.util.scanner
scanner scanner = new scanner(System.in);
String inputValue = scanner.nextline():
System.out.println(inputValue);

(+)

math.floor() : 내림
math.abs() : 절대값
Strimg.format("지금 시간은 %d시 %d분", hour, second)

public void main
:method 앞은 타입이고, 결과값을 내보낼 때 필요한 정보
:void : 출력으로 내보내지 않는다:return문 필요 없음을 알려줌

(22.11.12 추가)
-String → int
ⅰ) Integer.parseInt()
: int 타입 반환

String strValue = "123";
int intValue = Integer.parseInt(strValue);

ⅱ) Integer.valueOf()
: Integer 객체 반환
: new Integer(Integer.parseInt(strValue)) 와 동일?.

String strValue = "123";
int intValue = Integer.valueOf(strValue);

-int → String
ⅰ) Integer.toString

int intValue = "123";
String strValue = Integer.toString(intValue);
profile
Developer

0개의 댓글