java基础语法整理 ----- 上

java基础语法

  • 一、变量
  • 二、数据类型
  • 三、标识符
  • 四、键盘录入
  • 五、判断语句
    • 1. 三种格式
    • 2. 练习题
  • 六、switch语句
  • 七、循环
  • 八、循环控制语句
  • 九、方法

一、变量

1.什么是变量:

  • 在程序运行过程中,其值可以发生改变的量
  • 从本质上讲,变量是内存中的一块小空间,其值可以在一定范围内变化。
  • 变量主要突出一个字。

2.变量的应用场景

  1. 商品价格
    • 在实际项目中,随时有可能发生改变的数据,就可以用变量进行表示。
    • 比如:商品的价格,如下图所示,商品的价格可能随机有可能发生变化,那么价格就需要用变量进行记录。
    • 当价格改变的时候,只要修改变量里面记录的值就可以了。
    • 在这里插入图片描述
  2. 商品价格
    • 在实际项目中,随时有可能发生改变的数据,就可以用变量进行表示。
    • 比如:登录界面中的用户名和密码,如下图所示,每一个用户来登录的时候,输入的用户名和密码都是不一样的。
    • 那么在程序中,用户名和密码就可以用变量来进行记录。
    • 当不同的用户来登录的时候,就是让这两个变量记录不同的值就可以了。
    • 在这里插入图片描述

3.变量的定义格式

  1. 完整格式:
    // 定义变量的同时并赋值
    数据类型 变量名 = 初始化值;
    
  2. 将定义和赋值分开
    数据类型 变量名;
    变量名 = 初始化值;
    
    // 先定义
    double money;
    // 再赋值(使用前赋值即可)
    money = 55.5;
    System.out.println(money);
    
  3. 还可以在同一行定义多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。
    // 定义int类型的变量a和b,中间使用逗号隔开
    int a = 10, b = 20; 
    System.out.println(a);
    System.out.println(b);
    
    // 声明int类型的变量c和d,中间使用逗号隔开
    int c,d; 
    c = 30;
    d = 40;
    System.out.println(c);
    System.out.println(d);
    

4.格式详解

数据类型 变量名 = 初始化值;

  • 数据类型:决定了变量以后能存储什么类型的数据
  • 变量名:给变量起了个名字,方便以后使用
  • 等号:赋值,表示把等号右边的数据赋值给等号左边
  • 初始化值:表示现在变量要记录的数据
  • 分号:语句的结束,就跟写作文中的句号是一样的
  1. 举例1:
    // 定义一个变量记录年龄
    int age = 10;
    
  2. 举例2:
    // 定义一个变量记录姓名
    String name = "zhangsan";
    
  3. 举例3:
    // 定义一个变量记录身高
    double height = 1.93;
    

二、数据类型

1.Java语言数据类型的分类:

  • 基本数据类型
  • 引用数据类型

2.基本数据类型的四类八种

数据类型关键字内存占用取值范围
整数byte1负的2的7次方 ~ 2的7次方-1(-128~127)
整数short2负的2的15次方 ~ 2的15次方-1(-32768~32767)
整数int4负的2的31次方 ~ 2的31次方-1
整数long8负的2的63次方 ~ 2的63次方-1
浮点数float41.401298e-45 ~ 3.402823e+38
浮点数double84.9000000e-324 ~ 1.797693e+308
字符char20-65535
布尔boolean1true,false

3.说明

  • e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。
  • 在java中整数默认是int类型,浮点数默认是double类型。

4.需要记忆以下几点

  • byte类型的取值范围:-128 ~ 127
  • int类型的大概取值范围:-21亿多 ~ 21亿多
  • 整数类型和小数类型的取值范围大小关系:double > float > long > int > short > byte

