본문 바로가기
입문/생활코딩

JAVA

by 코디드 2022. 11. 27.

https://github.com/egoing/java1 

 

GitHub - egoing/java1

Contribute to egoing/java1 development by creating an account on GitHub.

github.com

https://gitlab.com/egoing/java1 

 

egoing / java1 · GitLab

GitLab.com

gitlab.com

>>생활코딩 source


 

<자바 작동원리>

public class HelloWorldApp{

    public static void main(String[] args) {

         System.out.println("Hello World!!");

    }

}

 

>>>> Hello World!!

 

 

-source/ code/ language>>application/program

 

-Java Source code.java (일을 담은 확장자가 .java 인 파일)

                ∨

           compile (기계가 이해할 수 있도록 전환/ eclipse에서 저장버튼)

                

Java Application.class (자바 기술 응용해서 만든 앱)

                

               run (eclipse에서 재생버튼)

                

Java Virtual Machine

                

               run (확장자가 class인 파일 읽어 동작)

                

          computer


 

<data & operation>-데이터와 연산

data -number/string(문자)/etc

 

datatype이 있고 그에 따라 다른 연산방법이 존재

1. 내가 쓰는 시스템에는 어떤 datatype이 존재하는가

2. 각각의 datatype 별로 어떤 연산방법이 존재하는가

 

public class datatype{
    public static void main(String[] args) {
        System.out.println(6); // Number
        System.out.println("six"); // String
         
        System.out.println("6"); // String 6
        
        System.out.println(6+6); // 12
        System.out.println("6"+"6"); //66
        
        System.out.println(6*6); //36
//        System.out.println("6"*"6");
        
        System.out.println("1111".length()); //4
//        System.out.println(1111.length());
    }
}

 

System.out.println() 단축기: sout+ctrl+space

 

 

<숫자와 연산>

 

public class Number {

public static void main(String[] args) {
// Operator(=연산자 +, -, *, /)
System.out.println(6 + 2); //8
System.out.println(6 - 2); //4
System.out.println(6 * 2); //12
System.out.println(6 / 2); //3

System.out.println(Math.PI); //3.14 
System.out.println(Math.floor(Math.PI)); //3.0 버림
System.out.println(Math.ceil(Math.PI)); //4.0 올림
}
}

 

<문자열 다루기-1. 표현>

 

public class StringApp {

public static void main(String[] args) {

System.out.println("Hello World"); //String: 문자열
System.out.println('H'); //Character: 한 문자, 작은따옴표는 의미가 달라지니 쓰지말것
System.out.println("H"); //String

System.out.println("Hello "
+ "World"); // 줄바꿈 안됨

// new line
System.out.println("Hello \nWorld");

// escape
System.out.println("Hello \"World\"");// Hello "World"

}

}



<문자열 다루기-2. 다루기>

 

public class StringOperation {

public static void main(String[] args) {

System.out.println("Hello World".length()); // 11
System.out.println("Hello, [[[name]]] ... bye. ".replace("[[[name]]]", "egoing"));

}

}

<변수의 정의>

자바에서 변수를 만들때는 변수가 어떤 datatype을 담을 수 있는지 명확하게 표시해줘야 한다.

변수에는 반드시 정수, 문자열이 온다 라고 정의를 하면 그것이 아닌 정보가 들어갈 때 JAVA가 compile을 안시킴.

그안에 어떤 정보가 들어가 있다면, 그안의 값은 반드시 정수, 문자열이라는 것을 확신할수 있다.

대신 값을 넣을때 까다로움.

 

public class Variable {

public static void main(String[] args) {



//그냥 a 가 아닌 int a 라고 써줘야 함
int a=1; // Number -> integer(정수)... -2, -1, 0, 1, 2
System.out.println(a);

double b = 1.1; // real number -> double ... -2.2, -1.1, 0, 1, 2
System.out.println(b);

String c= "Hello World";
System.out.println(c);
}
}

 

<변수의 효용>

 

public class Letter {

public static void main(String[] args) {
String name = "leezche";
System.out.println("Hello, "+name+" ... "+name+" .. egoing ... bye");
}
}

 

