搞笑的,肯定搞笑的

1 篇文章 0 订阅

其实我真的不是来搞笑的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!学习Java快一年了,学java之前学过C。学完java,自认为已经初步具备了面向对象的思想。根据我自己的认识。面向对象和面向过程其实在编写程序时,是不那么严格区分的,重要的是你该如何运用这种编程方式。举一反三,许多编程语言思想都是相同的,只不是语法少有差别罢了。我在大一下学期寒假自学了Android开发,本来想将来搞android的,不过把android,了解过之后,并且都已自学完。(好像关于数据库和网络方面还是一窍不通诶,惭愧~~)。其实一直想接触数据库方面,但是一直没时间,也不知道该从哪一门数据库入手,就一直耽搁下来了,导致我现在做程序,牵扯到数据库就一头雾水啊!!!!其实说了这摸多,也不知道自己想说啥,感觉跑题啦哈!
前两天以为学长找到我,说是一个公司要和我们合作搞iOS开发,学长知道我在学android,想法交给我来做。所以呢,我就犹豫要不要放弃android转ios呢,毕竟还android自学了这摸长时间,也经理了很多苦头,收获了很多自学的能力(记得当初为了安装一个android开发环境,就整正不吃不喝弄了两天,夸张了哈大笑,,二切弄好后又是各种问题百出,又是百度谷歌,又是论坛救助的,可是忙坏了宝宝啊哭,期间也好几次想过放弃,但往往是吃了一顿饭或者是睡了一觉,有开开心心的和android干起来),现在要我转向ios还是有点不舍啊,不是因为别的,仅仅是因为不想让自己的努力白费。
现在这个阶段,也不知道未来那个会更火。一直纠结了很长时间。其实归根结底还是因为钱!!钱!!钱!!!啊,没错就是钱,我努力学习技术,有两个原因,意识出于对技术本身的痴迷,二是因为想早早在大学期间就能找个公司做项目,整点生活费的啥了,周末带个女朋友出去爬爬山,旅旅游,吃吃饭啦。好吧,幻想就此打住,现实告诉我,我现在还是一只大学汪汪。大哭大哭大哭
还是说回ios的事吧,和我合作的的那个公司还挺仗义的,愿意提供两台Mac给我使用,前提是给他们宣传自己的公司,好吧,天下哪有免费的午餐,我是一个买不起mac的穷学生,我承认。但是,现在机会来了,别人给我提供设备,我们属于相互利用哈,(这里说好像不合适呀!),总之这都不重要。重要的是我终于些这写着最初了我最终的决定。我要开始ios学习之路啦。但是我不知道是用Objective-C呢还是Swift呢,真是纠结。但是我手里的学习资料都是用O-c的,据我了解这个o-c的家伙还是面向对象的。二swift就不是很了解了。也不知道为甚末,一听到面向都想我就纳格激动啊,(可能是因为我就是个单身狗吧 !哭),毕竟我也是学过java的男银啊。面向对象对我还不是小意思!
我以为不知道我今天到底想写些什么,总之想到哪就写到哪了。好了好了,我也不再这扯淡了了,时间不早了,系系睡吧!明天早上还有课呢。(才想起来作业还没写呢大哭)。
晚微笑安 world!
以下附上我的java学习总结:
哈哈
java基础知识总结:
软件一班
整理:李增光
1、 java的版本: Java SE Java EE Java ME
2、 java最大特性;跨平台
Java语言有下面一些特点:简单、面向对象、分布式、解释执行、健壮、安全、体系结构中立、可移植、高性能、多线程以及动态性。
3、 Java源代码文件编译后生成的字节码文件,其扩展名是 .class

4、 java命名:java的变量名可以为:英文字母,下划线和英文$;不可是其他字符

5、 自动类型转换与强制类型转换。在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换j
java中的自动类型转换条件:1. 目标类型能与源类型兼容,如double 型兼容 int 型,但是 char 型不能兼容 int 型
2. 目标类型大于源类型,如double 类型长度为 8 字节, int 类型为 4 字节,因此 double 类型的变量里直接可以存放 int 类型的数据,但反过来就不可以了

6、 final 常量名 = 值,在程序运行工程中不允许改变。常量名一般使用大写字符。

7、 注释 //单行注释 /* */多行注释

8、 运算符优先级:

9、 java是面向对象的,不能直接调用函数,必须先建立对象,再用对象进行调用

10、 Java中方法的重载, 同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。

11、 类是模子,确定对象将会拥有的特征(属性)和行为(方法)。类的特点:类是对象的类型,具有相同属性和方法的一组对象的集合。

12、 对象的属性:对象具有的各种特征,每个对象的每个属性都拥有特定值。