5.最为常用的数据类型选择:

  • 在定义变量的时候,要根据实际的情况来选择不同类型的变量。
    • 比如:人的年龄,可以选择byte类型。
    • 比如:地球的年龄,可以选择long类型。
  • 如果整数类型中,不太确定范围,那么默认使用int类型。
  • 如果小数类型中,不太确定范围,那么默认使用double类型。
  • 如果要定义字符类型的变量,那么使用char。
  • 如果要定义布尔类型的变量,那么使用boolean

6.定义8种基本数据类型变量

public class Demo1{
    public static void main(String[] args){
        // 定义byte类型的变量
        // 数据类型 变量名 = 数据值;
        byte a = 10;
        System.out.println(a);

        // 定义short类型的变量
        short b = 20;
        System.out.println(b);

        // 定义int类型的变量
        int c = 30;
        System.out.println(c);

        // 定义long类型的变量
        long d = 12345678987654321L;
        System.out.println(d);

        // 定义float类型的变量
        float e = 66.6F;
        System.out.println(e);

        // 定义double类型的变量
        double f = 88.88;
        System.out.println(f);

        // 定义char类型的变量
        char g = 'a';
        System.out.println(g);

        // 定义boolean类型的变量
        boolean h = true;
        System.out.println(h);

    }
}

注意点

  • 如果要定义 一个整数类型的变量,不知道选择哪种数据类型了,默认使用int。
  • 如果要定义 一个小数类型的变量,不知道选择哪种数据类型了,默认使用double。
  • 如果要定义一个long类型的变量,那么在数据值的后面需要加上L后缀。(大小写都可以,建议大写。)
  • 如果要定义一个float类型的变量,那么在数据值的后面需要加上F后缀。(大小写都可以)

三、标识符

  1. 业内大多数程序员都在遵守阿里巴巴的命名规则
  2. 在线阅读:点击进入

1.硬性要求:必须要这么做,否则代码会报错

  • 必须由数字、字母、下划线_、美元符号$组成
  • 数字不能开头
  • 不能是关键字
  • 区分大小写的

2.软性建议:如果不这么做,代码不会报错,但是会让代码显得比较low

3.小驼峰命名法(适用于变量名和方法名)

  • 如果是一个单词,那么全部小写,比如:name
  • 如果是多个单词,那么从第二个单词开始,首字母大写,比如:firstName、maxAge

4.大驼峰命名法(适用于类名)

  • 如果是一个单词,那么首字母大写。比如:Demo、Test
  • 如果是多个单词,那么每一个单词首字母都需要大写。比如:HelloWorld

不管起什么名字,都要做到见名知意

5.阿里巴巴命名规范细节

  1. 尽量不要用拼音。但是一些国际通用的拼音可视为英文单词
    • 正确:alibaba、hangzhou、nanjing
    • 错误:jiage、dazhe
  2. 平时在给变量名、方法名、类名起名字的时候,不要使用下划线或美元符号。
    • 错误:_name
    • 正确:name

四、键盘录入

键盘录入的实际功能Java已经帮我们写好了,不需要我们自己再实现了,而Java写好的功能都放在了Scanner这个类中,所以,我们只要直接使用Scanner这个类就可以了

使用步骤:

  1. 导包:其实就是表示先找到Scanner这个类在哪
  2. 创建对象:其实就表示申明一下,我准备开始用Scanner这个类了
  3. 接收数据:也是真正干活的代码
// 导包,其实就是先找到Scanner这个类在哪
import java.util.Scanner;

public class ScannerDemo{
    public static void main(String[] args){
        // 创建对象,其实就是申明一下,我准备开始用Scanner这个类了。
        Scanner sc = new Scanner(System.in);
        // 接收数据
        // 当程序运行之后,我们在键盘输入的数据就会被变量i给接收了
        System.out.println("请输入一个数字");
        int i = sc.nextInt();
        System.out.println(i);
    }
}

五、判断语句

1. 三种格式

  1. 第一种格式,适用于单个条件的判断
if (关系表达式) {
    语句体;	
}
  1. 第二种格式,适用于两个条件的判断
if (关系表达式) {
    语句体1;	
} else {
    语句体2;	
}
  1. 第三种格式,使用与多个条件的判断