System.out.println(10); >> 지금 10이라고 쓴 나말고는 무엇이 10인지 그 누구도 파악할수 없음

 

double VAT =10.0;

System.out.println(VAT); >> 이렇게 적으면 부가가치세 세율을 말하는거구나 라고 파악할수 있음

>>>코딩을 하는데 있어서 코드는 현재의 내가 보는 코드, 미래의 내가 보는 코드, 다른 사람이 보는 코드이기 때문에 그의미를 빠르게 파악할수 있도록 작성하는것이 정말 중요함. 그때 사용하는 가장 중요한 수단이 변수(=값에 이름을 부여하는 것)

 


<데이터 타입의 변환(casting)>

JAVA는 변수의 datatype을 엄격히 통제. 어떤 변수에 들어갈 값, 들어있는 값을 다른 datatype 으로 converting 하는 경우에 그때 키워드가 casting 이고 어디서 어디로 무엇을 무엇으로 casting 하고 싶은지 알면 검색을 통해 알아낼수 있음.

 

public class Casting {

public static void main(String[] args) {

double a = 1.1;
double b = 1;
double b2 = (double) 1;
System.out.println(b);

// int c = 1.1;
double d = 1.1;
int e = (int) 1.1;
System.out.println(e);

// 1 to String 검색: java int to string casting
String f = Integer.toString(1);
System.out.println(f);
System.out.println(f.getClass()); // datatype이 뭔지 알려줌
}
}

<프로그래밍>

각각의 작업들이 시간의 순서에 따라서 실행되는 자동화된 처리 automation

순차적 실행을 통해 사람이 못하는 일을 기계에 위임해서 자동화할 수 있고 그걸 할수 있는 언어중 하나가 JAVA

 

<iot 프로그램 만들기>

import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;


 

<디버거>

bug-오류

degugging-오류를 잡는 행위

 

<입력과 출력>

1.어떤 input 이 있는가

2.그 input을 어떻게 프로그램 안으로 끌고 들어올수 있나

*검색해서 찾을수 있는 능력 키우기

 

import javax.swing.JOptionPane;

import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;

public class Ok_JavaGoInHomeInput {

public static void main(String[] args) {

String id = JOptionPane.showInputDialog("Enter a ID"); // google: java text input popup swing
String bright = JOptionPane.showInputDialog("Enter a Bright level");

// Elevator call 
Elevator myElevator = new Elevator(id);
myElevator.callForUp(1);

// Security off
Security mySecurity = new Security(id);
mySecurity.off();

// Lights on 
Lighting hallLamp = new Lighting(id+" / Hall Lamp");
hallLamp.on();

Lighting floorLamp = new Lighting(id+" / Floor Lamp");
floorLamp.on();

DimmingLights moodLamp = new DimmingLights(id+" moodLamp");
moodLamp.setBright(Double.parseDouble(bright));

// setBright 는 double 값이 필요. 따라서 string 을 double로 바꿔줘야됨. google: java string to double conversion
moodLamp.on();
}
}

 

 

import javax.swing.JOptionPane;

import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;

public class Ok_JavaGoInHomeInput {

// parameter, 매개변수:이 프로그램을 사용하는 사람과 프로그램 사이에 값을 매개해주는 변수
public static void main(String[] args) { args=매개변수

String id = args[0];
String bright = args[1];

}

 

>>arguments=args:인자

run configurations>arguments 에 입력

args 라는 변수에 사용자가 입력한 값이 들어옴 그럼 {} 안에서는 args 가 사용자가 입력한 값

프로그래밍에서는 0부터 센다

-e.g.)두개의 값이 들어가는 경우 그냥 문자열로 받을수 없어서 String 뒤에 []이 붙음. String[]: 문자열로만 이루어진 베어 라는 data


<eclipse 없이 직접 compile 하고 run하기>

1.compile: .java ->.class

2.run: .class 실행

3.input: 입력값에 따른 다른 출력값

>>나 혼자 만든게 아닌 다른 사람 또는 내가 전에 만든 program을 부품으로 해서 import 해서 우리가 만드는 프로그램을 compile 하고 run 하는 방법 실천. 다른 사람들이 사용할수 있도록 정리된 것을 lib(library) 이라고 함.

 