13、 类和对象的关系:类是抽象的概念,仅仅是模板,对象是一个能够看得到、摸得着的具体实体
——->这也就是一个类要进行实例化(创建对象)的原因
14、 所有java程序都以类class为组织单元,确定对象将会拥有的特征(属性)和行为。类由属性和方法组成。

15、 定义一个类的步骤。a.定义类名 b.编写类的属性 c.编写类的方法.

16、 Java对象:a、创建对象 类名 对象名 = new 类名(); b、使用对象 引用对象的属性——对象名.属性,引用对象的方法 ——对象名.方法名()。

17、 成员变量:在类中定义,用来描述对象将要有什么。
18、 局部变量:在类的方法中定义,在方法中临时保存数据。
19、 成员变量不用赋初值,默认为0; 但局部变量要初始化. 成员变量和局部变量可以相同,但是局部变量具有优先级
20、 java是面向对象的程序设计语言,
21、 java面向对象的三大特性: 封装性 继承性 多态性

Java2
1、 java中的构造方法。使用 new+构造方法() 创建一个新的对象。构造方法是定义在Java类中的一个用来初始化对象的方法构造。 构造方法与类同名且没有返回值。如果没有指定一个无参构造方法,系统会自动指定一个无参构造方法。创建对象的时候执行构造方法。有参构造方法的目的只有一个,就是初始化对象成员变量的值,因此可以传参数
2、 Java 中的 static 使用之静态变量。Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问(不推荐,浪费内存)。但是一般都是用类名直接访问
静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收。
3、 Java 中的 static 使用之静态方法。与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。
a、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
b、 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
c、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,
d、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
e、
4、 Java 中的 static 使用之静态初始化块
在类的声明中,可以包含多个初始化块,当创建类的实例时(就是创建对象时),就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

5、 封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2.好处:a.只能通过规定的方法访问数据 b.隐藏类的实例细节,方便修改和实现。
3.封装的实现步骤:修改属性的可见性(设为private),创建getter/setter方法(用于属性的读写),在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)。

6、 包的作用:管理Java文件,解决同名文件冲突。 定义包:package 包名 注:必须放在Java源程序的第一行,包名间用“.”号隔开。
7、 系统中的包:1.包的作用:管理Java文件,解决同名文件冲突。
2.定义包:package 包名
注:必须放在Java源程序的第一行
包名间可以使用“.”隔开
eg:com.imooc.MyClass
3.系统中的包:
java.(功能).(类)
java.lang(类) 包含Java语言基础的类
java.util(类) 包含Java语言中各种工具类
java.io(类) 包含输入,输出相关功能的类

8、 包的使用 import java.util*;包的全名 小写。(导包)
9、 private protected public;

10、 this 关键字 代表当前对象 this.属性 this.方法 当局部变量和成员变量同名时,用 this 区别

11、 Java 中的内部类。内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。成员内部类,静态内部类,方法内部类,匿名内部类。
a. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
b. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
c. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便 内部类可分为以下几种:
Ÿ 成员内部类
Ÿ 静态内部类
Ÿ 方法内部类
Ÿ 匿名内部类

12、 Java 中的成员内部类。
a、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
b、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a
c、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类对象名 = 外部类对象.new 内部类( );

d、 编译上面的程序后,会发现产生了两个 .class 文件
13、 Java 中的静态内部类。
静态内部类是 static 修饰的内部类,这种内部类的特点是:
a、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
b、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
c、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类对象名= new 内部类();

14、 Java 中的方法内部类。
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static 修饰符。
15、 继承(单继承):is-a 语法规则:class 子类 extends 父类{};
子类继承父类所有属性和方法(private修饰的除外)
继承是单继承,只能有一个父类;

16、 方法的重写.
什么是方法的重写:

如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法
。调用方法时会优先调用子类的方法。
返回值类型、方法名、参数类型及个数 都要与父类继承的方法相同。
17、 继承的初始化顺序:先初始化父类再初始化子类;先执行初始化对象中属性,再执行构造方法中的初始化。
18、 final关键字做标识有“最终的”含义,final可以修饰类、方法、属性和变量。
Final修饰属性的时候必须初始化或在构造方法中赋值。修饰变量时只能赋值一次。修饰类时不能被继承。修饰方法时,不能被重写。
19、 super关键字:在对象的内部使用,可以代表父类对象,访问父类的属性,或访问父类的方法。——–>与this对比记忆
20、 super的应用,子类的构造的过程当中必须调用其父类的构造方法。
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。
21、 object类。
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识集成另一个类,那么这个类默认继承Object类。
Object类中的方法,适合所有子类

