본문 바로가기

안드로이드, 자바

(13)
Integer.MAX_VALUE, Integer.MIN_VALUE Java에서 정수형 최댓값과 최솟값은 MAXVALUE, MINVALUE에 저장되어 있다. 그것을 사용하여 간단한 배열에서 최솟값을 찾아보았다. public class hi { public static void main(String[] args) { int[] arr= {1, 123, 42, -24, 4}; int minNum = Integer.MAX_VALUE; for(int i=0; i
다형성 다형성이란? 다양한 형태 또는 특성을 가진다는 의미 부모 클래스를 상속받은 자식 클래스의 인스턴스가 부모의 객체로도 사용되고 뿐만 아니라, 자식 클래스의 객체로도 사용될 수 있는 다양한 상황 즉, 하위 클래스의 인스턴스(객체)는 보다 위인 상위 클래스의 인스턴스(객체)로도 사용될 수 있다. 그러나 그 반대는 불가능하다. 자식 클래스로 인스턴스를 생성하고 타입을 부모로 하면 부모의 자원만 쓸 수 있다. 그러나 오버라이딩한 거는 자식의 메서드로 실행된다. 이때 자식의 메서드를 바로 호출하고 싶다면 -> 캐스트가 필요하다. 자식 클래스에서 오버라이딩된 부모 클래스의 원본 메서드를 호출하고 싶다면? -> super 사용 class Person{ private int age; private String name;..
자바 클래스, Integer.parseInt 자바의 클래스는 객체를 생성하기 위한 틀, 설계도와 같은 의미이다. 클래스는 필드와 메서드로 구성되며 필드는 클래스의 변수 집합이고 메서드는 어떤 특정 행동을 수행하기 위한 명령문의 집합이다. 클래스를 사용하기 위해서는 객체를 선언해야한다. 객체를 선언하는 과정을 클래스의 인스턴스화라고도 한다. 인스턴스는 결국 메모리에 올라간 클래스의 객체이다. 인스턴스는 메모리에서 각자의 필드 영역을 갖지만 메서드는 모든 인스턴스가 공유한다. 메서드의 경우 한 클래스 안에서 동일한 이름으로 두개 이상 선언이 불가능하지만 메서드 오버로딩을 이용하면 가능해진다. 메서드 오버로딩은 메서드명은 같지만 매개변수의 갯수나 타입을 다르게 정의한 것이다. package com.company; class Farm{ int price,..
배열의 복사, 1차원, 2차원 배열 생성 및 출력, length와 length() 비교 System.arraycopy(원본배열명, 복사 시작할 인덱스, 복사배열명, 복사 될 인덱스, 길이) package com.company; import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main(String[] args) { int[] ar1 = {1, 2, 3, 4, 5}; int[] ar2 = {1, 2, 3, 4, 5, 3, 4, 5}; System.arraycopy(ar1, 2, ar2, 3,3); System.out.println(Arrays.toString(ar2)); } } package com.company; public class Main { public static void ..
String.valueOf, Integer.valueOf String.valueOf : 숫자 -> 문자열 Integer.valueOf : 문자열 -> 숫자 rst3 = 100 / 3; rst4 = 100/3.0; rst3과 rst4가 다른 값이 나온다.
자바 long, float, print, printf, println 변수를 초기화하지 않고 사용할 시 에러가 난다. float f = 9.8F; long l = 70000000L; long과 float는 접미사를 붙여줘야 한다. print() -> 엔터없이 쭉 출력 pirntln() -> 마지막에 엔터가 들어간다. printf() -> 지시자를 사용 가능(포맷에 맞춰서 출력 가능) %d -> 정수 %c -> 문자 %s -> 문자열 %f -> 소숫점 형식 %n -> 줄바꿈 %b -> 부울 int b = 26; System.out.printf("나는 %d살의 대학생입니다", b); 정수형과 문자열을 변환하는 이유: 숫자가 문자열로 주어진 경우 더하기 연산을 수행할 때 문자가 합쳐지는 결과가 나올 수 있음 연산 외에도 인자값을 정수로 보내서 문자열로 처리하는 경우가 필요함. ..
main 함수에 static을 사용하는 이유 static으로 선언된 메서드나 변수는 자바 버추얼 머신에서 인스턴스 객체의 생성 없이 호출할 수 있다. 객체 생성 없이 해당 함수를 호출할 수 있다는 말이다. 자바 프로그램을 실행하면 static으로 지정된 메서드를 찾아서 먼저 메모리에 할당시킨다. static으로 지정된 메서드가 여러개인 경우 객체를 생성하는 것과 상관없이 모두 메모리에 할당시킨다. 그런 후, main으로 만들어진 메서드가 있는지 찾아서 해당 메서드를 시작점으로 호출하게 되는 것이다.
자바 자료형 기본형 타입 정수형: byte(1byte), short(2byte), int(4), long(8) 실수형: float(4byte), double(8byte) 문자형: char(2byte), 참고로 문자열을 다루는 타입은 없다. 부울형(논리형): boolean(1byte) 참조형 타입 클래스, 배열, 인터페이스, 문자열 특징: 데이터가 저장된 메모리의 주소 값을 저장하는 변수 크기를 가늠할 수 없기에 즉, 무거울 수 있기 때문에 주소만 저장하여 참조한다. BYTES // 바이트 계산 SIZE // 비트 계산 MIN_VALUE // 최솟값 MAX_VALUE // 최댓값
안드로이드 로그아웃 시 액티비티 전체 종료하고 로그인 액티비티만 남기기 로그인을 구현한 뒤, 로그아웃을 구현하려는데 로그아웃을 하여 LoginActivity로 보내고 뒤로가기를 누르니 다시 메인 액티비티가 나와서 당황했다. 알고보니 스택에 남아있는 액티비티들을 모두 제거해줘야 초기의 LoginActivity만 있는 상태가 되는 것이였다. 코드 Intent ToLogin = new Intent(getApplicationContext(), LoginActivity.class); ToLogin.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(ToLogin); 그래서 FLAG_ACTIVITY_CLEAR_TASK 사용하여 TASK를 비워주고 FLAG_ACTIVITY_NEW_..
패키지 - package 키워드 - import 키워드 - 클래스패스 - CLASSPATH 환경변수 - classpath 옵션 - 접근지시자 - package 키워드 자바에서 패키지란 클래스와 인터페이스등의 집합을 의미한다. 즉, 파일들을 묶음으로써 파일을 효율적으로 관리할 수 있게 하며 협업 시 서로 작업한 클래스 사이에서 발생할 수 있는 충돌 문제도 패키지를 이용하면 피할 수 있다. 자바에서 패키지는 물리적으로 하나의 디렉터리를 의미한다. 따라서 클래스나 인터페이스 파일 모두 해당 패키지 이름의 디렉터리에 포함되어있고 계층 구조는 .으로 구분 된다. 또한 패키지의 이름과 디렉터리 구조가 같아야 한다. 명령문을 클래스나 인터페이스 소스 파일에 추가하여 선언하고 패키지의 이름에는 패키지의 경로까지 포함되어 명시..