JavaScript到Java-全面比较
#javascript #java #oop #core

比较2种奇怪的语言,以获得更好的理解。有些人可能喜欢这种方法,有些则不会。但是没有其他方法可以找出答案。这并不是您找到有关这些语言需要了解的所有地方的地方。这更像是一篇有关它的位置以及这些要去哪里的文章。

我对将其推荐给绝对初学者有些犹豫,因为某些单词可能会令人困惑。但是我仍然会尝试用作简单单词来解释这些概念。

由于编程行业一直在不断改进而没有放缓,因此我们最终获得了许多技术和语言。当您从初学者的角度看它时,可能会令人困惑。因此,我将对这两种语言的变化以及它们的工作方式提供一些总体。因为Java是最古老,最牢固的语言之一,另一方面是JavaScript是一种现代语言,因此我认为比较它们并查看发生了什么变化会很有趣。

在我们深处之前,让我对..

进行一些概述。

我们在哪里使用这些语言。

Java是一种通用编程语言,在各种环境中广泛使用,包括桌面应用程序开发,Web开发,移动开发和企业应用程序。
Java以其可移植性,可扩展性和性能而闻名,通常用于构建需要在各种平台上运行的大规模应用程序。

和JavaScript也是一种通用编程语言,但主要用于Web开发。 JavaScript用于将交互性和动态行为添加到网页中,并得到所有现代Web浏览器的支持。 JavaScript还用于使用Node.js之类的运行时环境来构建服务器端应用程序,并且它越来越多地用于使用React Native等框架。

因此,通常我们可以使用两种语言来构建桌面应用程序,移动应用程序和服务器端应用程序,并具有自己的优点和缺点。
这也是选择此主题的主要原因,因为他们俩都具有他们的能力竞争。

现在有点深,看看这些语言的核心属性。

这些语言如何与处理器交谈。

即使它们主要以与处理器(中央处理单元或CPU)交谈的方式达到相似的目的。

在Java中,该代码被编译为字节码,这是一种低级机器可读格式,可以由Java Virtual Machine(JVM)执行。 JVM是一个运行时环境,负责执行字节码并管理程序的内存和资源。当JVM运行字节码时,它将指令转换为可以由CPU理解的机器代码。

在JavaScript中,该代码通常由JavaScript引擎解释,该引擎是执行JavaScript代码的软件程序。 JavaScript引擎读取代码并将其转换为CPU可以理解的机器代码。与Java不同,JavaScript未编译到独立的可执行文件中(您可以在YouTube上找到有关如何编译Java代码的大量教程),而是由JavaScript引擎直接执行,因为它在网页或其他上下文中遇到了它, 。
JavaScript引擎可能与您使用的浏览器不同。

数据类型

在Java和JavaScript中,变量都用于存储内存中的值。但是,在两种语言之间,将这些值存储和访问在内存中可能完全不同。

在Java中,变量存储在内存中的特定位置,并且该位置由Java Virtual Machine(JVM)确定在运行时。 JVM还管理变量的寿命,根据需要分配和交易记忆。 Java具有许多不同的数据类型,包括原始类型(例如INT,Double和Char)和参考类型(例如对象和数组)。原始类型直接存储在内存中,而参考类型则作为指针存储到存储对象的存储位置。

在JavaScript中,变量也存储在内存中,但是它们的存储和访问方式与Java完全不同。 JavaScript是一种动态型的语言,这意味着变量的类型在运行时确定,并且可以在变量的寿命中更改。 JavaScript变量不绑定到内存中的特定位置,而是存储在与当前执行上下文关联的变量对象中。 JavaScript具有许多不同的数据类型,包括原始类型(例如数字,字符串和布尔值)和参考类型(例如对象和数组)。原始类型直接存储在内存中,而参考类型则作为对它们代表的对象的引用。

我们经常听到的是,Java是一种静态打字的语言,JavaScript是一种动态键入的语言。最近引入了TypeScript,它的工作方式类似于JavaScript,具有类型等等。 Java最近还引入了Java 10中的var关键字,该关键字像动态数据类型一样。仍然不是动态数据类型,它仅允许您在不指定显式类型的情况下声明变量,并且从初始化器表达式推断该类型。因此,在这里我们也可以看到这些语言有一些相似的动作。

了解这些语言时可能是一个优势。

对象方向

面向对象的编程并非任何语言。这是一个用于编程的概念,可以通过不同语言来实现自己的方式。

java
当我们听到OOP时,Java可能是我们想到的第一批语言之一。在下面,我将添加这两种语言如何处理此技术的关键领域。

  • Java是一种基于类的OOP语言,这意味着对象是根据类定义创建的。

基于类的OOP的示例 -

public class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public void greet() {
    System.out.println("Hello, my name is " + this.name + " and I am " + this.age + " years old.");
  }
}

要在Java中创建一个新人对象,您将使用这样的新操作员:

Person p = new Person("John", 30);
p.greet();  // Output: "Hello, my name is John and I am 30 years old."
  • Java有四个访问修饰符(公共,受保护,私人和默认),可以确定类成员(字段,方法等)的可见性和可访问性。

  • 在Java中,可以定义具有相同名称但不同参数列表的多种方法,这是一种称为方法过载的技术。

  • java具有静态成员的概念,它们与类,而不是类的特定实例相关联。

  • Java具有称为“接口”的功能,该功能允许类指定必须实现的一组方法。

javascript

  • JavaScript是一种基于原型的OOP语言,这意味着对象可以从其他对象(称为原型)继承属性和方法。 (还请注意,JavaScript在ES6中引入了类,可以用作语法来创建对象并定义其行为)。

基于原型OOP的示例

let person = {
  name: 'John',
  age: 30,
  greet: function() {
    console.log('Hello, my name is ' + this.name);
  }
};

要创建一个从JavaScript中继承的对象继承的新对象,您将使用对象。类似的方法:

let student = Object.create(person);
student.study = function() {
  console.log(this.name + ' is studying.');
};

student.greet();  // Output: "Hello, my name is John"
student.study();  // Output: "John is studying."

基于类的OOP语言使用类定义对象,而基于原型的OOP语言使用原型创建从现有对象继承的新对象。两种方法都有自己的利益和权衡,最佳使用方法取决于应用程序的特定需求。

  • JavaScript没有访问修饰符,默认情况下所有对象属性和方法都是公开的。

  • JavaScript不支持方法过载,但是它确实允许使用可选参数定义函数。

  • JavaScript与静态成员无直接等效,但是可以使用类定义中的静态关键字实现相似的效果。

  • JavaScript没有接口,但是如果我们想要的话,我们仍然可以使用没有特殊行为或执行的常规对象。

这些只是Java和JavaScript之间的一些差异。两种语言之间还有许多其他差异,与它们合作时,了解每种语言的特定功能和功能很重要。

我没有深入了解所有功能。但是我希望有人会发现这有帮助。而且,您的更正或建议始终受到欢迎,因为它们可以帮助我改善。

,如果您喜欢它,请不要犹豫,您的支持将非常感谢。