For Each문
package application;
public class ForEach {
public static void main(String[] args) {
// 배열의 for each 반복문
String[] fruits = {"바나나", "사과", "수박"};
for(int i = 0; i < fruits.length; i++) {
System.out.println(fruits[i]);
}
//for each => (하나의 아이템 : 배열)
for (String s : fruits ) {
System.out.println(s);
}
}
}
참조변수 (New null)
package application;
public class StringArray2 {
public static void main(String[] args) {
// 문자열은 클래스타입 => 참조변수 (주소를 가짐)
int x = 10; //기본 타입
String s = "문자열";
System.out.println(s);
/* 참조 타입(문자열은 몇 byte를 쓸지 데이터 크기를 알 수 없기에
공간을 정할 수가 없으므로 주소값을 부여함) */
int [] arr = { 1,2,3,4,5,6,7 }; // new Int[7];
String text = new String("헬로우");
// null은 주소가 없다는 뜻
s = null;
arr = null;
String[] texts = null; //실제 배열은 만들어지지 않음
System.out.println(texts);
texts = new String[3]; //문자열 배열(3) 생성하여 texts에 주소 값 넣어줌
System.out.println(texts);
texts[0] = new String("하이");
texts[1] = new String("Hi");
texts[2] = new String("Hello");
System.out.println(texts[0]);
System.out.println(texts[1]);
System.out.println(texts[2]);
for (String word : texts) { // word는 각각의 데이터를 가르킴
System.out.println(word);
}
}
}
MultiArray (이중배열)
package application;
public class MultiArray {
public static void main(String[] args) {
// 이중배열
String[][] texts = {
{ "하나", "둘", "셋" },
{ "넷", "다섯", "여섯" },
{ "일곱", "여덟", "아홉" } };
// 배열 안에 3개의 배열이 들어 있음
// 이중배열의 길이 => 안에 있는 배열의 개수
for (int i = 0; i < texts.length; i++) {
/* System.out.println(texts[i]);
=> 이중배열의 첫번째,두번째,세번째 주소가 출력됨 */
for (int j = 0; j < texts.length; j++) {
System.out.printf("%s\t", texts[i][j]);
}
System.out.println(); //줄바꿈 하려고 넣은것
}
}
}
package application;
public class MultiArray2 {
public static void main(String[] args) {
// 이중배열
int[][] numbers = {
{ 1,5,7 },
{ 9,6,3 },
{ 2,4,6 }
};
int total = 0;
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < numbers.length; j++) {
total = total + numbers[i][j];
}
}
System.out.println("총합은 : " + total);
}
}
-----------------------------------------------------------------------------------------------------------------------------------
클래스와 객체
package app;
/* 한 개의 파일에 여러개의 클래스 생성 가능 (파일 이름과 같은 클래스는 단 하나여야함) */
class Person { //인스턴스 변수(객체 변수 : 자체사용불가, 즉 객체로 생성해야 사용가능)
String name; //이름 변수
int age; //나이 변수
}
public class ClassObject {
public static void main(String[] args) {
// 쿨래스는 설계도로 실제 사용 가능한 객체를 생성
Person p1 = new Person();
/* new 키워드로 메모리에 Person 객체를 생성해줌
Person 클래스(설계도)의 변수 p1에 주소가 저장됨 */
p1.name = "펭수"; //p1 주소에 name 이라는 변수가 있음
p1.age = 10;
Person p2 = new Person();
p2.name = "고양이"; //p2 주소에 name 이라는 변수가 있음
p2.age = 20;
// 클래스는 설계도, 객체는 찍어낼 수?있음
System.out.println(p1);
System.out.println(p2);
System.out.println(p1.name);
System.out.println(p1.age);
System.out.println(p2.name);
System.out.println(p2.age);
}
}
메소드 리턴
매개변수(파라미터)
package 매개변수;
public class App {
public static void main(String[] args) {
Calculator calc = new Calculator();
int num = 9;
int result = calc.square(num);
System.out.printf("%d의 제곱은 %d 이다.\n", num, result);
result = calc.plus(15, 5);
System.out.printf("입력된 두 수의 합은 %d 이다.\n", result);
result = calc.minus(20, 10);
System.out.printf("입력된 두 수의 차는 %d 이다.\n", result);
}
}
Gatters and Setters 메소드
생성자 Constructor
toString 메소드
총 정리(변수, 생성자, getter 및 setter, toString 자동 완성 하기)
package school;
// 1. 변수 입력
public class Student {
private String name;
private int age;
private boolean isvisible; // 출석 true, 결석 false
private double temperature; // 온도 검사
// 2. 생성자 모든 매개변수 입력서
public Student(String name, int age, boolean isvisible, double temperature) {
this.name = name;
this.age = age;
this.isvisible = isvisible;
this.temperature = temperature;
}
// 3. getter and setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isIsvisible() {
return isvisible;
}
public void setIsvisible(boolean isvisible) {
this.isvisible = isvisible;
}
public double getTemperature() {
return temperature;
}
public void setTemperature(double temperature) {
this.temperature = temperature;
}
//4.toString
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", isvisible=" + isvisible + ", temperature=" + temperature
+ "]";
}
}
static 메소드
package application;
public class Cat {
private String name;
private int id; //고양이 아이디(고유한 값, 중복 불가)
// 클래스명만 가지고 사용 static
public static final String FOOD = "고양이 사료";
private static int count = 0; //객체와 상관없이 바로 만들어지는 변수
//스테틱 변수 초기값 0
public Cat(String name) {
this.name = name;
count++; //객체 생성시 카운트 1증가!
id = count; //고양이를 만들때마다 1씩 증가하고 그 값이 id에 들어가면 중복 안됨
}
/* public int getCount() {
return count;
} 카운트를 리턴 */
//스테틱 메서드는 스테틱 변수만 사용 가능
public static int getCount() {
return count; //카운트를 리턴
}
@Override
public String toString() {
return "Cat [고양이 ID: " + id + ", 이름 = " + name + "]";
}
}
package application;
public class App {
public static void main(String[] args) {
//스테틱 상수(변수)는 객체없이 사용
System.out.println(Cat.FOOD);
System.out.println(Math.PI);
System.out.println("카운트 : " + Cat.getCount());
Cat c1 = new Cat("베티");
System.out.println("카운트 : " + Cat.getCount());
Cat c2 = new Cat("클로이");
System.out.println("카운트 : " + Cat.getCount());
Cat c3 = new Cat("Betty");
System.out.println("카운트 : " + Cat.getCount()); //c1.getCount해도 증가
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
sayHi();
//클래스명.스테틱메소드 => App.sayHi() 인데 어차피 App 클래스내라서 생략 가능
}
static void sayHi() {
System.out.println("하이!");
}
}