if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
}else {
    语句体n+1;
}

2. 练习题

需求:键盘录入体重,如果大于150斤,给出超重回应,否则没有任何回应

代码如下:

// 键盘录入体重
Scanner sc = new Scanner(System.in);
System.out.println("请输入体重");
int wine = sc.nextInt();//5
// 对体重进行一个判断即可
if(wine > 150) {
    System.out.println("小伙子,你超重了!!!");
}

需求:键盘录入一个整数,表示身上的钱。如果大于等于100块,就是自助餐厅。否则,就吃经济实惠的路边摊。

// 键盘录入一个整数。表示身上的钱。
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数表示身上的钱");
int money = sc.nextInt();
// 对钱进行判断
if(money >= 100){
    System.out.println("吃自助餐厅");
}else{
    System.out.println("路边摊");
}

需求:90-100分为优,80-90分为良,70-80分为中,60-70分为差

//1.键盘录入一个值表示小明的分数
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明的成绩");
int score = sc.nextInt();
// 对分数的有效性进行判断
if(score >= 0 && score <= 100){
    // 有效的分数
    // 分数进行判断,不同情况执行不同的代码
    if(score > 90 && score <= 100){
        System.out.println("优");
    }else if(score > 80 && score <= 90){
        System.out.println("良");
    }else if(score > 70 && score <= 80){
        System.out.println("中");
    }else{
        System.out.println("差");
    }
}else{
    // 无效的分数
    System.out.println("分数不合法");
}

六、switch语句

  1. 格式
switch (表达式) {
	case 1:
		语句体1;
		break;
	case 2:
		语句体2;
		break;
	...
	default:
		语句体n+1;
		break;
}
  1. 执行流程
  • 首先计算出表达式的值
  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
  1. 小练习

需求:键盘录入星期数,显示今天的减肥活动
周一:跑步

周二:游泳

周三:慢走

周四:动感单车

周五:拳击

周六:爬山

周日:好好吃一顿

public class SwitchDemo {
    public static void main(String[] args) {
        // 键盘录入一个整数表示星期
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数表示星期");
        int week = sc.nextInt();

        // 书写一个switch语句去跟week进行匹配
        switch (week){
            case 1:
                System.out.println("跑步");
                break;
            case 2:
                System.out.println("游泳");
                break;
            case 3:
                System.out.println("慢走");
                break;
            case 4:
                System.out.println("动感单车");
                break;
            case 5:
                System.out.println("拳击");
                break;
            case 6:
                System.out.println("爬山");
                break;
            case 7:
                System.out.println("好好吃一顿");
                break;
            default:
                System.out.println("输入错误,没有这个星期");
                break;
        }
    }
}
  1. switch的扩展知识
  • default的位置和省略情况
  • default可以放在任意位置,也可以省略
  • case穿透
  • 不写break会引发case穿透现象
  • switch在JDK17的新特性
int number = 10;
switch (number) {
    case 1 -> System.out.println("一");
    case 2 -> System.out.println("二");
    case 3 -> System.out.println("三");
    default -> System.out.println("其他");
}

需求:键盘录入星期数,输出工作日、休息日

// 键盘录入星期数
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期");
int week = sc.nextInt();//3
// 利用switch进行匹配
----------------------------------------------------
// 利用case穿透简化代码
switch (week){
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        System.out.println("工作日");
        break;
    case 6:
    case 7:
        System.out.println("休息日");
        break;
    default:
        System.out.println("没有这个星期");
        break;
}
----------------------------------------------------
// 利用JDK17简化代码书写
switch (week) {
    case 1, 2, 3, 4, 5 -> System.out.println("工作日");
    case 6, 7 -> System.out.println("休息日");
    default -> System.out.println("没有这个星期");
}

七、循环

java中一共有三种循环

  • for格式的循环
  • while格式的循环
  • do…while格式的循环

1.for循环格式

for (初始化语句;条件判断语句;条件控制语句) {
	循环体语句;
}