a. toString()方法 在Object类里面定义toString()方法的时候返回的对象的哈希code码 (对象地址字符串)。 可以通过重写toString()方法表示出对象的属性。(重写toString()方法 source—>generatetostring())
b. equals()方法 比较的是对象的引用是否指向同一块内存地址。 一般情况下比较两个对象时比较他的值是否一致,所以要重写。(重写equals()方法 source—>generatehashcpde and equals())
22、 多态——对象的多种形态
继承是多态的实现基础
不能使用子类的引用指向父类的对象,
能使用父类的引用指向子类的对象;

a. 引用多态 父类的引用可以指向本类的对象 父类的引用类指向子类的对象。
b. 方法多态创建本类对象时,调用的方法为本类方法。创建子类对象时,调用的方法为子类重写的方法或者继承的方法。
c. Animal dog = new Dog();这就是父类的引用(Animal dog)指向子类的对象(new Dog();)。对的 但这个引用不能调用Dog独有的方法。
Animal:父类 Dog:子类
23、 引用类型转换。向上、向下。
instanceof 避免类型转换的安全性问题 判断一个引用是否是某个类型或者某个类型的子类型。

24、 抽象类:抽象类:
1. 语法定义:
抽象类前使用abstract关键字修饰,则该类为抽象类。
2. 应用场景:
a. 在某些情况下,某个父类只知道其子类应该包含怎么样的方法,但无法准确知道这些子类如何实现这些方法。
b. 从多个具体有相同特征的类中抽象出一个抽象类,以及这个抽象类作为子类的模板,从而避免了子类设计的随意性。
3. 作用:
限制规定子类必须实现某些方法,但不关注实现细节。
4. 使用规则:
a. abstract定义抽象类
b. abstract定义抽象方法,只声明,不需要实现。
c. 包含抽象方法的类是抽象类
d. 抽象类中可以包含普通方法,也可以没有抽象方法。
e. 抽象类不能直接创建,可以定义引用变量
abstract类就是继承自它的类会自动有abstract类中的方法,但是没有实现。正常继承的是可以使用父类已经实现了的方法。
例如: abstract class Animal { abstract void grow();}

25、接口:一种特殊的类,由全局常量和公共的抽象方法所组成。类是一种具体实现体,而接口定义了某一批类所需要遵守得规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。

接口定义:使用interface关键字。
接口定义的基本语法:
[修饰符] interface 接口名 [extends 父接口1,父接口2…]——–>(后面可以继承多个父接口)
{
零到多个常量定义…
零到多个抽象方法的定义…
}接口中方法不能有方法体,同时方法的访问修饰符不能是 private 和 protected

接口就是用来被继承、被实现的,修饰符一般用public 不能使用private和protected.
26、接口中的属性是常量,即使定义时不添加public static final 修饰符,系统也会自动加上。
接口中的方法只能是抽象方法,总是使用,系统自动添加 public final.

使用接口:一个类可以实现一个或多个接口,实现接口使用implements关键字。

[修饰符] class 类名 extends 父类 implements 接口1,接口2…

如果要继承父类,继承父类必须在实现接口之前。

通过接口描述两个不同类之间的共同特征。

接口的使用——通过接口的引用=========

接口在使用过程当中,经常与匿名内部类配合使用。

匿名内部类:没有名字的内部类。

Interface I = new Interface(){
public void method(){
system.out.println(“匿名内部类实现接口的方式“);
}
};

27、UML统一建模语言或标准建模语言 图形化语言。用例图、序列图、类图。

java高级特性:
异常
异常简介:有异于常态,和正常情况不一样,有错误出现。阻止当前方法或作用域,称之为异常。
什么是异常?
1、 Throwable(所有异常的祖先):分为 Error 和 Exception
2、 Error异常:虚拟机错误 或者线程死锁——程序崩溃。
3、 Exception:编码、环境、用户操作输入出现问题 .包括:RuntimeException(非检查异常)和其他异常(检查异常)
4、 RuntimeException(运行时异常、非检查异常):例如 引用了一个空对象的属性或者方法,数组访问越界,错误的类型转换,算数方面的异常(除以0)
5、 运行时异常由java虚拟机自动抛出并自动捕获,当出现运行时异常绝大部分说明代码本身有问题,从逻辑上改进代码
6、 其他异常各种各样,需要手动检查处理。
7、 捕获、处理异常:try-catch以及try-catch-finally;
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}
8、 try中出现异常,程序终止,程序的控制权将被移交给catch块中的异常处理程序。Catch中处理方法各种各样。
9、 catch语句执行结束后,外面的语句会继续顺序执行
10、 若try抛出很多种异常?——用多个catch块。
11、 编写try-catch语句,注意顺序。先小后大(先子类后父类)。如果顺序写错,编译器报错。
12、 finally:善后工作 finally{}比如释放空间等
13、 e.printStackTrace() ;打印异常
14、 java中的异常抛出:throw,throws
15、 throw抛出一个或多个异常,多个异常用“,“隔开。—(用在方法内)
16、 throws ——声明将要抛出何种类型的异常(声明)——(用在方法上)
//调用会抛出异常的方法或者:
throw new Exception();
}
17、 如果某个方法调用了会抛出异常的方法,那么必须添加try-catch语句去
捕获异常,或者添加throws声明语句将异常抛出给更上层的调用者处理异常
上图左边为可以处理的异常,右边处理不了,继续抛出给父类异常。
18、 自定义异常
class 自定义异常类 extends 异常类型{
}
19、 java中的异常链:把捕获的异常包装成新的异常,在新的异常里添加对原始异常的引用,再把新异常抛出。

20、 经验

21、 Java 中的字符串
在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。
22、 Java中字符串的不变性
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。
23、 Java中 String 类的常用方法 Ⅰ
String 类提供了许多用来处理字符串的方法,例如,获取字符串长度、对字符串进行截取、将字符串转换为大写或小写、字符串分割等

24、 Java中的 String 类常用方法 Ⅱ
“==” 和 equals() 有什么区别呢?
==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象
equals(): 比较存储在两个字符串对象中的内容是否一致
PS:字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。
28、 Java中的 StringBuilder 类
在Java中,除了可以使用 String 类来存储字符串,还可以使用StringBuilder 类或 StringBuffer 类存储字符串
StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用StringBuilder 类。
StringBuffer和StringBuilder 类中的方法一毛一样哦,唯一不同的只是线程安全问题….!
29、 Java中的 StringBuilder 类的常用方法
StringBuffer:
1,是一个字符串缓冲区,其实就是一个容器,
2,长度可变,可存储任意类型. 注意:是讲仁义数据转成字符串进行存储.
3,容器对象提供了很多对容器中数据的`操作功能,.如:增(append),删(delete),改(replace),查.
——>详细方法请大家参阅javaAPI文档

创建一个字符串缓冲区对象
例如; StringBuffer sb=new StringBuffer();//创建对象,才能调用方法
调用StringBuffer类中的相应方法,用于操作数据
例如; sb.append(“追加内容”);
30、 Java中的包装类
基本数据类型包装类:
java将基本数据类型封装成对象,—–>有啥好处类????——>可提供更多 的操作基本数值的功能.
包装类主要提供了两大类方法:
1. 将本类型和其他基本类型进行转换的方法
2. 将字符串和本类型及包装类互相转换的方法
31、 Java中基本类型和包装类之间的转换

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱
拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

32、 Java中基本类型和字符串之间的转换
基本类型转换为字符串有三种方法:
1. 使用包装类的 toString() 方法
2. 使用String类的 valueOf() 方法
3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串
将字符串转换成基本类型有两种方法:
1. 调用包装类的 parseXxx 静态方法
2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱
33、 Date和 SimpleDateFormat 类表示时间

使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下:
1. 0使用 format() 方法将日期转换为指定格式的文本

  1. 使用 parse() 方法将文本转换为日期

注意事项:
1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理
2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text 包
34、 Calendar类的应用
Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理。
java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();
那么如何使用 Calendar 获取年、月、日、时间等信息呢?我们来看下面的代码:
其中,调用 Calendar 类的 getInstance() 方法获取一个实例,然后通过调用 get() 方法获取日期时间信息,参数为需要获得的字段的值, Calendar.Year 等为 Calendar 类中定义的静态常量。
运行结果
Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。如下所示:
35、 Math 类操作数据
Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名

                详情参阅java API文档.

36、 java中的集合框架概述
37、 集合的概述,a.现实生活中:很多的事物凑在一起。b.数学中的集合:具有共同属性的事物的总体。
38、 Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。
39、 集合的作用:
a.在类的内部,对数据进行组织;
b.简单而快速的搜索大数量的条目;
c.有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素;
d.有的集合接口,提供了映射关系,可以通过关键字(KEY)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。
与数组对比:
数组的长度固定,集合长度可变
数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象。
Java集合框架体系结构 主要两大类:Collection接口和Map接口。
Collection: List、Queue(有序、可重复)
Set(无序、不可重复)。
List中重要的是ArrayList,
Queue中重要的是LinkedList,
Set中重要的是HashSet。(存储的是一个一个的对象)
Map最常用的是实现类:HashMap。(存储的是一个映射(Key,Value)键值对)
40、 Collection接口、子接口以及实现类
Collection接口
a.是List、Set和Queue接口的父接口。
b.定义了可用于操作List、Set和Queue的方法——增删改查 add,remove…
41、 List接口及其实现类——Arraylist
a、List是元素有序并且可以重复的集合,被称为序列
b、List可以精确的控制每个元素的插入位置,或删除某个位置元素。
c、ArrayList——数组序列,是List的一个重要实现类。
d、ArrayList底层是由数组实现的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值