![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 57
java基础知识
无敌洞洞头
这个作者很懒,什么都没留下…
展开
-
JAVA Collections案例:模拟斗地主
案例:模拟斗地主需求:通过程序实现斗地主过程中的洗牌、发牌和看牌。分析:(1)创建一个牌盘,即定义一个集合对象,用ArrayList集合实现;(2)在牌盘里装牌;(3)洗牌:即把牌打散,用Collections的shuffle()方法实现。(4)发牌:即遍历集合,给三个玩家发牌;(5)看牌:即三个玩家分别遍历自己的牌。完整代码:package com.xuexi;import com.sun.xml.internal.ws.policy.privateutil.PolicyUtil.原创 2021-04-18 13:09:55 · 358 阅读 · 1 评论 -
JAVA Collections案例(ArrayList存储学生对象并排序)
案例:ArrayList存储学生对象并排序需求:ArrayList存储学生对象,使用Collections对ArrayList进行排序。要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序。分析:(1)定义学生类;(2)创建ArrayList集合对象;(3)创建学生对象;(4)把学生添加到集合;(5)使用Collections对ArrayList集合进行排序;(6)遍历集合。完整代码:package com.xuexi;public class Student { .原创 2021-04-18 13:09:45 · 374 阅读 · 0 评论 -
JAVA HashMap案例(HashMap集合存储学生对象并遍历)
案例:HashMap集合存储学生对象并遍历需求:创建一个HashMap集合,键是学号(String),值是学生对象(Student)。存储三个键值对元素,并遍历。分析:(1)定义学生类;(2)创建HashMap集合对象;(3)创建学生对象;(4)把学生添加到集合;(5)遍历集合(键找值、键值对对象找键和值)完整代码:package com.xuexi;public class Student { private String name; private int ag.原创 2021-04-18 13:09:35 · 12446 阅读 · 0 评论 -
JAVA Set案例(HashSet集合存储学生对象并遍历)
案例:HashSet集合存储学生对象并遍历需求:创建一个存储学生对象的集合,存储多个学生对象,使用程序实现在控制台遍历该集合。要求:学生对象的成员变量值相同,我们就认为是同一个对象。分析:(1)定义学生类(2)创建HashSet集合对象(3)创建学上对象(4)把学生添加到集合(5)遍历集合(增强for)(6)在学生类中重写两个方法完整代码:package com.xuexi;import java.util.HashSet;public class Demo4 { .原创 2021-04-18 13:09:23 · 5234 阅读 · 0 评论 -
JAVA List案例(List集合存储学生对象并遍历、List集合存储学生对象用三种方式遍历)
案例:List集合存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合。分析:(1)定义学生类(2)创建List集合对象(3)创建学上对象(4)把学生添加到集合(5)遍历集合(迭代器方式、for循环方式)完整代码:package com.xuexi;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Demo3 { public .原创 2021-04-18 13:09:11 · 8397 阅读 · 0 评论 -
JAVA Collection案例(Collection集合存储学生对象并遍历)
案例:Collection集合存储学生对象并遍历需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合。分析:(1)定义学生类(2)创建Collection集合对象(3)创建学生对象(4)把学生添加到集合(5)遍历集合(迭代器方式)完整代码:package com.xuexi;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;publi.原创 2021-04-18 13:08:57 · 522 阅读 · 0 评论 -
JAVA——集合进阶(Collection、List、Set、泛型、Map、Collections)
Collection1.1 集合知识回顾集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。1.2 集合类体系结构1.3 Collection集合概述和使用Collection集合概述(1)是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素(2)JDK不提供此接口的任何直接实现,它提供更具体的子接口(Set/List)实现。创建Collection集合的对象(1)多态的方式(2)具体的实现类ArrayListpackage c.原创 2021-04-18 13:08:42 · 197 阅读 · 0 评论 -
JAVA——异常
异常1.1 异常概述异常:就是程序出现了不正常的情况。异常体系:Error:严重问题,不需要处理。Exception:称为异常类,它表示程序本身可以处理的问题;RuntimeException:在编译期是不检查的,出现问题后,需要回来修改代码;非RuntimeException:在编译期就必须处理的,否则程序不能通过编译,不能正常运行。package ExceptionDemo;/* 异常 */public class Demo1 { public static.原创 2021-04-08 18:10:23 · 194 阅读 · 0 评论 -
JAVA——常用API
Math1.1 Math类概述Math包含执行基本数字运算的方法。没有构造方法,使用类中的成员:看类的成员是否都是静态的,如果是,通过类名就可以直接调用。1.2 Math类的常用方法package math1;public class math01 { public static void main(String[] args) { //public static int abs(int a) 返回参数的绝对值 System.out.println.原创 2021-03-26 19:07:19 · 76 阅读 · 0 评论 -
JAVA 日期类案例(日期工具类、二月天)
案例:日期工具类需求:定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式的日期,然后定义一个测试类(DateDemo),测试日期工具类的方法。分析:(1)定义日期工具类(DateUtils)(2)定义一个方法dateToString,用于把日期转化为指定格式的字符串返回值类型:String参数:Date date,String format(3)定义一个方法stringToDate,用于字符串解析为指定格式的日期返回值类型:Date.原创 2021-03-26 19:07:08 · 1442 阅读 · 0 评论 -
JAVA基本类型包装类案例(字符串中数据排序)
案例:字符串中数据排序需求: 有一个字符串:“91 27 46 38 50”,请编写程序实现最终输出结果是:“27 38 46 50 91”分析:(1)定义一个字符串(2)把字符串的数字数据存储到一个int类型的数组中:① 得到字符串中每一个数字数据public String[] split(String regex)② 定义一个int数组,把String[]数组中每一个元素存储到int数组中public static int parselnt(String s)(3)对int数组进行排.原创 2021-03-26 18:04:43 · 192 阅读 · 0 评论 -
JAVA——内部类
内部类1.1 内部类概述内部类:就是在一个类中定义一个类。例:在一个类A的内部定义一个类B,类B就被成为内部类。内部类的定义格式://格式:public class 类名{ 修饰符 class 类名{ }}//范例:public class Outer{ public class Iuter{ }}内部类的访问特点:(1)内部类可以直接访问外部类的成员,包括私有;(2)外部类要访问内部类的成员,必须创建对象。...原创 2021-03-24 16:27:35 · 74 阅读 · 0 评论 -
JAVA接口案例(猫和狗、运动员和教练)
案例:猫和狗需求:对猫和狗进行训练,他们就可以跳高了,这里加入了跳高功能,请采用抽象类和接口来实现猫和狗的案例,并在测试类中进行测试。分析:(1)定义接口(Jumpping)成员方法:跳高();(2)定义动物类(Animal)成员变量:姓名、年龄;构造方法:无参、带参成员方法:get/set方法,吃饭();(3)定义猫类(Cat),继承动物类构造方法:无参、带参成员方法:重写吃饭(……),重写跳高(……)(4)定义狗类(Dog),继承动物类构造方法:无参、带参成员方法:重写吃饭.原创 2021-03-23 19:54:10 · 1777 阅读 · 0 评论 -
JAVA——接口
接口1.1 接口概述接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。Java中的接口更多的体现在对行为的抽象。1.2 接口的特点(1)接口用关键字interface修饰:public interface 接口名()(2)类实现接口用implements表示:public class 类名 implements接口名()(3)接口不能实例化接口实例化:参照多态的方式,通过实现类对象实例化,叫做接口多态。多态的形式:具体类多态、抽象类多态、接口多态多态的前提:有继承.原创 2021-03-23 19:54:00 · 59 阅读 · 0 评论 -
JAVA——形参和返回值
形参和返回值1.1 类名作为形参和返回值方法的形参是类名,其实需要的是该类的对象;方法的返回值是类名,其实返回的是该类的对象。1.2 抽象类名作为形参和返回值方法的形参是抽象类名,其实需要的是该抽象类的子类对象;方法的返回值是抽象类名,其实返回的是该抽象类的子类对象。1.3 接口名作为形参和返回值方法的形参是接口名,其实需要的是该接口的实现类对象;方法的返回值是接口名,其实返回的是该接口的实现类对象。...原创 2021-03-23 19:53:45 · 178 阅读 · 0 评论 -
JAVA抽象类案例(猫和狗)
案例:猫和狗需求:请采用抽象类的思想实现猫和狗的案例,并在测试类中进行测试。分析:(1)定义动物类(Animal)成员变量:姓名、年龄;构造方法:无参、带参成员方法:get/set方法,吃饭();(2)定义猫类(Cat),继承动物类构造方法:无参、带参成员方法:重写吃饭(……)(3)定义狗类(Dog),继承动物类构造方法:无参、带参成员方法:重写吃饭(……)(4)定义测试类(AnimalDemo),写代码测试完整代码:package abstext;public abs.原创 2021-03-23 17:47:31 · 3806 阅读 · 0 评论 -
JAVA——抽象类
抽象类1.1 抽象类概述在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。1.2 抽象类的特点(1)抽象类和抽象方法必须使用abstract关键字修饰;public abstract class 类名();public abstract void eat();(2)抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类;(3)抽象类不能实例化;参照多态的方式,通过子类对象实例化,为抽象类多态。(4)抽象类的子类:要么重写抽象类中的所有.原创 2021-03-23 17:06:17 · 50 阅读 · 0 评论 -
JAVA多态案例(猫和狗)
案例:猫和狗需求:请采用多态的思想实现猫和狗的案例,并在测试类中进行测试。分析:(1)定义动物类(Animal)成员变量:姓名、年龄;构造方法:无参、带参成员方法:get/set方法,吃饭()(2)定义猫类(Cat),继承动物类构造方法:无参、带参成员方法:重写吃饭()(3)定义狗类(Dog),继承动物类构造方法:无参、带参成员方法:重写吃饭()(4)定义测试类(AnimalDemo),写代码测试完整代码:package duotai;public class anim.原创 2021-03-19 21:26:11 · 5207 阅读 · 0 评论 -
JAVA——修饰符
包1.1 包的概述和使用其实就是文件夹作用:对类进行分类管理包的定义格式:格式:package 包名; (多级包用.分开)范例:package com.xuexi;带包的Java类编译和执行:(1)手动建包① 按照以前的格式编译Java文件(javac.HelloWorld.java)② 手动创建包(在E盘建立文件夹com,然后再com下建立文件夹xuexi)③ 把class文件放到包的最里面(把HelloWorld.class文件放到com下的xuexi这个五文件夹下)④ 带.原创 2021-03-19 20:13:50 · 70 阅读 · 0 评论 -
JAVA继承案例(老师和学生、猫和狗、)
案例:老师和学生需求:定义老师类和学生类,然后写代码进行测试;最后找到老师类和学生类中的共性内容,抽取出一个父类,用继承的方式改写代码,并进行测试。分析:(1)定义老师类(姓名、年龄、教书())(2)定义学生类(姓名、年龄、学习())(3)定义测试类,写代码测试(4)共性抽取父类,定义人类(姓名、年龄)(5)定义老师类,继承人类,并给出自己特有方法:教书();(6)定义学生类,继承人类,并给出自己特有方法:学习();(7)定义测试类,写代码测试。完整代码:第一部分:package.原创 2021-03-19 18:41:46 · 17375 阅读 · 0 评论 -
JAVA——继承
继承1.1 继承概述继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。继承的格式:格式:public class 子类名 extends 父类名()范例:public class Zi extends Fu()Fu:父类,也为基类、超类;Zi:子类,也为派生类。继承中子类的特点:(1)子类可以有父类的内容;(2)子类中有自己特有的内容package com.extendss;public class Fu { pu.原创 2021-03-19 18:41:35 · 54 阅读 · 0 评论 -
JAVA——学生管理系统
学生管理系统1.1 项目演示:1.2 学生管理系统实现思路(1)定义学生类;(2)主界面的代码编写;(3)添加学生的代码编写;(4)查看学生的代码编写;(5)删除学生的代码编写;(6)修改学生的代码编写。1.3 定义学生类学生类:Student成员变量:学号:sid姓名:name年龄:age居住地:address构造方法:无参构造带四个参数的构造成员方法:每个成员变量对应给出get/set方法(快捷键:Alt+insert:根据自己的需要进行选择)pack.原创 2021-03-18 16:56:14 · 2253 阅读 · 1 评论 -
JAVA ArrayList案例(存储字符串并遍历、存储学生对象并遍历)
案例:存储字符串并遍历需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合。分析:(1)创建集合对象;(2)往集合中添加字符串对象;(3)遍历集合,首先要能够获取到集合中的每一个元素,通过get(int index)实现;(4)遍历集合,其次要能够获取到集合的长度,通过size()方法实现;(5)遍历集合的通用格式:for(int i=0; i<集合对象.size(); i++){ 集合对象.get(i)就是指定索引处的元素}完整代码:.原创 2021-03-17 18:21:05 · 869 阅读 · 0 评论 -
JAVA——集合基础
集合基础1.1 集合概述集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。ArrayList:可调整大小的数组实现;是一种特殊的数据类型,泛型。使用:在出现E的地方使用引用数据类型替换即可。如:ArrayList,ArrayList1.2 ArrayList构造方法和添加方法示例代码:package ArrayList;import java.util.ArrayList;public class ArrayList1 { public s.原创 2021-03-17 18:20:53 · 61 阅读 · 0 评论 -
JAVA StringBuilder案例(拼接字符串、字符串反转)
案例:拼接字符串需求:定义一个方法,把int中数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。如:数组为int[] arr = {1,2,3};执行方法后输出结果为:{1,2,3}分析:(1)定义一个int类型的数据,用静态初始化完成数组元素的初始化;(2)定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回,返回值类型String,参数列表int[] arr;(3)在方法中用StringBuilder按照要求进行拼接,并把结果转成String.原创 2021-03-17 15:24:07 · 945 阅读 · 0 评论 -
JAVAString案例(用户登录、遍历字符串、统计字符次数、拼接字符串、字符串反转)
案例:用户登录需求:已知用户名和密码,请用程序实现模拟用户登录,总共有三次机会,登录之后,给出相应的提示分析:(1)已知用户名和密码,定义两个字符串表示即可(2)键盘录入要登陆的用户名和密码,用Scanner实现(3)拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比较,用equals()实现(4)用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环完整代码:package String;import .原创 2021-03-17 15:23:54 · 302 阅读 · 0 评论 -
JAVA——字符串
API1.1 API概述API(Application Programming Interface):应用程序编程接口Java API:JDK中提供的各种功能的Java类注意:调用方法的时候,如果方法有明确的返回值,用变量接收,可以手动完成,也可使用快捷键(Ctrl+Alt+V)String2.1 String概述String类在Java.lang包下,使用的时候不需要导包;String类代表字符串,Java程序中的所有字符串文字都被实现为此类的实例,即Java程序中所有的双引号字符..原创 2021-03-17 15:23:41 · 250 阅读 · 0 评论 -
JAVA类和对象案例(学生)
案例:学生需求:首先定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用。分析:成员变量:姓名,年龄成员方法:学习,做作业(1)定义一个学生类(2)定义学生测试类(3)在学生测试类中通过对象完成成员变量和成员方法的使用完整代码:package com.xuexi1;public class Student { String name; int age; public void study(){ System原创 2021-03-12 15:43:58 · 773 阅读 · 0 评论 -
JAVA——面向对象基础
类和对象1.1 概念对象:能够看得到摸得着的真实存在的实体。类:对现实生活中一类具有共同属性和行为的事物的抽象。类的特点:(1)类是对象的数据变形(2)类是具有相同属性和行为的一组对象的集合属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。行为:对象能够执行的操作。类是对象的抽象,对象是类的实体。1.2 类的定义类的重要性:是Java程序的基本组成单位类:对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为。类的组成:属性和行为属性:在类中通过.原创 2021-03-12 15:43:44 · 51 阅读 · 0 评论 -
JAVA基础知识练习(减肥计划、逢七过、不死神兔、百钱百鸡、数组元素求和、数组内容相同、查找、反转、评委打分)
案例:减肥计划1需求:输入星期数,显示今天的减肥活动周一:跑步周二:游泳周三:慢走周四:动感单车周五:拳击周六:爬山:周日:好好吃一顿分析:(1)键盘录入一个星期数,用一个变量来接收(2)对星期数进行判断,这里用if语句实现(3)在对应的语句控制中输出对应的减肥活动完整代码:import java.util.Scanner;public class Test1 { public static void main(String[] args) { .原创 2021-03-11 18:28:10 · 340 阅读 · 0 评论 -
JAVA——Debug
Debug1.1 Debug概述Debug:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。1.2 Debug操作流程Debug调试:又称断点调试,断点其实是一个标记,告诉我们从哪里开始查看操作流程:(1)如何加断点(2)如何运行加了断点的程序(3)看哪里(4)点哪里(5)如何删除断点1.2.1 如何加断点选择要设置断点的代码行,在行号的区域后面单机鼠标左键即可1.2.2 如何运行加了断点的程序在代码区域右键Debug执行.原创 2021-03-11 10:21:14 · 1103 阅读 · 1 评论 -
方法案例(较大数、带参数、带返回值、方法重载、数组遍历、)需求、分析、代码
案例:求较大数需求:设计一个方法用于打印两个数字中的较大数思路:(1)定义一个方法,用于打印两个数中的较大数,如getMax()(2)方法中定义两个变量,用于保存两个数字(3)使用分支语句分两种情况对两个数字的大小关系进行处理(4)在main()方法中调用定义好的方法完整代码:public class MethodDemo { public static void main(String[] args) { getMax(); } public原创 2021-03-10 21:51:44 · 371 阅读 · 0 评论 -
JAVA——方法
1 方法概述1.1 什么是方法方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意:(1)方法必须先创建才可以使用,该过程称为方法定义(2)方法创建后并不是直接运行的,需要动手使用后才执行,该过程称为方法调用2 方法的定义和调用3 带参数方法的定义和调用4 带返回值方法的定义和调用5 方法的注意事项6 方法重载7 方法的参数传递...原创 2021-03-10 21:51:30 · 102 阅读 · 0 评论 -
JAVA——数组
1 数组定义格式1.1 数组概述一次性声明大量的用于存储数据的变量要存储的数据通常都是同类型数据1.2 什么是数组数组(array)是一种用于存储多个相同类型数据的存储模型。1.3 数组的定义格式格式一:数据类型[] 变量名范例:int[] arr定义了一个int类型的数组,数组名是arr格式二:数据类型 变量名[]范例:int arr[]定义了一个int类型的变量,变量名是arr数组2 数组初始化之动态初始化2.1 数组初始化概述Java中的数组必须先初始化,然后才能使用所原创 2021-03-09 13:19:54 · 307 阅读 · 0 评论 -
IDEA
1 IDEA概述和安装1.1 IDEA概述IDEA全程IntelliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。集成环境:把代码编写、编译、执行、调试等多种功能综合到一起的开发工具。1.2 IDEA安装(网上巨多)2 IDEA中HellowWorld2.1基本步骤(1)创建一个空项目(JavaSE_Code)(2)创建一个新模块(idea_test)(3)在idea_test模块下的src下创建一个包(com.xuexi)(4)在c原创 2021-03-08 16:02:08 · 1976 阅读 · 0 评论 -
JAVA——分支语句
流程控制流程控制语句分类顺序结构分支结构(if,switch)循环结构(for,while,do…while)1.1 顺序结构顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。顺序结构的执行流程图:分支语句——if语句2.1 if语句格式1格式:if(关系表达式){ 语句体;}执行流程:(1)首先计算关系表达式的值(2)如果关系表达式的值为true就执行语句体(3)如果关系表达式的值为fals原创 2021-03-08 14:31:58 · 245 阅读 · 0 评论 -
Random案例(猜数字)需求、分析、代码
案例:猜数字需求:程序会自动生成一个1~100之间的数字,使用程序实现猜出这个数字是多少?当猜错的时候根据不同情况给出相应的提示:如果猜的数字比真实数字大,提示你猜的数据大了;如果猜的数字比真实数字小,提示你猜的数据小了;如果猜的数字与真实数字相等,提示恭喜你猜对了分析:(1)要完成猜数字的游戏,首先要有一个要猜的数字,使用随机数生成该数字,范围1到100(2)因为无法预知几次能够猜中,因此猜数字这个操作应该是反复进行的,需要使用循环,而while循环通常用于描述未知循环次数的循环(3)使原创 2021-03-08 14:31:38 · 484 阅读 · 0 评论 -
while循环语句案例(珠穆朗玛峰)需求、分析、代码
案例:珠穆朗玛峰需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,请问,我折叠多少次,可以折叠成珠穆朗玛峰的高度?分析:(1)因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环(2)循环的执行过程中每次纸张折叠,纸张的厚度需要加倍,因此需要事先定义纸张厚度,在循环中使厚度加倍(3)折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度(4)设置一个计数器,在循环中执原创 2021-03-07 10:16:38 · 4168 阅读 · 1 评论 -
for循环语句案例(输出数据、求和、求偶数和、水仙花、统计)需求、分析、代码
案例:输出数据需求:在控制台输出1 ~ 5和5 ~ 1的数据分析:(1)反复进行输出的动作,使用循环结构(2)从1(5)开始到5(1)结束,设置初始化从1(5)开始(3)从1(5)开始到5(1)结束,设置判断条件为没有到5(1)的时候继续执行,执行到超过5(小于1)程序结束(4)从1(5)到5(1),每次增加(减少)1,设置条件控制每次+1(-1)(5)将反复进行的事情写入循环结构内部,打印对应数据完整代码:public class forDemo{ public static void原创 2021-03-03 20:44:42 · 1246 阅读 · 0 评论 -
if语句案例(奇偶数、考试奖励)案例、分析、代码
案例:奇偶数需求:任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。分析:(1)为了体现任意给出一个整数,采用键盘录入一个数据(导包、创建对象、录入数据)(2)判断整数是偶数还是奇数需要分两种情况进行判断,使用if…else结构(3)判断是否偶数需要使用取余运算符实现该功能number%2 == 0(4)根据判定情况,在控制台输出对应的内容完整代码:import java.util.Scanner;public class ifDemo { p原创 2021-02-28 12:50:52 · 1211 阅读 · 0 评论