- ๋ฐฐ์ด์ ๋ค๋ฃจ๋ Arraysํด๋์ค ์ฌ์ฉํ๊ธฐ
- ๋ฐฐ์ด ๋ณต์ฌ
- ๋ฐฐ์ด ๋น๊ต
- ๋ฐฐ์ด ์ ๋ ฌ
- ๋ช ๋ น ํ ์๊ท๋จผํธ (Command-Line Arguments)์ ๋ฐฐ์ด
- System.exit(0); ์๋ฏธ
- ์ ํ ์๋ ์๊ท๋จผํธ(unlimited arguments)
- ๋ฉ์๋์ ์๊ท๋จผํธ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋ฌํ๊ธฐ
Arrays.copyOfRange()๋ฉ์๋ (๋ฐฐ์ด์ ์ผ๋ถ๋ถ๋ง ๋ณต์ฌ)
import java.util.Arrays;
//java.lang ํจํค์ง์ ํด๋์ค ์ ์ธํ ๋ชจ๋ ํด๋์ค import ํ์
public class Array15 {
public static void main(String[] args) {
char[] copyFrom = {'h','e','l','l','o','!'};
char[] copyTo = Arrays.copyOfRange(copyFrom,1,4);
for (char c : copyTo){
System.out.println(c);
}
}
}
Arrays.compare()๋ฉ์๋ (๋ฐฐ์ด๋น๊ต)
import java.util.Arrays;
public class Array16 {
public static void main(String[] args) {
int[] array1 = {1,2,3,4,5};
int[] array2 = {1,2,3,4,6};
//์์, 0, ์์
//x - y์ ๊ฒฐ๊ณผ ์๊ฐํด๋ณด์.
//compare(x,y)์์ x>y์ด๋ฉด 1. x=y์ด๋ฉด 0, x<y์ด๋ฉด -1
int compare = Arrays.compare(array1,array2);
System.out.println(compare);
}
}
Arrays.sort()๋ฉ์๋ (๋ฐฐ์ด์ ๋ ฌ)
import java.util.Arrays;
public class Array18 {
public static void main(String[] args) {
int[] array = {5,4,3,1,2};
//array ์์ฒด๊ฐ ์ ๋ ฌ๋๋ค.
Arrays.sort(array);
//์ด์งํ์
//1,2,3,4,5์ค 4๋ ์ธ๋ฑ์ค 3๋ฒ์งธ์ ์์ผ๋ฏ๋ก 3์ถ๋ ฅ๋จ.
int i = Arrays.binarySearch(array,4);
System.out.println(i);
}
}
public class Array123 {
public static void main(String[] args) {
Item[] items = new Item[5];
items[0] = new Item("java",5000);
items[1] = new Item("ํ์ด์ฌ",4000);
items[2] = new Item("c++",4500);
items[3] = new Item("c#",6000);
items[4] = new Item("sql",2000);
for(Item item : items){
System.out.println(item);
}
}
}
class Item{
private String name;
private int price;
public Item(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Item{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
์คํ๊ฒฐ๊ณผ
Item{name='java', price=5000}
Item{name='ํ์ด์ฌ', price=4000}
Item{name='c++', price=4500}
Item{name='c#', price=6000}
Item{name='sql', price=2000}
import java.util.Arrays;
public class Array123 {
public static void main(String[] args) {
Item[] items = new Item[5];
items[0] = new Item("java",5000);
items[1] = new Item("ํ์ด์ฌ",4000);
items[2] = new Item("c++",4500);
items[3] = new Item("c#",6000);
items[4] = new Item("sql",2000);
//sort(Object [])์ด ์๋ค. - Object๋ ๋ชจ๋ ๊ฐ์ฒด์ ์กฐ์์ด๋ฏ๋ก,
//์ด๋ค ๊ฐ์ฒด์ ๋ฐฐ์ด์ด๋ ์ฌ ์ ์๋ค.
Arrays.sort(items);
for(Item item : items){
System.out.println(item);
}
}
}
์คํ๊ฒฐ๊ณผ
Exception in thread "main" java.lang.ClassCastException: class Item cannot
be cast to class java.lang.Comparable (Item is in unnamed module of loader 'app';
java.lang.Comparable is in module java.base of loader 'bootstrap')
ํ์ฌ java.lang.Comparable ์ธํฐํ์ด์ค๋ก ์ผ์คํ ํ ์ ์๋ค๋ ์ค๋ฅ๊ฐ ๋ฌ๋ค.
์ ๋ ฌ์ ํ๋ค๋ ๊ฒ์ ๋น๊ต๋ฅผ ํ๋ค๋ ๋ง์ด๋ค. ์ด๋, ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ง๋ฅผ ์ ํด์ฃผ์ด์ผ ํ๋ค.
๋ฐ๋ผ์, Itemํด๋์ค์์ Comparable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ฃผ์ด์ผ ํ๋ค. Comparable ์ธํฐํ์ด์ค๊ฐ ๊ฐ์ง๋ comparaTo() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ผํ๋ค.
//Comparable ๋ ์ด๋ค Item์ด ํฐ์ง, ์์์ง ๊ธฐ์ค์ ์ ํ๋ interface
class Item implements Comparable {
private String name;
private int price;
public Item(String name, int price) {
this.name = name;
this.price = price;
}
//ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์จ Object์ ๋ด ์์ ์ ๋น๊ตํ๋ ๋ฉ์๋
//compareTo์๋ Object๋ฅผ ๋ฐ์๋ค์ด๋๋ก ํ์ง๋ง ์ค์ ๋ก๋ Item์ด ๋ค์ด์จ๋ค.
@Override
public int compareTo(Object o) {
//์๋ Item์ด๋ฏ๋ก ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์จ Object๋ฅผ Item์ผ๋ก ํ๋ณํ ํด์ค๋ค.
Item d = (Item)o;
//๋ค์ด์จ d์ ์ด๋ฆ์ผ๋ก ๋น๊ตํด์ฃผ์.
//์์ ์ name๊ณผ ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์จ Item์ name์ String์ด ๊ฐ์ง๋ compareTo๋ฉ์๋๋ก ๋น๊ต
//์์, 0, ์์
return this.name.compareTo(d.name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Item{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
์คํ๊ฒฐ๊ณผ
Item{name='c#', price=6000}
Item{name='c++', price=4500}
Item{name='java', price=5000}
Item{name='sql', price=2000}
Item{name='ํ์ด์ฌ', price=4000}
๋ช ๋ น ํ ์๊ท๋จผํธ (Command-Line Arguments)์ ๋ฐฐ์ด
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ main๋ฉ์๋์ ์๋ String[] args ๋ฐฐ์ด
main๋ฉ์๋๋ JVM์ด ์คํํ๋ ๋ฉ์๋
JVM์ด main ๋ฉ์๋๋ฅผ ์คํํ ๋ String[] ์ ์๊ท๋จผํธ๋ก ๋๊ฒจ์ค๋ค๋ ๋ง์ด๋ค.
public class EmptyCommandLineArgumentExam {
public static void main(String[] args) {
System.out.println(args.length);
}
}
์คํ๊ฒฐ๊ณผ
0
์๋์ฝ๋์ ๊ฐ์ ์ฝ๋
String[] args = new String[0];
main(args);
public class commandLineArgumentExam {
public static void main(String[] args) {
if(args.length == 0){
System.out.println("์ฌ์ฉ");
System.exit(0);//return; ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค.
}
for(String arg:args){
System.out.println(arg);
}
}
}
System.exit();์ return;์ ์ฐจ์ด๋ฅผ ์์๋ณด์.
System.exit();๋ ์ข ๋ฃ๊ฐ ๊ฐ๋ฅํ๋ ๊ทธ ๊ธฐ๋ฅ์ '๊ฐ์ ' ๊ฐ ์๋ค.
๊ดํธ ์์ int์ ๋ณ์๊ฐ์ ๋ฃ์ด์ฃผ๊ฒ ๋๋๋ฐ ๊ทธ๊ฒ 0 ์ผ ๊ฒฝ์ฐ๋ ์ ์์ ์ธ ์ข ๋ฃ.
๋ณ์๊ฐ์ด ๊ทธ ์ด๋ค ๋ณ์์ ํด๋นํ๋ ๊ฐ์ด๋ฉด ๋น์ ์์ ์ธ ์ข ๋ฃ ๋ฅผ ๋ปํ๋ค.
return์ ์ผ๋ฐ ํจ์ ์์์ return ๋ฌธ์ ์ฌ์ฉํ๋ฉด ๊ทธ ํจ์๋ง ์ข ๋ฃ ๋์ง๋ง,
main() ํจ์ ์์ return ๋ฌธ์ ํ๋ก๊ทธ๋จ ์ ์ฒด๋ฅผ ์ค์ง์ํจ๋ค.
์ฆ, return์ ๋ถ๋ถ์ ์ธ ํจ์๋ง ์ ์์ข ๋ฃ, mainํจ์์์๋ ์ ์ฒด๋ฅผ ์ข ๋ฃํ๋ค๋ ๋ง์ด๋ค.
์ ํ ์๋ ์๊ท๋จผํธ(unlimited arguments)
๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ฉ์๋ ์๊ท๋จผํธ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋ฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋ฉ์๋์ ์ ์๊ฐ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ 3๊ฐ, ์ด๋ค ๊ฒฝ์ฐ์ 5๊ฐ ๋๊ธฐ๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํ ๊น?
๋ฆฌํดํ์
๋ฉ์๋์ด๋ฆ(ํ์
... ๋ณ์๋ช
){
....
}
public class UnlimitedArgumentExam {
public static void main(String[] args) {
System.out.println(sum(5,10));
System.out.println(sum(1,2,4,2));
System.out.println(sum(3,1,2,3,4,5));
}
//...์ด ์ ํ์๋ ์๊ท๋จผํธ ๋ฌธ๋ฐฅ : ์ ์๋ฅผ ์ฌ๋ฌ๊ฐ ๋ฐ์ ์ ์๋ค.
public static int sum(int... args){
System.out.println("args๊ธธ์ด: "+args.length);
int sum=0;
for(int i=0; i<args.length; i++){
sum += args[i];
}
return sum;
}
}
'๐ผ๋ฐฑ์ค๋ > Java ๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฃผ์๋ฌธ, ์์ธ์ฒ๋ฆฌ, enum (0) | 2023.08.23 |
---|---|
์ ๋๋ฆญ(Generic)๊ณผ ์ปฌ๋ ์ ํ๋ ์์ํฌ(Collection Framework) (0) | 2023.08.22 |
๋ฐฐ์ด 1/2 (0) | 2023.08.22 |
๊ฐ์ฒด ์งํฅ ๋ฌธ๋ฒ 3/3 (0) | 2023.08.21 |
๊ฐ์ฒด ์งํฅ ๋ฌธ๋ฒ 2/3 (0) | 2023.08.20 |