<자바문서 보는법>

api documentation java 검색

lang: class가 소속되어 있는 패키지
class: 서로 연관된 variable(변수)와 method를 모아서 이름을 붙인것

>>lang(class(variable+method)) 이런 관계

 

<자바문서 보는법-class>

public class ClassApp {

public static void main(String[] args) {

System.out.println(Math.PI); //3.1415926535...
System.out.println(Math.floor(1.6)); //버림
System.out.println(Math.ceil(1.6)); //올림
}
}

<자바문서 보는법-instance>

result1.txt 에 hello1이라는 텍스트를 java 이용해 작성

 

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;

public class InstanceApp {

public static void main(String[] args) throws IOException {

PrintWriter p1 = new PrintWriter("result1.txt"); // p1이라는 변수에 담긴 것은 PrinterWriter 라는 class의 instance
p1.write("Hello 1");
p1.close();


PrintWriter p2 = new PrintWriter("result2.txt");
p2.write("Hello 2");
p2.close();
p1.write("Hello 1");

// PrintWriter.write("result1.txt", "Hello 1");
// PrintWriter.write("result2.txt", "Hello 2");
// PrintWriter.write("result1.txt", "Hello 1");
// PrintWriter.write("result2.txt", "Hello 2");
// PrintWriter.write("result1.txt", "Hello 1");
// PrintWriter.write("result2.txt", "Hello 2");
// PrintWriter.write("result1.txt", "Hello 1");
// PrintWriter.write("result2.txt", "Hello 2");
}
}

>>math 의 경우 1회용/짧은 맥락의 작업
파일 수정은 후속 작업이 많고 동시에 여러 작업을 해야해서
하나의 class 보다는 new를 붙여 복제해서 각각의 다른 상태를 가진 instance를 만들어 사용하는게 효율적

 

google: api document java 검색
printwriter>>constructor(생성자) 존재
math>>contructor x

여기서 사용한 것은 PrintWriter(String fileName)
>>설명, 입력값은 무엇이 들어와야하며, 생길수 있는 오류도 나옴

class를 intance로 사용할 수 있다면 constructor가 있고 new 뒤에 나오는게 constructor임

-e.g.) new PrintWriter("result1.txt");
new+ 내용이 복제돼서 instance 가 되고 instance에 어떤 값이 올지 규제하기 위해 PrintWriter 라는 class 이름을 적음

-e.g.)PrintWriter p1

 

 

<자바 문서 보는법-inheritance(상속)>

PrintWriter를 만든 사람이 Writer의 변수를 물려받으면서(=상속) 원하는 변수를 추가함
Writer를 만든 사람은 Object를 상속받아서 Writer에 원하는 변수를 추가함

PrintWriter p1 = new PrintWriter("result1.txt");
p1.write("Hello 1");
p1.close();

PrintWriter p2 = new PrintWriter("result2.txt");
p2.write("Hello 2");
p2.close();
p1.write("Hello 1");
p2.toString(); 
p2.write("hello 2");

p2.toString();

-class PrintWriter extends Writer>class Writer extends Object> class Object 아래 있는 method toString

 

p2.write("hello 2"); 
-method Write 는 class PrintWriter 와 class Writer 모두에 존재. 이때는 class PrintWriter 아래 method write을 씀: 하위 class의 method가 상위 class의 method를 덮어씀=override(덮어쓰기)


<나의 앱 만들기1~2>

method: 서로 연관된 코드를 그룹핑해서 이름붙인 상자

class: 서로 연관된 method 와 variable을 그룹핑해 이름을 붙인것

instance: 하나의 class 를 복제해서 서로 다른 data의 값과 서로 같은 method 를 가진 복제본을 만든것

 

method>class>instance로 구조를 잡고 성을 쌓아감

'입문 > 생활코딩' 카테고리의 다른 글

JAVA - method  (0) 2022.12.08
JAVA - 제어문  (0) 2022.12.07
WEB1-HTML & Internet  (0) 2022.11.23