빅데이터교육과정/JAVA
DAY2. JAVA 기초 - 과제
Listeria
2021. 1. 30. 00:17
STACK, HEAP 차이
Stack 과 Heap은 C언어의 포인터 개념과 유사하다. stack에는 heap에 저장된 object type의 데이터를 불러 오기 위한 일종의 참조값(주소값)들이 할당된다. 혹은 일반적인 데이터 타입(byte, short, int, long, double, char, float, boolean, char)에는 참조값이 아닌 실제값이 stack에 직접 저장되게 된다. stack을 함수 호출과 함께 사용할 경우, 함수의 호출이 종료되면서 지역변수들은 모두 pop되며 최종적으로 return 된 값이 stack에 저장되게 된다.
Heap은 stack을 제외한 대부분의 메모리로 볼 수 있으며 objext type(Integer, String, ArrayList 등)은 heap 영역에 저장된다. 스레드의 개수와 상관 없이 하나의 heap 영역만 존재한다.
별 다이아 만들기
public class D2hw1 {
public static void main(String[] args) {
for(int i=0;i<4;i++) {
for(int j=0;j<4;j++) {
System.out.print("*"); //가로로 별을 4개찍음
}
System.out.println(); //한줄내리기
}
}
}
public class D2hw2 {
public static void main(String[] args) {
for(int i=1;i<4;i++) {
for(int j=0;j<i;j++) {
System.out.print("*"); //n번째 줄에 n개의 별을 출력
}
System.out.println(); //줄바꿈
}
}
}
public class D2hw3 {
public static void main(String[] args) {
int n=4;
for(int i=n;i>0;i--) {
for(int j=1;j<i;j++) {
System.out.print(" "); //n번째 줄에 3-n개의 공백을 출력
}
for(int k=n+1;k>i;k--) {
System.out.print("*"); //n번째 줄에 2n+1개의 별을 출력
}
System.out.println(); //별을 출력후 줄바꿈
}
}
}
public class D2hw4 {
public static void main(String[] args) {
int n=3; //n개의 줄을 생성
int cnt = 0;
for(int i=n;i>0;i--) {
cnt++; //줄 수를 카운트
for(int j=1;j<i;j++) {
System.out.print(" "); //n번째 줄에 3-n개의 공백을 출력
}
for(int k=2*cnt-1;k>0;k--) {
System.out.print("*"); //n번째 줄에 2n+1개의 별을 출력
}
System.out.println(); //별을 출력후 줄바꿈
}
}
}
public class D2hw5 {
public static void main(String[] args) {
int i, j, k;
int n=7; //n개의 줄을 생성
int revn=n/2;
int cnt = 0;
for(i=(n-revn);i>0;i--) {
cnt++; //줄 수를 카운트
for(j=1;j<i;j++) {
System.out.print(" "); //n번째 줄에 3-n개의 공백을 출력
}
for(k=2*cnt-1;k>0;k--) {
System.out.print("*"); //n번째 줄에 2n+1개의 별을 출력
}
System.out.println(); //별을 출력후 줄바꿈
}
cnt=0; //줄수 카운트 초기화
for(i=0;i<revn;i++) {
cnt++; //감소되는 줄 수 카운트
for(j=cnt;j>0;j--) {
System.out.print(" "); //n번쨰 줄에 n개의 " "
}
for(k=n-(2*cnt);k>0;k--) {
System.out.print("*"); //n번째 줄에 2개씩 감소하는 *
}
System.out.println();
}
}
}
import java.util.Scanner;
public class D2hw6 {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.println("홀수를 입력해 주세요");
Scanner ask = new Scanner(System.in);
int n; //n개의 줄을 생성
n = ask.nextInt();
int center=(n/2)+1; //중간지점 위치
int cnt = 1; //줄수 카운트
int star,scnt=0, bcnt=0; //별과 공백 카운트
if(n%2==1) {
while(center>=cnt){ //별 윗부분
star = 2*cnt-1; //필요한 별의 개수
if(bcnt<(center-cnt)) { //n번째 줄 진입
System.out.print(" "); //공백입력
bcnt++;
}
if((scnt<star)&&(bcnt==(center-cnt))){
System.out.print("*"); //*입력
scnt++;
}else if(scnt==star) {
System.out.println();
bcnt=0;
scnt=0;
cnt++; //연산에 사용된 변수초기화 및 줄수 카운트
}
}
while((center<cnt)&&(cnt<=n)){
star = 2*(n-cnt)+1;
if(bcnt<(cnt-center)) { //n번째 줄 진입
System.out.print(" "); //공백출력
bcnt++;
}
if((scnt<star)&&(bcnt==(cnt-center))){
System.out.print("*"); //한줄 내려갈때마다 2개씩 줄어드는 별 출력
scnt++;
}else if(scnt==star) {
System.out.println();
bcnt=0;
scnt=0;
cnt++; //연산에 사용된 변수 초기화 및 줄수 카운트
}
}
}else {
System.out.println("홀수를 입력해야합니다");
}
}
}
참고자료 : yaboong.github.io/java/2018/05/26/java-memory-management/