4 13 Javaクリーンアップ
TIP
1.Quiz 3 5コメント
昨日intに選ばれた方も良かったのですが、ユーザーが文字を入力中にエラー
そこで、Stringが受け取った次のコードに変更!package com.jinho.Lesson03;
import java.util.Scanner;
public class code02 {
public static void main(String[] args) {
System.out.println("[메뉴] 1:검색 2:등록 3:삭제 4:변경 ");
Scanner sc = new Scanner(System.in);
String selected = sc.nextLine();
switch (selected) {
case "1":
System.out.println("검색합니다");
break;
case "2":
System.out.println("등록합니다");
break;
case "3":
System.out.println("삭제합니다");
break;
case "4":
System.out.println("변경합니다");
break;
default:
}
}
}
2.scanfを入力する2つの方法
package com.jinho.Lesson03;
import java.util.Scanner;
public class code1 {
public static void main(String[] args) {
int selected1;
int selected2;
int selected3;
int selected4;
//입력하는 방법 1
selected1 = new Scanner(System.in).nextInt();
selected2 = new Scanner(System.in).nextInt();
//입력하는 방법 2 (성능상 조금더 이득이 있음)
Scanner sc = new Scanner(System.in);
selected3 = sc.nextInt();
selected4 = sc.nextInt();
//출력 확인
System.out.println(selected1);
System.out.println(selected2);
System.out.println(selected3);
System.out.println(selected4);
}
}
クラスの使い方2の方が性能的に優れているので、これをメインに書きましょう
整列
1.イニシアチブの初期化
他の変数がコンパイルを初期化しないときにエラーが発生しました.
整列自動初期化
package com.jinho.Lesson03;
import java.util.Scanner;
public class code02 {
public static void main(String[] args) {
System.out.println("[메뉴] 1:검색 2:등록 3:삭제 4:변경 ");
Scanner sc = new Scanner(System.in);
String selected = sc.nextLine();
switch (selected) {
case "1":
System.out.println("검색합니다");
break;
case "2":
System.out.println("등록합니다");
break;
case "3":
System.out.println("삭제합니다");
break;
case "4":
System.out.println("변경합니다");
break;
default:
}
}
}
package com.jinho.Lesson03;
import java.util.Scanner;
public class code1 {
public static void main(String[] args) {
int selected1;
int selected2;
int selected3;
int selected4;
//입력하는 방법 1
selected1 = new Scanner(System.in).nextInt();
selected2 = new Scanner(System.in).nextInt();
//입력하는 방법 2 (성능상 조금더 이득이 있음)
Scanner sc = new Scanner(System.in);
selected3 = sc.nextInt();
selected4 = sc.nextInt();
//출력 확인
System.out.println(selected1);
System.out.println(selected2);
System.out.println(selected3);
System.out.println(selected4);
}
}
1.イニシアチブの初期化
他の変数がコンパイルを初期化しないときにエラーが発生しました.
整列自動初期化
package com.jinho.Lesson03;
public class code04 {
public static void main(String[] args) {
//c언어에서는 초기화 안해도 실행은 되고 쓰레기값이 들어가지만 자바는 초기화 안하면 오류난다
int x;
//System.out.println(x); 오류난다 따라서 변수는 무조건 초기화 해야한다
//다만 배열은 자동으로 전부 0으로 초기화 한다
int[] score = new int[5];
System.out.println(score[0]);
}
}
2.戻り配列サイズ
Javaには、配列サイズを返す機能->配列があります.length
package com.jinho.Lesson03;
public class code03 {
public static void main(String[] args) {
//c언어 에서 배열 int score[5]; 만들기와 동일함
int[] score; //배열 변수 선언
score = new int[5]; //요소의 작성과 대입
int count = score.length; //배열 크기 반환
score[0] = 1;
System.out.println(score[0]);
System.out.println(count);
}
}
stringの文字列は、スペースと文字を含まない1文字でカウントされます.
package com.jinho.Lesson03;
public class code10 {
public static void main(String[] args) {
//string 의 문자열은 공백,문자 할거없이 1문자로 카운트한다
String s = "test test";
int count = s.length();
System.out.println(count); //9
}
}
2 D配列のサイズは?次の例を検証します.
package com.jinho.Lesson03;
public class code11 {
public static void main(String[] args) {
int[][] scores = {{10, 20, 30}, {30, 40, 50}};
System.out.println(scores.length);
System.out.println(scores[0].length);
}
}
つまり点数です.lengthは{10,20,30}を束と見なしている
3.省略手法
配列内の値(new int[])は省略しても問題ありません
「int[]配列名」とともに使用している場合のみ省略できます
package com.jinho.Lesson03;
public class code05 {
public static void main(String[] args) {
//생략기법
int[] score1 = new int[]{20, 30, 40, 50};
int[] score2 = {20, 30, 40, 50};
for (int i = 0; i < score1.length; i++) {
System.out.printf("%d ", score1[i]);
}
System.out.println("");
for (int i = 0; i < score2.length; i++) {
System.out.printf("%d ", score2[i]);
}
}
}
4.異常発生
配列サイズを超えた要素の使用中に例外が発生しました
package com.jinho.Lesson03;
public class code06 {
public static void main(String[] args) {
//범위를 벗어난 요소를 이용할 때 예외발생 --> 에러!!
int[] names = new int[3];
names[3] = 10;
System.out.println(names[3]);
}
}
5.各ドア
通常for文を使用できます.
並びの中で最初から最後まで使う場合は、forを使うとドアごとに便利です
各メソッドの使用例
package com.jinho.Lesson03;
public class code07 {
public static void main(String[] args) {
//배열 사용하면 앞에서 변수로 여러개 선언한 프로그램을 훨씬 간단하게 작성가능
int[] scores = {20, 30, 40, 50, 80};
int sum = 0;
/*
일반 for 문
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
*/
//for each 문
//for 문 돌면서 value 에 scores[0]~scores[4] 가 하나씩 들어간다
//무조건 처음부터 끝가지 다 돌아야만한다
for (int value : scores) {
sum += value;
}
int avg = sum / scores.length;
System.out.println("총점 " + sum);
System.out.println("총점 " + avg);
}
}
6.アレイメモリ
Javaでは,配列はc言語でmallocを動的に割り当てるような感覚で行われる.
package com.jinho.Lesson03;
public class code08 {
public static void main(String[] args) {
//과정 아래 그림 참고
int [] a = {1,2,3};
int [] b;
b = a;
b[0] = 100;
System.out.println(a[0]);
//즉 배열은 reference type 이다
// int 등등은 primitive type 이다
}
}
答えは100コードの手順を下図に示します.
以下の添付の場合(nullをaに代入する)は何が起こりますか?
package com.jinho.Lesson03;
public class code08 {
public static void main(String[] args) {
//과정 아래 그림 참고
int [] a= {1,2,3};
int [] b;
b=a;
a = null; //아무런 메모리도 가리키지않게됨
a[0] = 10; //오류발생
System.out.println(a[0]);
}
}
上図のようにエラーが発生しました
7.ゴミ収集(gc)
newが確保する要素は通常の変数とは異なるため,ブロックが終了しても寿命は終了しない.
ブロック内で生成された配列は、その後、任意の方法で読み書きできず、メモリを消費します.
つまり、実際にはメモリのゴミです.
そうでないメモリはプログラマーがクリーンアップする必要があります.
しかしJavaはゴミ収集(GC,ゴミ収集)という設備を
使用しないメモリの整理
Reference
この問題について(4 13 Javaクリーンアップ), 我々は、より多くの情報をここで見つけました https://velog.io/@emb220117/413Java-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol