收藏 分销(赏)

JavaSE03_Java基础语法.ppt

上传人:xrp****65 文档编号:13221929 上传时间:2026-02-05 格式:PPT 页数:58 大小:1.49MB 下载积分:10 金币
下载 相关 举报
JavaSE03_Java基础语法.ppt_第1页
第1页 / 共58页
JavaSE03_Java基础语法.ppt_第2页
第2页 / 共58页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Java SE,应用程序设计,Java SE,应用程序设计,2,本章学习目标,1,注释、分隔符、标识符和关键字,2,数据类型,3,方法、变量,4,值传递和关键字,this,5,标准输入输出,6,编码惯例,3,注 释,注释(,Comment,)是对源程序起解释说明作用的文本信息,适当使用注释能够增强代码的可读性。,Java,语言中定义了三种注释形式:,/单行注释-注释到行尾,/*单行或多行注释*/,/*可用于文档化处理的单行或多行注释*/,JDK,中提供了一个文档自动生成工具,javadoc,在自定义类中,public,的成员前以/*,*/形式加入的注释内容均可被自动提取到生成的说明文档中。用法:,somepathjavadoc,source.java,4,分隔符,Java,分隔符组成:,分号-;逗号-,空格-圆点-.,花括号-及,Java,分隔符作用:,Java,语句必须以分号作为结束标记,,for,循环语句中使用分号来分隔不同的成份。,逗号可以在方法声明或调用时的参数列表中用于分隔多个参数,也可在一条声明语句中同时声明多个属性或局部变量时起分隔作用。,Java,程序源代码中各组成部分之间可以插入任意数量的空格,包括换行。,圆点用于访问对象成员(属性或方法)时标明调用或隶属关系,其格式为对象名.对象成员。,花括号用于构造语句块。,5,语句块,Java,允许用花括号将一组语句括起来,形成一个语句块(,block,),用法:,定义类时类体必须采用语句块形式。,定义方法时方法体必须采用语句块的形式。,定义循环语句时,循环体可以采用语句块的形式,采用将0多条语句集合到一起,作为一个整体进行处理。,语句块可以嵌套,嵌套层数无限制。,6,标识符,Java,语言中,为各种变量、方法和类等起的名字称为标识符(,identifier,)。,Java,标识符的命名规则:,应以字母、下划线(_)、美元符($)开头,后跟字母、下划线、美元符或数字,Java,标识符大小写敏感,长度无限制,举例:,合法的标识符,不合法的标识符,HelloWorld,class,DataClass,DataClass,#,_983,98.3,$,bS5_c7,Hell World,7,关键字,Java,语言中一些被赋以特定的含义、并用做专门用途的单词称为关键字(,keyword,)。,所有,Java,关键字都是小写的,,TURE、FALSE、NULL,等都不是,Java,关键字。,goto,和,const,虽然从未使用,但也作被为,Java,关键字保留。,true,false,虽被用做专门用途,但不是,Java,关键字。,8,Java,关键字表,abstract,assert,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,extends,final,finally,float,for,goto,if,implements,import,instanceof,int,interface,long,native,new,null,package,private,protected,public,return,short,static,strictfp,super,switch,synchronized,this,throw,throws,transient,try,void,volatile,while,9,Ex3-1,练习在一个已有.,java,源代码文件中使用三种不同类型的注释,并用,javadoc,命令创建自己的类文档,体会其用法。,练习在已有应用程序的一个语句中插入多处空格、中间换行、将多个语句组成一个语句块儿(置于,“,”,中),并编译运行程序,体会其自由程度。,测试并体会,Java,标识符、关键字的使用规则:在程序中试将不合法的标识符(如:3,ar,*,bily,d9#8,等)、或关键字作为变量名、方法名或类名,编译然后改正错误。,10,数据类型,数据类型就是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。,常用数据类型:,整型、浮点型、字符型、字符串型、布尔型,按照对数据类型的使用约束程度来划分,高级编程语言可分为:,强类型语言(,Strong Typed Languages,),弱类型语言(,Weakly Typed Languages,),11,Java,数据类型,Java,数据类型,引用类型,基本类型,数值型,布尔型(,boolean,),整型(,byte,short,int,long,),浮点型(,float,double,),类(,class,),接口类型(,interface,),数组类型,枚举类型(,Enum,),字符型(,char,),注解类型(,Annotation,),Java,数据类型层次结构,12,基本数据类型,基本类型,(,Primitive Type,),的数据只能保存单一的值,因此也被称为原始类型、或简单类型。,Java,中定义了四类/八种基本数据类型,逻辑型-,boolean,文本型-,char,整数型-,byte,short,int,long,浮点型-,float,double,13,整 型,整型数据用于保存整数信息,,Java,提供了四种不同的整数类型,各有固定的表数范围和字段长度,而不受具体操作系统的影响,以保证,Java,程序的可移植性,类 型,占用存储空间,表数范围,byte,1字节,-128 127,short,2字节,-2,15,2,15,-1,int,4字节,-2,31,2,31,-1,long,8字节,-2,63,2,63,-1,14,整型常量表示,Java,语言整型常量的三种表示形式:,十进制整数,如,12,-314,0,八进制整数,要求以0开头,如,012,十六进制数,要求,0,x,或,0,X,开头,如,0,x1,2,Java,语言的整型常量默认为,int,型,声明,long,型常量可以后加,l,或,L。,举例:,int,a=39;,int,b=0 x4b;,int,c=021;,int,d=a+0 x12+012;/,等价于,d=39+18+10;,long m=3L;,long n=m+40;,15,浮点型,Java,浮点型包括,float,和,double,两种,分别用于保存单精度和双精度的浮点数。,浮点型有固定的表数范围和字段长度:,类 型,占用存储空间,表数范围,float,4字节,-3.403,E383.403E38,double,8字节,-1.798,E3081.798E308,16,浮点型常量表示,Java,浮点类型常量有两种表示形式,十进制,必须含有小数点,也可采用科学计数法表示,例如,3.65 0.12 .12 4.236e2 1.24e2 4.5E-3,十六进制,从,JDK5.0,开始引入,十六进制浮点数只能采用科学记数法表示,其格式为:,例如,0,x1.2p3,,,转换为十进制的计算方法为:,Java,浮点型常量默认为,double,型,如要声明,float,型常量为,则需在数字后面加,f,或,F,,,如:,0 x1.2p3=(1*16,0,+2*16,-1,)*2,3,=9.0,double d=3.14;,float f=3.14f;,17,字符型,基本概念:字节、字符、字符集、字符编码。,char,型数据用来表示通常意义上,“,字符,”,,,Java,语言采用16位,Unicode,编码保存。,字符常量的三种表示方法:,使用单引号括起来的单个字符,例如:,十六进制编码形式表示,例如:,使用转义字符来将其后的字符转变为其它的含义,例如:,char c=A;,char c1=u0061;,char c2=n;/,代表换行符,18,布尔型,boolean,类型数据用来表示只有两种状态的逻辑值,分别代表现实生活中的特定条件成立与否,通常用于逻辑运算和程序流程控制。,boolean,类型数据只允许取值,true,或,false,,,不可以0或非0的整数替代,true,和,false,。,用法举例:,boolean,b=true;,if(b,=false),System.out.println(haha,);,else,System.out.println(hehe,);,19,Ex3-2,编写,Java,应用程序,测试并体会各种原始类型数据的定义,赋值和输出。,输出可采用下述形式的语句:,/,其中,x,是变量名,如,a,b,c,等。,使用,char,型的三种常量声明方式为,char,型变量赋值并输出。,System.out.println(x,=+x);,20,引用数据类型,Java,语言中除8种基本数据类型以外,其它的数据类型统称为引用类型(,Reference Type,),具体包括:类、接口、数组、枚举和注解类型。,引用类型数据以对象的形式存在。,引用类型变量的值是某个对象的句柄,而不是对象本身。,声明引用类型变量时,系统只为该变量分配引用空间,并未创建一个具体的对象。,21,引用类型应用举例(1),public class,MyDate,private,int,day=17;,private,int,month=2;,private,int,year=2007;,public,MyDate,(),public,MyDate(int,d,int,m,int,y),day=d;,month=m;,year=y;,public void,setDay(int,d)day=d;,public,int,getDay,()return day;,public void,setMonth(int,m)month=m;,public,int,getMonth,()return month;,public void,setYear(int,y)year=y;,public,int,getYear,()return year;,public void display(),System.out.println(year,+-+month+-+day);,22,引用类型应用举例(2),public class,TestReferenceType,public static void,main(String,args,),MyDate,d1;,d1=new MyDate(8,8,2008);,d1.display();,23,对象构造和初始化(1),为引用类型变量分配引用空间,语句:,内存状态:,创建新对象,为新对象分配内存空间,并进行属性(实例变量)的默认初始化。,语句:,内存状态:,MyDate,d1;,d1,d1=,new MyDate(8,8,2008),;,d1,0,0,0,year,month,day,MyDate,对象,24,对象构造和初始化(2),Java,对象默认初始化规则,属性类型,默认初值,byte,0,short,0,int,0,long,0,L,char,u0000,float,0.0,F,double,0.0,D,boolean,false,所有引用类型,null,25,对象构造和初始化(3),进行属性的显式初始化,显式初始化取值来自于类的定义中属性声明部分。,语句:,内存状态:,说明:如果属性在声明时未指定缺省值,则在这个环节就不对其进行赋值操作。,private,int,day=17;,private,int,month=2;,private,int,year=2007;,d1,2007,2,17,year,month,day,MyDate,对象,26,对象构造和初始化(4),执行构造方法体中的语句。,语句:,内存状态:,说明:此时新建对象和先前声明的变量,d1,间还是没有建立任何关联。,public,MyDate(int,d,int,m,int,y),day=d;,month=m;,year=y;,d1,2008,8,8,year,month,day,MyDate,对象,27,对象构造和初始化(5),为引用类型变量赋值。,语句:,内存状态:,说明:此时变量,d1,保存的并不是新建对象封装的具体信息、如属性值等,而是该对象的句柄(,Handle,)。,d1,=,new MyDate(8,8,2008);,0,x3a478b,d1,2008,8,8,year,month,day,MyDate,对象,28,Ex3-3,运行,P26,页程序,体会,Java,引用数据类型的实现机制,思考并讨论下述问题:,基本数据类型和引用数据类型的区别?,引用类型变量和对象的区别?,类和对象的关系?,29,方 法,方法(,Method,),是类的动态性能,描述了该类事物所共有的功能或行为。,Java,语言的方法相当于其它编程语言中的函数(,Function,),或子程序(,Subroutine,),是用来完成相对独立功能的一段代码的集合。,语法规则:,Java,语言的方法必须定义在类中,而不允许直接出现在源文件内。,只有其所在类的对象才有资格调用方法。,方法的定义不允许出现嵌套。,30,形参、实参及返回值,形式参数,在方法被调用时用于接收外界输入的数据;,实参,调用方法时实际传给方法的数据,返回值,方法在执行完毕后返还给调用它的环境的数据。,返回值类型,事先约定的返回值的数据类型。如无返回值,在,Java,中也必须给出返回值数据类型为,void。,定义构造方法时则不允许给出返回值类型。,31,方法举例,public class,TestMethod,public,int,m1(,int,a,int,b,int,c,),int,result=a+b+c;,return result,;,public,void,m2(,int c,),System.out.println(,c,);,public static void,main(,String,args,),TestMethod,tm=new,TestMethod,();,int,j=tm.m1(,3,4,5,);,System.out.println(,j,);,System.out.println(,tm.m1(100,10,9),);,tm.m1(,1,2,3,);/,合法,丢弃了返回结果,tm.m2(,6,);,/,int,k=tm.m2(,8,);/,非法,方法,m2(),无返回值,32,相关语法,方法形参列表格式:,Java,语言中使用下述形式调用方法:,实参列表格式如下:,实参可以是变量、常量或表达式,但其数目、类型和出现的顺序必须和相应的形参保持一致,此称为参数匹配。,return,语句用于终止方法的运行并指定要返回的数据。如果方法的最后一行没有,return,语句,则编译时系统会添加,return;,。,(,数据类型1 参数名1,数据类型2 参数名2,),对象名.方法名(实参列表),(参数1,参数2,),33,变 量,变量(,Variable,),用于记录数值可以改变的数据。,计算机技术中变量包括变量名和变量值两部分:,变量名,用于标记一段特定的存储空间,变量值,以二进制形式保存在该空间中,且可以被访问和修改。,变量分类,按所属数据类型划分:,基本类型变量,引用类型变量,按声明的位置划分:,局部变量,方法或语句块内部定义的变量,成员变量,方法外部、类的内部定义的变量,34,变量声明和初始化,Java,语言中变量必须先声明和初始化(赋初值),然后才可以使用。,成员变量在类的定义中声明,在创建对象的同时创建有关的成员变量,然后由系统自动对其进行默认初始化和显式初始化。,局部变量声明语法格式:,举例:,说明:形参属局部变量,方法调用时会被隐含的初始化。,=,=;,public void m1(int,a,int,b,),int,i,;,int,j,=,i,+4;/,编译出错,变量,i,尚未初始化,int,k,=,a,+,b,;,35,变量作用域与生存期,变量的作用域也称变量的作用范围,即一个变量在多大的范围内可以使用:,成员变量的作用域与其所属对象的作用域相同,局部变量的作用域就是它所在的方法或语句块。,变量的生存期即变量的生存时间:,局部变量的生存期就是其所在方法或语句块单次执行的期间,在程序每一次调用方法或运行进入到一个语句块中时,其中的局部变量才被创建并可用,随方法/语句块的退出,局部变量将被销毁。,成员变量的生存期与其所属的对象相同,随着对象的创建而创建、随对象的销毁而销毁。,36,数据存储细节,计算机的物理内存在操作系统和,JVM,中使用时分为堆内存和栈内存两种方式:,堆内存(,Heap Memory,),由所有的应用程序公用,存储空间分配不连续,存储容量大。在堆内存中分配存储空间和进行存取操作速度较慢。,栈内存(,Stack Memory,),由特定应用程序专用,存储空间是连续的,以栈的方式(后进先出)进行管理,存储容量小,但访问速度快。,Java,程序运行时,局部变量保存在栈内存中,而对象及其成员变量保存在堆内存中。,37,变量作用域举例,class C,private,int,a=1;,private,int,b=5;,public void m1(),int,i=4,j=5;,a=i+j;,public void m2(int i),int,j=8;,a=i+j;,System.out.println(a,);,public class,TestVariable,public static void,main(String,args,),C c=new C();,c.m1();,int,k=4;,c.m2(k);,38,值传递,Java,语言中进行赋值操作或函数调用中传递参数时,遵循值传递(,Pass By Value,),的原则,即传递的永远是参数的值。,Java,值传递分为两种不同情形:,基本类型数据传递的是该数据的值本身。,引用类型数据传递的是对对象的引用(句柄),而非对象本身。,39,值传递举例(1),public class,BirthDate,private,int,day;,private,int,month;,private,int,year;,public,BirthDate,(),public,BirthDate,(,int,d,int,m,int,y),day=d;,month=m;,year=y;,public void,setDay(int,d)day=d;,public,int,getDay,()return day;,public void,setMonth(int,m)month=m;,public,int,getMonth,()return month;,public void,setYear(int,y)year=y;,public,int,getYear,()return year;,public void display(),System.out.println(year,+-+month+-+day);,40,值传递举例(2),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b),b=new BirthDate(22,2,2004);,public void change3(BirthDate b),b.setDay(22);,41,值传递演示(1),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,栈内存,堆内存,程序开始时内存状态,42,值传递演示(2),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,43,值传递演示(3),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,9,i,change1,44,值传递演示(4),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,1234,i,change1,45,值传递演示(5),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,46,587934,值传递演示(6),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,b,change2,47,666888,值传递演示(7),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,b,change2,22,2,2004,48,值传递演示(8),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,49,354752,值传递演示(9),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,1,1,处内存状态,b,change3,50,354752,值传递演示(10),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,22,1,处内存状态,b,change3,51,值传递演示(11),public class Example,public static void,main(String,args,),Example ex=new Example();,int,date=9;,BirthDate,d1=new BirthDate(7,7,1970);,BirthDate,d2=new BirthDate(1,1,2000);,ex.change1(date);,ex.change2(d1);,ex.change3(d2);,System.out.println(date,=+date);,d1.display();,d2.display();,public void change1(int i)i=1234;,public void change2(BirthDate b)b=new BirthDate(22,2,2004);,public void change3(BirthDate b)b.setDay(22);,main,栈内存,堆内存,110925,9,587934,ex,date,d1,354752,d2,1970,7,7,2000,22,1,处内存状态,52,Ex3-4,练习值传递演示中的例程,,Example.java,,,体会和巩固,Java,中值传递的思想。,编写,Java,类,MyTool,,,实现下述功能并测试:,复制,BirthDate,类(见,P39,页)对象;,public,BirthDate,copy(BirthDate,d),给定一个,BirthDate,对象,返回对应其一周后日期的,BirthDate,对象(假定每月均为30天),public,BirthDate,nextWeek(BirthDate,d),53,关键字,this,(1),Java,中为解决变量的命名冲突和不确定性问题,引入关键字,this,代表其所在方法的当前对象,具体可分为两种情况:,在普通方法中,关键字,this,代表方法的调用者、即本次调用了该方法的对象;,在构造方法中,关键字,this,代表了该方法本次运行所创建的那个新对象。,在,Java,方法中既可以直接使用本方法的局部变量,还可以使用方法当前对象的成员变量。,54,关键字,this,(2),public class,MyDate,private,int,year,month,day;,public,MyDate,(),public,MyDate(int,day,int,month,int,year),this.year,=year;,this.month,=month;,this.day,=day;,public void,setYear(int,year),this.year,=year;,public void,setMonth(int,m)month=m;,public void,setDay(int,d)day=d;,public void setting(),this.setYear(2008);,this.setMonth(8);,setDay(11);,/,同,this.setDay(11);,public void display(),System.out.println(day,+-+month+-+year);,55,标准输入/输出(1),读取控制台输入,/源文件,TestI
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服