
Java文章杂谈
文章平均质量分 59
《Java文章杂谈》专栏是一个涵盖广泛的专栏,以Java编程语言为核心,讨论与Java相关的各种话题。无论是初学者还是经验丰富的开发者,本专栏都为读者提供有价值的文章,包括Java编程技巧、最佳实践、面试准备、框架介绍、新特性讲解等内容。
执章学长
这个作者很懒,什么都没留下…
展开
-
笔记——Java前言
java关键术语java官方已经编写了颇有影响力的“白皮书”。介绍了java。java白皮书将白皮书总结成简短的摘要:简单性、面向对象、分布式、健壮性、安全性、体系结构中立,可移植性、解释性、高性能、多线程、动态性。简单性:对比c++,比较简单,但设计时还是很靠近c++。java剔除了c++中许多很少使用、难以理解、易混淆的特性。面型对象:与c++旗鼓相当分布式:可以处理http和ftp之类的tcp/ip协议...原创 2021-07-04 15:16:55 · 1026 阅读 · 7 评论 -
Hexo写文章基本操作
用hexo写文章步骤1打开hexo的根目录,也就是里面有_config.yml, source, themes等等的那个,对于我个人我把他叫做myblog步骤2在该目录下打开git bash,执行该代码,可在浏览器打开http://localhost:4000/进行实时查看自己的网站。(注意:此时外网还不能访问本地的修改,只有提交之后才能访问。)hexo server步骤3(此时还是在根目录下执行以下操作)新建发布文章(post page)执行以下命令后会自动在\myblog\source原创 2021-09-26 00:49:04 · 5348 阅读 · 0 评论 -
(随笔)Spring IOC
1.什么是Spring IOC?IOC 翻译成中文就是 控制反转,通俗的讲就是将创建对象和管理对象关系的工作由程序员转到Spring。2.目的是什么?降低类之间的耦合度。3.假如现在有一个UserSevice类和一个UserDao类,如果要在UserSevice类中调用UserDao的一个方法,怎么做?3.1.传统方式:在UserSevice类中new一个UserDao对象,然后调用其方法。3.2.工厂模式:设计一个工厂类,在工厂类中new一个对象并返回,UserSecieve只需要调用工厂原创 2022-04-30 17:42:42 · 1022 阅读 · 0 评论 -
Redis 6 知识点总结
什么是 NoSQL 数据库?技术发展技术的分类我们学习过很多的技术,但根据技术的功能可以分为以下几种:功能型技术:解决基础的功能,没有它们根本完成不了项目。例如 JavaSE,HTML 等。扩展型技术:没有这些技术依然可以开发项目,但有了它们可以简化开发流程。例如:Spring、MyBatis 等。性能型技术:没有这些技术依然可以开发项目,但为了提高项目的性能,不得不使用这些技术。例如:Redis、MQ 等。Web 开发分类Web 1.0 时代在早期,项目基本是这种架构,那时候上网的人不是原创 2022-05-10 21:53:05 · 653 阅读 · 0 评论 -
idea 中 application.yml 识别不出来导致不提示
问题描述:在使用 idea 的时候,随着模块越来越多,idea 会出现一个小bug,就是当模块越来越多时,我们新建一个模块后,会发现我们创建了一个新的 application.yml文件并没有变成一个小叶子的图标,导致智能提示提示不了,而且看着也不舒服。如下图:显示白色或者红色,而不是绿色小叶子。问题解决:1、选择file,打开project structure2、选择modules3、选择出问题的模块,右键,选择add,选择spring(即小叶子图标)4、这个时候该模块下面会出现sprin原创 2022-05-20 12:58:31 · 2761 阅读 · 0 评论 -
Docker 常见命令(随笔)
安装 dockerdocker 官网:https://www.docker.com/docker 仓库官网:https://hub.docker.com/安装具体操作:1、安装工具包:yum install -y yum-utils 如果不是root用户,就在前面加上sudo。2、配置阿里云仓库,可以用官方的,但是阿里云速度快yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker原创 2022-05-17 22:19:29 · 1183 阅读 · 0 评论 -
RabbitMQ 知识点总结
消息队列MQ 的相关概念什么是 MQMQ = Message Queue = 消息队列消息队列:存放内容是消息的 FIFO(先入先出) 队列。是一种跨进程的通信机制,用于上下游传递消息。为什么要用 MQ ?1、流量消峰举个例子,假如一个系统一秒最多可以处理一万次订单,这个处理能力在正常时段是绰绰有余的。但是在高峰的时候(例如双十一),一秒钟能达到两万次请求,这时候系统是处理不了这么多的,传统的方法是限制当请求超过一万之后不允许用户下单。而使用消息队列的话可以做为缓冲,把一秒内处理的订单分成一段原创 2022-05-13 14:14:32 · 2086 阅读 · 0 评论 -
IDEA 中使用 EasyCode
1、先连接上数据库;2、接着输入数据库所在的主机,端口,用户名,密码,数据库名,点击测试连接,连接成功则点击应用,ok。3、连接成功的话会显示数据库的表和字段结构,如下:4、选中所有的表,右键,点击EasyCodeMybatisCodeHelper,点击generate code5、在弹出窗口中,配置好信息后,勾选需要生成的代码层,点击ok,即可看到代码已经生成了。...原创 2022-01-23 17:35:35 · 2052 阅读 · 0 评论 -
在idea中提交&拉取&克隆
1. idea中提交代码到远程仓库需要具备的条件:有一个自己GitHub/gitee的账号idea编译器本地项目1、创建自己的远程仓库( github 或者 gitee ),名字可以随意,但最好是自己的项目名称2、复制远程项目的地址,这里以https为例3、先在idea中打开自己的项目。4、创建本地仓库:打开idea,点击vcs,点击import into version control,点击create git repository。这时候会弹出来一个选择路径的地方,这是给你的项目选择原创 2022-01-23 18:38:15 · 2452 阅读 · 0 评论 -
Linux命令简版
1. Linux命令简版1.1. Linux简介Linux 是一套免费使用和自由传播的类 Unix 操作系统Linux大致可分为商业公司维护和社区组织维护两种发行版本商业公司维护的发行版本:以Red Hat为代表RHEL(Red Hat Enterprise Linux)(收费)、CentOS(免费)、Fedora Core(桌面版、免费)社区组织维护的发行版本:以Debian为代表Ubuntu等Linux的根目录是/,在它下面有很多目录,其中重点有:(其她目录最好不要随便修改它!!)原创 2022-01-23 17:46:49 · 777 阅读 · 0 评论 -
6_MySQL_子查询和查询语句书写/执行顺序
1. 子查询MySQL 的子查询比较多,但是一般我们很少会写很复杂的子查询,因为这样会使得 SQL 语句很复杂,因此这里只是简单举个例子:select * from 数据表名1 where 字段1 = (select 字段2 from 数据表名2 where 字段3 = xx);如上在 SQL 语句中嵌套 SQL 语句的情况叫子查询。2. 查询语句的书写与执行顺序前面我们学到查询语句可以通过不同的子句来筛选相应的数据,那么当它们出现在一个 SQL 语句中时,应该遵循什么书写顺序呢?应该遵循下面的原创 2022-01-21 23:12:13 · 2195 阅读 · 0 评论 -
SpringBoot/Git/Linux/EasyCode
SpringBootSpringBoot整合MyBatisSpringBoot整合Swagger-UI好看的Swagger UISpringBoot整合RedisSpringBoot整合SpringSecurity和JWT的1SpringBoot整合SpringSecurity和JWT的2Java实现JWT的Token认证机制SpringBoot整合SpringTask定时任务SpringBoot整合ElasticSearchSpringBoot整合MongodbSpringBoot整原创 2022-01-23 18:49:12 · 2465 阅读 · 0 评论 -
4_MySQL_聚合函数和条件查询
1. 聚合函数我们在实际开发中,经常需要这样子的需求:给出某个字段中数据的最大值,最小值,平均值,累加值、记录条数等等。如果没有用聚合函数,我们只能通过查询所有数据,然后再通过 Java 代码来做运算,从而得到上面的值。但是这样做本身就是在做冗余操作。那么我们能否在数据库层面就计算出这些值呢?答案是可以的。我们发现这些值都有一个特征,就是把一个字段的所有数据“浓缩”成一个值,因此伴随着这些值被查询出来的字段也必须是一个值。也就是查询出来后只有一条记录。查询某个字段有多少记录select count(原创 2022-01-21 21:42:52 · 1601 阅读 · 0 评论 -
5_MySQL_别名和多表连接查询
1. 设置别名别名是再查询时对数据表和字段取临时名字的操作,一般作用是为了方便显示时查看以及对比,并没有对数据表的字段名产生影响,只是临时作用结果而已。1、数据表取别名select * from 数据表名 [as] 表的别名 where .... ;2、字段取别名select 字段名1 [as] 别名1 , 字段名2 [as] 别名2 , ... from 数据表名 where ... ;2. 多表连接查询说到关联查询,首先要说表之间的关联关系,主要有三种:多对一、一对一、多对多,通过前原创 2022-01-21 22:51:18 · 2217 阅读 · 0 评论 -
2_MySQL_操作数据库和数据表
1. 操作数据库1、创建一个数据库:create database 数据库名;2、删除一个数据库:drop database 数据库名;3、展示已有的数据库show databases;4、使用某个数据库use 数据库名;5、查看当前正在使用的数据库select database();6、将数据库的字符集修改为 gbk / utf8alter database 数据库名 character set gbk;alter database 数据库名 character set原创 2022-01-20 22:38:30 · 392 阅读 · 0 评论 -
深入解析MySQL索引的原理与优化策略
MySQL索引原创 2023-03-25 20:25:46 · 1544 阅读 · 0 评论 -
1_MySQL_数据类型
1. MySQL 的整数类型TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT数据类型字节数无符号数的取值范围有符号数的取值范围TINYINT10~255-128~127SMALLINT20~65535-32768~32768MEDIUMINT30~16777215-8388608~8388608INT40~4294967295-2147483648~ 2147483648BIGINT80~1844674原创 2022-01-20 17:19:31 · 410 阅读 · 0 评论 -
3_MySQL_增删改查
1. 简介我们在 MySQL 中最常见的操作就是“增删改查”了。那么,如何做好“增删改查”呢?2. 向数据表中插入数据使用insert语句,字段与值的位置要对应,也可以只提供部分字段。INSERT INTO 数据表名(字段名1,字段名2,...) VALUES (值 1,值 2,...);3. 向数据表中更新数据使用update语句,可以通过 where 语句更新部分记录,也可以通过少写字段不全部更新所有字段。UPDATE 数据表名 SET 字段名1=值1[,字段名2 =值2,…] [WHE原创 2022-01-20 22:53:40 · 443 阅读 · 0 评论 -
深入了解MySQL锁机制及应用场景
深入了解MySQL锁机制及应用场景锁的概述锁的分类锁的应用场景数据库事务管理多线程程序开发数据库的备份和恢复对于在线游戏等高并发应用场景锁的具体使用方法锁的应用实例总结锁的概述MySQL锁是操作MySQL数据库时常用的一种机制。MySQL锁可以保证多个用户在同时执行读写操作时,能够互相协同、避免数据出现不一致或者读写冲突等问题。本篇文章将详细介绍MySQL锁的基本知识和具体应用。MySQL锁是多用户数据库系统中的一种典型的并发控制机制,可让多个同时操作完成相应的操作。当多个用户同时访问同一系列表时,很原创 2023-03-26 12:11:23 · 2190 阅读 · 1 评论 -
18_JavaSE_接口和枚举类
1. 接口的定义接口:接口不是类,它是一个抽象类型,是抽象方法的集合,用 interface 声明。接口并不是类,但是有很多与类相同的特征。例如:一个接口中可以有若干个方法;接口文件保存在.java结尾的文件中,文件名为接口名;字节码文件仍保存在 .class文件中。同时接口也有不同于类的特征:1、接口不能被实例化,没有构造方法2、接口会隐式地用abstract修饰,因此不需要自行加abstract关键字。3、所有方法都公共隐式抽象(即隐式用public abstract修饰),因此不能有具体的原创 2022-01-17 18:47:26 · 532 阅读 · 0 评论 -
11_JavaSE_String类
前面说到了基本数据类型和对应的包装类,现在我们来说一个同样很常用的类—— String 类。这个类用于创建和操作字符串。那么我们如何创建一个字符串对象呢?一般是通过两种方式:第一种是通过直接赋值的方式:String str = "hello";第二种是通过创建对象的方式(和其它类方式一样)String str1 = new String("hello");我们知道了如何创建之后,那么怎么连接字符串呢?在 Java 中连接字符串是用到符号+。例如我想要连接Hello和World两个字符串,我原创 2022-01-05 23:32:40 · 405 阅读 · 0 评论 -
4_JavaSE_变量的类型
前面我们讲到变量根据他们的特点可以分为类变量、实例变量、局部变量。那么我们现在就来更细致的讲解。类变量:在类中、方法之外、用 static 关键字修饰的变量。实例变量:在类中、方法体之外、不用 static 关键字修饰的变量。局部变量:在方法之中的变量。那么他们有什么区别呢?首先,是类变量。顾名思义,类变量属于类本身,也叫作静态变量,必须用 static 关键字修饰,并且不管创建了多少个对象,类变量都只有一份,有默认值,可以通过类名.类变量名 直接访问。只需要记住一点,**类变量属于类本身,所以原创 2022-01-02 21:49:05 · 416 阅读 · 1 评论 -
14_JavaSE_时间表示
在 Java 中,关于时间的表示一般是通过创建 Date 类的对象。既然是类,那么创建其对象的方法就很简单啦,我们看到,该类有两个构造方法:一个不提供参数,默认根据系统目前的时间来创建对象;另一个是提供一个 long 类型的参数,其表示从 1970 年 1 月 1 日起的毫秒数。以下为创建的例子。Date date = new Date();Date date = new Date(long along);该类也提供了一些方法为我们使用,常见的方法如下://调用该方法的 Date 对象在参数时间原创 2022-01-07 20:04:48 · 616 阅读 · 0 评论 -
21_JavaSE_HashSet类和HashMap类
1. 简介在这一节,我将 HashSet 和 HashMap 放在一起讲解。因为实际上 HashSet 和 HashMap 的实现原理是相似的,HashSet 底层是基于 HashMap 来实现的。2. HashSet首先来讲 HashSet 的特点:1、不能存储重复元素2、可以存储 null 值3、无序4、不是线程安全的HashSet 的初始化:HashSet<E> hashSet = new HashSet<E>();主要方法:add() 添加一个元素r原创 2022-01-19 15:59:16 · 497 阅读 · 0 评论 -
13_JavaSE_数组
Java 中数组和其它语言类似,数组的类型可以是类或者基本数据类型,并且创建数组时必须指定长度且之后不可改变。创建的语法如下://创建长度为12的int类型数组int[] ints = new int[12];//创建长度为13的Dog类型数组Dog[] dogs = new Dog[13];//创建数组时确定好元素int[] ints1 = {1,2,3,4,5};Dog[] dogs1 = {dog1,dog2,dog3};//dog1,dog2,dog3 是Dog的对象的引用。说完数原创 2022-01-07 17:50:43 · 555 阅读 · 0 评论 -
1_JavaSE_关键字与标识符
0. 下载与配置官方下载JDK链接Windows 10 配置JDK环境变量以上是JDK的下载地址以及配置环境变量的方法,网上的教程有很多,这里就不细致展开啦~1. 关键字与标识符大家在学习英语的时候最头疼的是什么呢?很多人会回答:单词 or 语法。果然,人类的痛苦都是相通的。而我觉得,如果非要二选一,我还是觉得单词会难于语法。因为自然语言在口语交流中不需要做到完全的准确性就可以把意思较完整的传递给对方,所以,单词是很重要的。不过,对于编程语言来说,“单词”和“语法”却同等的重要!因为机器(计算原创 2021-12-30 16:06:05 · 496 阅读 · 3 评论 -
9_JavaSE_Math类
在 Java 中,我们将会学习各种各样的类,在往后的学习中,很多知识点也都是基于某一个类来学习的。在系统的学习 Java 类之前,我们可以先回顾一下前面基本数据类型。还没看的小伙伴可以先看一下哦!3_JavaSE_数据类型简单的回顾一下,基本数据类型包括byte short int long float double boolean char这八种,其中有高达 6 种为数值类型。那么我们是否有存在某些工具类可以用来操作这些数值类型的包装类呢?答案是肯定的,这就是 —— Math 类。也就是说,**我们可原创 2022-01-05 18:33:37 · 535 阅读 · 0 评论 -
2_JavaSE_类及其相关概念
首先,在了解类这个概念的时候,要先知道Java是一门面向对象编程语言。估计大家对这个说法也不陌生。那么到底怎么理解面向对象这个词呢?举个例子,假如我们要实现一个图书管理系统。那么面向过程的思想会让我们只设计增删图书等功能,这在简单的系统里面实现起来很方便。但如果系统加上了登陆等功能,那系统的复用性则会...原创 2022-01-01 23:41:02 · 512 阅读 · 0 评论 -
6_JavaSE_运算符
1. 运算符简介Java 中运算符与大部分主流的高级语言大同小异。所以,如果你有一定的编程基础的话,学起来会觉得相对比较容易。而且,即使你没有编程基础,但有一定的数学基础的话,学起来也会觉得相对轻松。运算符本质是用来操作变量进行运算的一些符号,并且根据功能不同可以分为 算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符和其他运算符这几类。2. 算术运算符算术运算符的作用就类似于我们数学中的运算符号,功能基本也是相对应的。+ 加法(将符号左右两边的操作数相加)- 减法(符号左边的操作数减掉符原创 2022-01-04 18:48:56 · 679 阅读 · 0 评论 -
20_JavaSE_LinkedList类
1. LinkedList 的简介上一节我们说到 ArrayList ,这一节我们来讲 LinkedList ,LinkedList 同样是一种很常见的数据结构,但与 ArrayList 不同,LinkedList 内部是用链表实现的,因此它的存储空间是不连续的。因为 LinkedList 存储空间不连续,删除和增加元素只需要改变前后两个结点的指向即可,不需要像 ArrayList 那样由于存储空间的连续性,需要移动大量的元素;但同样的,由于 ArrayList 内部是用数组存储的,可以使用索引直接操作原创 2022-01-19 15:25:29 · 718 阅读 · 0 评论 -
23_JavaSE_泛型
1. 泛型方法例子:public static <E> void print(E e){}由上可知,泛型方法的作用是可以让参数的类型待定,根据调用者自己的意愿来传入(当然,必须是引用类型)2. 泛型类例子:public class Dog <T> { private T t; public T add(T t){ return t; } public void abb(T t){ return; }}3. 通配符java 中泛型标记符:原创 2022-01-20 03:36:31 · 611 阅读 · 0 评论 -
19_JavaSE_ArrayList类
1. ArrayList 的简介我们前面学到了数组的概念,也知道像数组这种“元素的集合”的概念在程序开发中的重要性,但是我们发现数组有很多自身的弊端。其中,最明显地就是初始化数组时必须指定数组的长度。这个特点有时候很限制我们程序的拓展性能。那么,应该怎么解决呢?最完美的解决方法莫过于将其功能设计成一个类。我们知道,在 Java 中,万物皆可以被设计成类。曾经我们也因为基本数据类型的弊端,将其设计成对应的包装类,那么,我们也可以设计一个类,类的内部维护一个数组,对外提供增删改查等方法。这个思路看起来很不原创 2022-01-19 12:29:04 · 776 阅读 · 0 评论 -
24_JavaSE_多线程
1. 多线程简介首先,什么是多线程呢?我先举个现实生活中的例子给大家理解一下。假如现在有一个工厂,一开始的时候我只雇佣了一个员工,那么这个工厂的工作只能由这个单一的员工来操作,那么这个员工就只能是一件一件事情依次的做,而不能同时做两件事情(毕竟人也做不到一心二意嘛);而如果我要实现该工厂同一时间有多件事情正在被做,那么我就需要多雇佣一些员工。因此,程序也是如此,单一流程,我们称为单线程;多个流程同时进行,我们称为多线程。那么按照这个标准,我们前面的章节讲到的内容就都属于单线程的范围了。线程和进程的区别?原创 2022-01-20 14:01:02 · 544 阅读 · 0 评论 -
3_JavaSE_数据类型
1. 基本数据类型我们都说 Java 是面向对象的语言,理论上Java中的数据类型应该都是类类型,但事实并非如此。Java提供了八种基本类型,其中包括六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。基本数据类型并不是类类型,因此 Java 并不是纯面向对象的语言,这么做其实是为了提高效率,当然为了弥补基本数据类型没有对象的特征这个缺点,Java 也设计出了包装类型。可能有点复杂,没事,继续往下看。首先是介绍 Java 的八种基本类型。byte:占 8 位内存有符号(表示正数原创 2022-01-02 18:02:40 · 511 阅读 · 0 评论 -
12_JavaSE_StringBuffer和StringBuilder类
前面讲到 String 对象的值是不能被修改的,当我们为某个对象赋值之后,他的值就不能改变。那么如果我们需要改变呢?我们就需要使用到 StringBuffer 和 StringBuilder 类。StringBuffer 和 StringBuilder 类的对象存储的字符串是支持被修改的,但两者也有所区别,StringBuffer 的方法是线程安全的;而 StringBuilder 的方法不是线程安全的。 因此 StringBuilder 的速度较快,在没有线程安全隐患下建议使用 StringBuilde原创 2022-01-07 17:01:35 · 939 阅读 · 0 评论 -
17_JavaSE_抽象类和封装
1. 抽象类抽象类:不能用于描绘对象的类(不能用于实例化对象)的类,除了不能实例化对象之外,与普通类的功能相似,有成员变量、成员方法和构造方法等。定义抽象类是用到了 abstract 关键字。public abstract class 抽象类类名{}抽象类的特征:1、抽象类不能被实例化。2、抽象类不一定包含抽象方法,但抽象方法所属的类必定是抽象类。3、抽象类中的抽象方法只负责声明,无方法体。4、构造方法、类方法不能声明为抽象方法。5、抽象类的子类必须给出抽象类的抽象方法的具体实现,原创 2022-01-17 17:24:37 · 606 阅读 · 0 评论 -
16_JavaSE_继承与多态
1. 继承继承是指子类继承父类的特征和行为,使得子类实例具有父类的实例域和方法,使得子类具有父类相同的行为。这样的定义看起来好像有点不好理解。没事,我们可以从一个例子入手去理解。想象一下,假设我们的业务中需要编写一个“猫”类,这个时候我们会给这个类提供一些属性和方法,例如:学名、品种、吃、叫 等等,这样子看起来非常合适,但如果我们的系统后面又需要添加另一个种动物,例如“狗”类,你会发现我们又同样需要编写类似的属性和方法(只是方法的实现过程可能不同而已),久而久之,你会发现,动物的种类实在是太多了,但是他原创 2022-01-17 16:43:05 · 457 阅读 · 0 评论 -
5_JavaSE_修饰符
1. 修饰符的分类在 Java 的关键字中,有一大部分关键字是用来“修饰”的,这类关键字叫做修饰符。修饰符分为访问修饰符和非访问修饰符2. 访问修饰符访问修饰符主要是用来修饰类、变量和方法,从而控制它们能被访问的范围的关键字。主要分为四个:default 、private 、public、protected。private :私有。修饰变量、方法表示其只在这个类中可见。不能修饰类、接口。protected:受保护。修饰变量、方法表示对同一个包内的子类可见。不能修饰类、接口。default:(等于原创 2022-01-03 12:05:32 · 459 阅读 · 0 评论 -
15_JavaSE_异常处理
当我们设计的代码符合语法但不符合逻辑(例如访问的数组元素时索引越界等)或外界原因导致代码发生无法预料的情况发生,我们把这种情况称为异常(Exception)。在 Java 中,Throwable 类有两个子类,一个是 Exception 类(定义的是我们上面所指的异常),一个是 Error类(指的是运行时环境发生的错误,例如:JVM 内存溢出等等)。在此基础上,Exception 类也有两个子类。一个是 IOException(输入输出异常),一个是 RuntimeException(运行时异常)。因此,原创 2022-01-07 22:01:02 · 612 阅读 · 0 评论 -
8_JavaSE_条件语句
1.条件语句简介条件语句在编程中的运用实在是太广泛了。Java 的条件语句主要分为两种:if 类型和 switch 类型。2. if 类型1、if 语句if(布尔表达式){ //语句}如果布尔表达式结果为 true 则执行语句。2、if…else语句if(布尔表达式){ //语句1}else{ //语句2}如果布尔表达式结果为 true 则执行语句1;否则执行语句2。3、if…else if…else 语句if(布尔表达式1){ //语句1}else原创 2022-01-05 00:02:29 · 762 阅读 · 0 评论