格式解释:

  • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样
  • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
  • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情
  • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去

执行流程:

  1. 执行初始化语句

  2. 执行条件判断语句,看其结果是true还是false

    • 如果是false,循环结束
    • 如果是true,继续执行
  3. 执行循环体语句

  4. 执行条件控制语句

  5. 回到2继续

for循环书写技巧:

  • 确定循环的开始条件
  • 确定循环的结束条件
  • 确定循环要重复执行的代码

代码示例

//1.确定循环的开始条件
//2.确定循环的结束条件
//3.确定要重复执行的代码

//需求:打印5次HelloWorld
//开始条件:1
//结束条件:5
//重复代码:打印语句

for (int i = 1; i <= 5; i++) {
    System.out.println("HelloWorld");
}

2.while循环格式

while(条件判断语句){
	循环体;
	条件控制语句;
}

3.do…while循环

do{
    循环体;
    条件控制语句;
}while(条件判断语句);

特点:先执行,再判断

4.三种格式的区别:

  • for和while循环,是先判断,再执行

  • do…while是先执行,再判断

  • 当知道循环次数或者循环范围的时候,用for循环

  • 当不知道循环次数,也不知道循环范围,但是知道循环的结束条件时,用while循环

八、循环控制语句

1.break:不能单独存在的。可以用在switch和循环中,表示结束,跳出的意思

//需求,小A同学平时能吃5个包子,但是有一天胃口不好,吃完第三个的时候就不吃了
for (int i = 1; i <= 5; i++) {
    System.out.println("在吃第" + i + "个包子");
    //吃完第三个的时候就不吃了
    if(i == 3){
        break;//结束整个循环。
    }
}

2.continue:不能单独存在的。只能存在于循环当中, 表示:跳过本次循环,继续执行下次循环

//需求,小A同学平时能吃5个包子,但是有一天第三个包子里面有虫子,第三个包子不吃
for (int i = 1; i <= 5; i++) {
    //第3个包子有虫子就跳过,继续吃下面的包子
    if(i == 3){
        //跳过本次循环(本次循环中,下面的代码就不执行了),继续执行下次循环。
        continue;
    }
    System.out.println("在吃第" + i + "个包子");
}

九、方法

1.方法的格式

public static 返回值类型 方法名(参数) {
   方法体; 
   return 数据 ;
}

2.格式详解

  • 格式解析
    • public static :修饰符
    • 返回值类型:方法操作完毕之后返回的数据的数据类型
    • 如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return
    • 方法名:调用方法时候使用的标识
    • 参数:由数据类型和变量名组成,多个参数之间用逗号隔开
    • 方法体:完成功能的代码块
    • return:如果方法操作完毕,有数据返回,用于把数据返回给调用者
  • 两个明确
    • 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
    • 明确参数:主要是明确参数的类型和数量
  • 两个注意
    • void类型的方法,直接调用即可
    • 非void类型的方法,推荐用变量接收调用

3.方法的重载

  1. 概念:方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

    • 多个方法在同一个类中
    • 多个方法具有相同的方法名
    • 多个方法的参数不相同,类型不同或者数量不同
  2. 注意点:

    • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
    • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
  3. 正确范例:

public class MethodDemo {
	public static void fn(int a) {
    	//方法体
    }
    public static int fn(double a) {
    	//方法体
    }
}

public class MethodDemo {
	public static float fn(int a) {
    	//方法体
    }
    public static int fn(int a , int b) {
    	//方法体
    }
}
  1. 错误范例
public class MethodDemo {
	public static void fn(int a) {
    	//方法体
    }
    /*错误原因:重载与返回值无关*/
    public static int fn(int a) { 	
    	//方法体
    }
}

