작년에 나는 휴식 후 Java에 중점을 둔 프로그래밍을 다시 방문했다. 저의 목표는 파이썬보다 더 어려운 언어였습니다. JDBC를 통한 운영 역학, 객체 지향 프로그래밍 (OOP), 메모리 관리 및 데이터베이스 연결성 :
최근에, 나는 JavaScript로 시작하여 웹 개발로 전환했습니다. 며칠 동안 JavaScript를 탐색 한 후 Java와 JavaScript의 주요 차이점과 원활한 전환이 가능한 방법에 대한 관찰과 통찰력을 공유하고 싶습니다.
가장 눈에 띄는 차이는 데이터 유형 선언에 있습니다. Java의 정적 타이핑과 달리 JavaScript는 동적으로 입력됩니다. 두 가지 접근법 모두 장점과 단점이 있지만, JavaScript의 단일 스레드 자연은 Java의 멀티 스레드 기능과 대조됩니다.
Java를 세심하고 세부적인 지향적 인 군인이라고 상상해보십시오. 작업과 근거를 모두 지정하는 지침은 정확해야합니다. 반대로 JavaScript는 편안한 친구와 비슷합니다. 과도한 세부 사항없이 작업을 효율적으로 완료합니다. 단순히 작업을 제공하고 실행을 처리합니다.
Java는 변수를 정의 할 때 명백한 데이터 유형 선언 (예 : ,
int ,
float ,
float float
boolean )를 의무화합니다. 그러나 JavaScript는 유연합니다. 변수는
let 또는
const (상수의 경우)를 사용하여 선언되며 런타임에 유형 결정이 발생합니다.
var 는 비슷한 목적을 제공했지만
와
const
java 예 :
class Main {
public static void main(String[] args) {
int a = 5;
int b = 6;
int result = a b;
System.out.println(result);
}
}
javaScript 예 :
let a = 5;
let b = 6;
let sum = a b;
console.log("The sum is: " sum);
널리 사용되는 경우 JavaScript에서 OOP를 이해하는 것이 중요합니다. JavaScript의 동적 타이핑 외에도 프로토 타입을 통해 속성을 상속하는 프로토 타입 기반입니다. Post-ES6, JavaScript는 클래스와 함께 OOP를 완전히 지원하지만 기본적으로 프로토 타입에 의존합니다.
다음 코드 스 니펫은 클래스 및 메소드 생성의 구문 차이를 보여줍니다.
자바:class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("Hello, " name);
}
public static void main(String[] args) {
Person person = new Person("John");
person.greet();
}
}
클래스 사람 {
문자열 이름;
사람 (문자열 이름) {
this.name = 이름;
}
void greet () {
System.out.println ( "Hello,"Name);
}
public static void main (String [] args) {
사람 = 새로운 사람 ( "존");
person.greet ();
}
} javaScript :
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, ${this.name}`);
}
}
const person = new Person("John");
person.greet();
클래스 사람 {
생성자 (이름) {
this.name = 이름;
}
환영하다() {
console.log (`hello, $ {this.name}`);
}
}
const person = 새로운 사람 ( "John");
person.greet (); javaScript의 객체 생성
Java에서 객체 생성에는 클래스 정의가 필요합니다. JavaScript는 유연성을 제공합니다. 객체는 명시적인 클래스 선언없이 직접 생성 할 수 있습니다.
Java는 모든 객체가 클래스의 인스턴스가되도록 요구합니다. JavaScript는 직접 객체 생성을 허용합니다 :
javaScriptclass Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, ${this.name}`);
}
}
const person = new Person("John");
person.greet();
const person = {
이름 : "존",
인사 : function () {
console.log (`hello, $ {this.name}`);
}
};
person.greet ();
상속 구문은 두 언어에서 유사성을 보여줍니다.
자바:class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("Hello, " name);
}
public static void main(String[] args) {
Person person = new Person("John");
person.greet();
}
}
클래스 동물 {
void sound () {
System.out.println ( "Some Sound");
}
}
계급 개 확장 동물 {
void sound () {
System.out.println ( "껍질");
}
}
공개 클래스 메인 {
public static void main (String [] args) {
개 개 = 새로운 개 ();
dog.sound ();
}
} javaScript :
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, ${this.name}`);
}
}
const person = new Person("John");
person.greet();
클래스 동물 {
소리() {
Console.log ( "Some Sound");
}
}
계급 개 확장 동물 {
소리() {
Console.log ( "껍질");
}
}
const dog = new Dog ();
dog.sound ();
JavaScript의 캡슐화는 Java보다 약합니다. 액세스 수정 자 ( private
, protected
, public
가 없습니다. 그러나 ES2022에 소개 된
class Person {
#name;
constructor(name) {
this.#name = name;
}
greet() {
console.log(`Hello, ${this.#name}`);
}
}
const person = new Person("John");
person.greet();
console.log(person.#name); // Error: Private field '#name' must be declared in an enclosing class
클래스 사람 {
#이름;
생성자 (이름) {
#이름 = 이름;
}
환영하다() {
console.log (`hello, $ {this.#name}`);
}
}
const person = 새로운 사람 ( "John");
person.greet ();
Console.log (Person.#name); // 오류 : 개인 필드 '#Name'은 클래스 클래스에서 선언해야합니다
Java는 컴파일 타임 다형성 (메소드 과부하) 및 런타임 다형성 (메소드 재정의)을 지원합니다.
class Animal {
sound() {
console.log("Some sound");
}
}
class Dog extends Animal {
sound() {
console.log("Bark");
}
}
const dog = new Dog();
dog.sound(); // Bark
클래스 동물 {
소리() {
Console.log ( "Some Sound");
}
}
계급 개 확장 동물 {
소리() {
Console.log ( "껍질");
}
}
const dog = new Dog ();
dog.sound (); // 짖다 부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3