当前位置: 首页 > article >正文

javaScript 和 Java 的语法区别(有前端基础)

目录

一、语法风格

1.变量声明

2.代码块

3.分号

二、面向对象编程

1. 类和对象的定义

2. 方法和属性的访问修饰符

3. 继承方式

 三、数据类型和类型转换

1.数据类型

 2. 类型转换

四、异常处理

1. 语法结构

2. 异常类型

五、开发工具和生态系统

1.开发工具

2.运行环境


各位前端小伙伴工作中应该能经常看到后端同学的代码,虽然语法有一定的区别,但代码逻辑和思路让我们也能看懂一部分后端代码。如果对Java有兴趣的话,可以看看以下对两者区别的介绍,让你在和后端沟通中更为顺畅。

一、语法风格

1.变量声明

        JS: 

                使用varletconst声明变量。其中,var存在变量提升的现象,而letconst不存在变量提升,并且const声明的变量不能被重新赋值.

                示例:

       var x = 10;
       console.log(x); // 10
       console.log(y); // undefined
       var y = 20;

       let a = 30;
       const b = 40;

        Java:

                 必须明确指定变量的类型,如int num;String str;等。在 Java 中没有变量提升的概念。

                示例:

       int num;
       num = 10;

2.代码块

         JS:

                使用大括号{}来定义代码块,例如函数体、条件语句、循环语句等。

                示例:

       if (true) {
         console.log('This is inside the if block.');
       }

         Java: 

                同样使用大括号来定义代码块,但 Java 的代码块结构更加严谨,例如在类、方法、循环等结构中,代码块的作用范围和规则更加明确。

                示例:

       if (true) {
         System.out.println("This is inside the if block.");
       }

3.分号

        JS:

                 分号是可选的(可写可不写,不影响程序执行),但为了避免一些潜在的错误,通常建议加上分号。

                示例:

       let x = 10
       let y = 20;
       console.log(x + y)

         Java: 

                分号是必须的,用于结束一条语句。

                示例:

       int num = 10;
       System.out.println(num);

二、面向对象编程

1. 类和对象的定义

        JS:

                在 ES6 中引入了类的概念,但本质上是基于原型的面向对象编程。可以使用class关键字定义类,通过构造函数和原型链来实现继承。

                示例:

       class Person {
         constructor(name) {
           this.name = name;
         }
         sayHello() {
           console.log(`Hello, my name is ${this.name}.`);
         }
       }
       let person = new Person('John');
       person.sayHello();

        Java: 

                 是纯粹的面向对象编程语言,使用class关键字定义类,通过类的继承和接口实现多态性。Java 的面向对象编程更加严格和规范。

                示例:

       class Person {
         private String name;
         public Person(String name) {
           this.name = name;
         }
         public void sayHello() {
           System.out.println("Hello, my name is " + this.name + ".");
         }
       }
       Person person = new Person("John");
       person.sayHello();

2. 方法和属性的访问修饰符

         JS: 

                没有像 Java 那样严格的访问修饰符。虽然可以通过一些约定来模拟私有属性和方法,但并不是真正的访问限制。

                示例:

       class Person {
         constructor(name) {
           this._name = name; // 约定以 _ 开头的为私有属性
         }
         get name() {
           return this._name;
         }
         set name(newName) {
           this._name = newName;
         }
       }
       let person = new Person('John');
       console.log(person.name);
       person.name = 'Mike';
       console.log(person.name);

        Java: 

                 有publicprivateprotected等访问修饰符,可以严格控制类的成员的访问权限。

                示例:

       class Person {
         private String name;
         public Person(String name) {
           this.name = name;
         }
         public String getName() {
           return name;
         }
         public void setName(String newName) {
           this.name = newName;
         }
       }
       Person person = new Person("John");
       System.out.println(person.getName());
       person.setName("Mike");
       System.out.println(person.getName());

3. 继承方式

        JS:  

                主要通过原型链和构造函数的方式实现继承,相对比较灵活。

                示例:

       class Animal {
         constructor(name) {
           this.name = name;
         }
         makeSound() {
           console.log('Animal makes a sound.');
         }
       }
       class Dog extends Animal {
         constructor(name) {
           super(name);
         }
         makeSound() {
           console.log('Woof!');
         }
       }
       let dog = new Dog('Buddy');
       dog.makeSound();

        Java

                支持单继承和多实现,继承关系更加明确和严格 。

                示例:

       class Animal {
         public void makeSound() {
           System.out.println("Animal makes a sound.");
         }
       }
       class Dog extends Animal {
         @Override
         public void makeSound() {
           System.out.println("Woof!");
         }
       }
       Dog dog = new Dog();
       dog.makeSound();

 三、数据类型和类型转换