public class MethodDemo01 {
    public static void fn(int a) {
        //方法体
    }
} 
/*错误原因:这是两个类的两个fn方法*/
public class MethodDemo02 {
    public static int fn(double a) { 
        //方法体
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/692054.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用树莓派和 L298N 来 DIY 小车底盘

树莓派小车可以作为 STEM&#xff08;科学、技术、工程、数学&#xff09;教育的工具&#xff0c;在实际操作中帮助学生理解和学习电子技术、编程和机器人原理。可以培养学生的动手能力、解决问题的能力和创新思维。 随着近年 AI 技术的高速发展&#xff0c;SLAM、VSLAM 甚至带…

JDBC学习笔记(三)高级篇

一、JDBC 优化及工具类封装 1.1 现有问题 1.2 JDBC 工具类封装 V1.0 resources/db.properties配置文件&#xff1a; driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql:///atguigu usernameroot password123456 initialSize10 maxActive20 工具类代码&#xff1a; p…

PDF编辑与转换的终极工具智能PDF处理Acrobat Pro DC

Acrobat Pro DC 2023是一款功能全面的PDF编辑管理软件&#xff0c;支持创建、编辑、转换、签署和共享PDF文件。它具备OCR技术&#xff0c;可将扫描文档转换为可编辑文本&#xff0c;同时提供智能PDF处理技术&#xff0c;确保文件完整性和可读性。此外&#xff0c;软件还支持电子…

【远程连接服务器】—— Workbench和Xshell远程连接阿里云服务器失败和运行Xshell报错找不到 MSVCP110.d的问题分析及解决

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、远程连接不上服务器1. Workbench远程连接失败2.Xshell也连接不上3.解决方法(1)问题描述&#xff1a;(2)解决&#xff1a; 4.再次连接服务器 二、运行Xshell…

Python中猴子补丁是什么,如何使用

1、猴子补丁奇遇记 &#x1f412; 在Python的世界深处&#xff0c;隐藏着一种神秘而又强大的技巧——猴子补丁&#xff08;Monkey Patching&#xff09;。这是一项允许你在程序运行时动态修改对象&#xff08;如模块、类或函数&#xff09;的行为的技术。它得名于其“快速修补…

Segment Anything

参考&#xff1a;【图像分割】Segment Anything&#xff08;Meta AI&#xff09;论文解读-CSDN博客 背景 提示分割任务&#xff1a;在给定任何分割提示下返回一个有效的分割掩码目标&#xff1a;开发一个可提示的图像分割的基础模型&#xff0c;在一个广泛的数据集上预训练&a…

后端启动项目端口冲突问题解决

后端启动项目端口冲突 原因&#xff1a; Vindows Hyper-V虚拟化平台占用了端口。 解决方案一&#xff1a; 查看被占用的端口范围&#xff0c;然后选择一个没被占用的端口启动项目。netsh interface ipv4 show excludedportrange protocoltcp 解决方案二&#xff1a; 禁用H…

解决Android Studio Iguana版本不显示原创的GradleTask问题

问题描述&#xff1a; 下面是我的AndroidStudio版本号&#xff0c;升级后我发现项目里面自定义的gradletask找不到了&#xff1f;&#xff1f;&#xff1f; 解决方案&#xff1a; 1、去setting里面把下面红框里面的选项勾选一下&#xff0c;缺点就是sync的时候会慢一些。 2、…

elasticsearch安装与使用(4)-搜索入门

1、创建索引 PUT /hotel {"mappings": {"properties":{"title":{"type": "text"},"city":{"type": "keyword"},"price":{"type":"double"}}} }2、写入文档 …

手把手教你实现条纹结构光三维重建(1)——多频条纹生成

关于条纹结构光三维重建的多频相移、格雷码、格雷码相移、互补格雷码等等编码方法&#xff0c;我们在大多数平台上&#xff0c;包括现在使用语言大模型提问&#xff0c;都可以搜到相关的理论&#xff0c;本人重点是想教会你怎么快速用代码实现。 首先说下硬件要求&#xff0c;…

手搓文件格式转换

最初目标&#xff1a; 自己搞一个免费的pdf文件转换 根据现有的开源jar 项目实现思路&#xff1a; 1. 项目原因a. 我想转换文件b. wps 文件转换 2. 最初的状态a. jar运行的b. main,输入文件路径c. 一定的编程能力的人才能得 3. 开始构思项目a. 网页版本b. 想着大家一起用 4. …

vue的ant design多个输入框,输入其中一个输入框自动触发下一个输入框的校验

vue多个输入框&#xff0c;各输入值之间相互影响。 需求描述&#xff1a; 表单含有3个输入框 1&#xff09;额定电压&#xff1a;必填项&#xff0c;数值&#xff0c;手动录入&#xff0c;最大录入40字&#xff0c;默认单位为V&#xff0c;保留1为小数 2&#xff09;最大电压…

10倍速开发开关电源:PSIM DLL集成指南与如何单步调试你的代码

文末有彩蛋哦。 去年提到要写一篇如何在利用PSIM Visual Studio进行仿真联调&#xff0c;加速实际嵌入式端C代码的开发&#xff0c;但因为懒一直没兑现。 本期简单总结下实现的方法。 特别声明&#xff1a;本文约一半以上内容有kimi/文心一言提问式生成&#xff0c;仅用于技…

mysql表级锁(表锁/元数据锁/意向锁)

文章目录 表级锁的分类1、表锁(分类)1.表共享读锁&#xff08;read lock&#xff09;2.表独占写锁&#xff08;write lock&#xff09;3.语法&#xff1a; 2、元数据锁&#xff08;meta data lock &#xff09;3、意向锁1.意向共享锁&#xff08;IS&#xff09;&#xff1a;由语…

最小相位系统

最小相位系统 1、传递函数 一个线性系统的响应。 比如一个RC低通滤波器&#xff1a; 交流分量在电容的充放电中被滤除掉&#xff0c;通过设置电容器的电容值&#xff0c;以及电阻值&#xff0c;能够控制这种滤除能力&#xff0c;这个参数为RC。 电容的电抗为 1 / j w C 1/j…

【el-tooltips改造】Vue实现文本溢出才显示el-tooltip,否则不显示el-tooltips

实现原理&#xff1a; 使用disabled属性控制el-tooltip的content显示与隐藏&#xff1b; 目标&#xff1a; 1行省略、多行省略、可缩放页面内的文本省略都有效。 实现方式&#xff1a; 1、自定义全局指令&#xff0c;tooltipAutoShow.js代码如下&#xff08;参考的el-table中的…

TH方程学习 (7)

一、内容介绍 TH存在广泛应用&#xff0c;在下面案例中&#xff0c;将介绍几种相对运动模型&#xff0c;斜滑接近模型&#xff0c;本节学习斜滑接近制导方法能够对接近时间、接近方向以及自主接近过程的相对速度进行控制。施加脉冲时刻追踪器的位置连线可构成一条直线&#xf…

http接口上传文件响应413:413 Request Entity Too Large

目录 一、场景简介二、异常展示三、原因四、解决 一、场景简介 1、服务端有经过nginx代理 2、上传文件超过5M时&#xff0c;响应码为413 3、上传文件小于5M时&#xff0c;上传正常 二、异常展示 三、原因 nginx限制了上传数据的大小 四、解决 扩大nginx上传数据的大小 步…

QT4-QT5升级(3)GBK-UTF-8-乱码“常量中有换行符”

乱码有两种&#xff1a;我命名为汉字乱码菱形乱码如下&#xff1a; 1.文件编码为&#xff1a; GB2312 打开编码&#xff1a; GB2312 编译后&#xff1a; QString 部分字符串 常量中有换行符 char * …

MathType7.8学术必备神器 科研利器 教学好帮手

【MathType 7.8】数学公式编辑器&#xff0c;让学术和专业文档制作更高效、更准确&#xff01;&#x1f9ee;✨ 作为一名软件技术专家&#xff0c;我一直在寻找一款能够轻松创建复杂数学公式的工具。幸运的是&#xff0c;我终于找到了MathType 7.8&#xff0c;这款强大的数学公…