1.数据类型

        JS

                是一种弱类型语言,变量的数据类型可以动态改变。有基本数据类型(如numberstringbooleannullundefined等)和引用数据类型(如对象、数组等)。

                示例:

       let x = 10;
       x = 'Hello';
       x = true;

        Java

                是一种强类型语言,变量在声明时必须指定数据类型,并且不能随意改变。Java 有基本数据类型(如intdoublechar等)和引用数据类型(如类、接口、数组等) 。

                示例:

       int num = 10;
       // num = "Hello"; // 编译错误,不能将字符串赋值给整型变量

 2. 类型转换

        JS

                自动类型转换比较灵活,可能会在一些情况下自动进行类型转换,这可能会导致一些意想不到的结果。例如,"1" + 2的结果是"12",而不是3。

                示例:

       console.log("1" + 2); // "12"
       console.log(1 + "2"); // "12"
       console.log(true + 1); // 2

        Java

                类型转换相对比较严格,需要显式地进行类型转换,否则会编译错误。例如,将int类型转换为double类型需要使用强制类型转换符(double)。

                示例:

       int num1 = 10;
       double num2 = num1; // 自动类型转换,int 转换为 double
       int num3 = (int) 10.5; // 强制类型转换,double 转换为 int

四、异常处理

1. 语法结构

        JS

                使用try...catch...finally语句来处理异常。可以捕获同步代码中的异常,但对于异步代码中的异常处理相对比较复杂,需要使用promiseasync/await等方式来处理。

                示例:

       try {
         // 可能抛出异常的代码
         let result = 10 / 0;
       } catch (error) {
         console.log('An error occurred: ' + error.message);
       } finally {
         console.log('Finally block executed.');
       }

         Java

                同样使用try...catch...finally语句来处理异常。Java 的异常处理机制更加完善,可以捕获各种类型的异常,包括编译时异常和运行时异常。

                示例:

       try {
         // 可能抛出异常的代码
         int result = 10 / 0;
       } catch (ArithmeticException e) {
         System.out.println("An error occurred: " + e.getMessage());
       } finally {
         System.out.println("Finally block executed.");
       }

2. 异常类型

         JS

                有一些内置的异常类型,如ErrorTypeErrorReferenceError等,但也可以自定义异常。

                示例:

       function divide(a, b) {
         if (b === 0) {
           throw new Error('Division by zero is not allowed.');
         }
         return a / b;
       }
       try {
         let result = divide(10, 0);
       } catch (error) {
         console.log(error.message);
       }

         Java

                有丰富的内置异常类型,如IOExceptionSQLExceptionNullPointerException等,并且可以自定义异常类来满足特定的需求。

                示例:

       class CustomException extends Exception {
         public CustomException(String message) {
           super(message);
         }
       }
       public class Main {
         public static void main(String[] args) {
           try {
             throw new CustomException("This is a custom exception.");
           } catch (CustomException e) {
             System.out.println(e.getMessage());
           }
         }
       }

五、开发工具和生态系统

1.开发工具

        JS:前端开发主要使用文本编辑器(如 Visual Studio Code、Sublime Text 等)和浏览器开发者工具进行调试。也有一些专门的前端框架和工具,如 React、Vue、Angular 等,以及包管理工具 npm 和 yarn。

        Java:通常使用集成开发环境(如 IntelliJ IDEA、Eclipse 等)进行开发,这些 IDE 提供了强大的代码编辑、调试、构建和项目管理功能。Java 也有丰富的开发框架和库,如 Spring、MyBatis 等,以及包管理工具 Maven 和 Gradle。

2.运行环境

        JS:主要在浏览器和 Node.js 环境中运行。浏览器提供了 DOM 和 BOM 等 API,用于网页开发;Node.js 是一个基于 Chrome V8 引擎的服务器端 JavaScript 运行环境,可以进行服务器端开发。

        Java:可以在各种平台上运行,包括服务器、桌面应用、移动设备等。Java 虚拟机(JVM)提供了跨平台的运行环境,使得 Java 程序可以在不同的操作系统上运行。

         


http://www.kler.cn/a/375932.html

相关文章:

  • 2024年10月23日Github流行趋势
  • 替代BD63006/罗姆应用于吸尘器⾏⾛轮、卷发器,⽔泵,⼩⻛扇等驱动芯片GC4928介绍
  • ubuntu知识点滴积累
  • 从线性代数到unity mvp矩阵
  • Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)
  • python代码实现了一个二维粒子系统的模拟,模拟粒子在离散空间中的随机运动和相互作用
  • 【网络安全】|nessus使用
  • 【论文速读】| RED QUEEN: 保护大语言模型免受隐蔽多轮越狱攻击
  • 基于SSM医院门诊互联电子病历管理系统的设计
  • vue.set主要是干啥的,有啥作用
  • 指定 Maven 使用的 Java 版本
  • 数据库存储过程的后端调用(SQLServer)
  • [241102] Fedora Linux 41 正式发布 | Wasmer 5.0 发布
  • 【Apache Zookeeper】
  • Android 屏蔽\取消(禁止)下拉通知栏包括二级菜单下拉
  • Linux云计算 |【第五阶段】CLOUD-DAY6
  • C++中使用seekg函数进行随机读写
  • 基于SSM+VUE宠物医院后台管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • 金融文本情感分析模型
  • 前端之html(一)
  • 【2024最新开源】六足机器人控制算法
  • buck电源中电感大小的计算
  • Ubuntu:通过ssh链接另外一台Ubuntu
  • npm入门教程13:npm workspace功能
  • 【基础语法】Java Scanner hasNext() 和 hasNextLine() 的区别
  • HTML 基础标签——文本内容标签 <ul>、<ol>、<blockquote> 、<code> 等标签的用法详解