尚学堂课件J2SE下半部分课件

上传人:磨石 文档编号:243154772 上传时间:2024-09-17 格式:PPT 页数:170 大小:776.50KB
返回 下载 相关 举报
尚学堂课件J2SE下半部分课件_第1页
第1页 / 共170页
尚学堂课件J2SE下半部分课件_第2页
第2页 / 共170页
尚学堂课件J2SE下半部分课件_第3页
第3页 / 共170页
点击查看更多>>
资源描述
,Click to edit Master title style,Click to edit Master text stylesgood1,Second levelgood2,Third levelgood3,Fourth levelgood4,Fifth levelgood5,手把手教程,版权所有:尚学堂科技,J2SE,之 常用类,尚学堂,第六章,:,常用类,本章内容,字符串相关类(,String,、,StringBuffer,、,StringBuilder,),基本数据类型包装类,Math,类(不重要),File,类,枚举类,String,类,java.lang.String,类代表,不可变,的字符序列。,“,xxxxx”,为该类的一个对象。,String,类的常见构造方法:,String(String original),创建一个,String,对象为,original,的拷贝。,String(char value),用一个字符数组创建一个,String,对象,String(char value,int offset,int count),用一个字符数组从,offset,项开始的,count,个字符序列创建一个,String,对象,String,类举例(1),public class Test ,public static void main(String args) ,String s1 = hello; String s2 = world;,String s3 = hello;,System.out.println(s1 = s3); /true,s1 = new String (hello);,s2 = new String(hello);,System.out.println(s1 = s2); /false,System.out.println(s1.equals(s2); /true,char c= s,u,n, ,j,a,v,a;,String s4 = new String(c);,String s5 = new String(c,4,4);,System.out.println(s4); /sun java,System.out.println(s5); /java,String,类常用方法(1),public char charAt(int index),返回字符串中第,index,个字符。,public int length(),返回字符串的长度。,public int indexOf(String str),返回字符串中出现,str,的第一个位置,public int indexOf(String str,int fromIndex),返回字符串中从,fromIndex,开始出现,str,的第一个位置,public boolean equalsIgnoreCase(String another),比较字符串与,another,是否一样(忽略大小写),public String replace(char oldChar,char newChar),在字符串中用,newChar,字符替换,oldChar,字符,String,类举例(2),public class Test ,public static void main(String args) ,String s1 = sun java,s2 = Sun Java;,System.out.println(s1.charAt(1);/u,System.out.println(s2.length();/8,System.out.println(s1.indexOf(java);/4,System.out.println(s1.indexOf(Java);/-1,System.out.println(s1.equals(s2);/false,System.out.println(s1.equalsIgnoreCase(s2);,/true,String s = ,我是程序员,我在学,java;,String sr = s.replace(,我,你);,System.out.println(sr);,/,你是程序员,你在学,java,String,类常用方法(2),public boolean startsWith(String prefix),判断字符串是否以,prefix,字符串开头,public boolean endsWith(String suffix),判断字符串是否以,prefix,字符串结尾,public String toUpperCase(),返回一个字符串为该字符串的大写形式,public String toLowerCase(),返回一个字符串为该字符串的小写形式,public String substring(int beginIndex),返回该字符串从,beginIndex,开始到结尾的子字符串,public String substring(int beginIndex,int endIndex),返回该字符串从,beginIndex,开始到,endIndex,结尾的子字符串,public String trim(),返回将该字符串去掉开头和结尾空格后的字符串,String,类举例(3),public class Test ,public static void main(String args) ,String s = Welcome to Java World!;,String s1 = sun java ;,System.out.println(s.startsWith(Welcome);,/true,System.out.println(s.endsWith(World);,/false,String sL = s.toLowerCase();,String sU = s.toUpperCase();,System.out.println(sL);,/welcome to java world!,System.out.println(sU);,/WELCOME TO JAVA WORLD!,String subS = s.substring(11);,System.out.println(subS);/Java World!,String sp = s1.trim();,System.out.println(sp);/sun java,String,类常用方法(3),静态重载方法,public static String valueOf(),可以将基本类型数据转换为字符串;例如:,public static String valueOf(double d),public static String valueOf(int i), ,b + “”;,方法,public String split(String regex),可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。,String,类举例(4),public class Test ,public static void main(String args) ,int j = 1234567;,String sNumber = String.valueOf(j); /j+”,System.out.println,(j,是+,sNumber.length()+,位数。);,String s = Mary,F,1976;,String sPlit = s.split(,);,for(int i=0;isPlit.length;i+) ,System.out.println(sPliti);,输出结果:,j,是7位数。,Mary,F,1976,课堂练习,课 堂 练 习,1:,编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母数。,2:,编写一个方法,,输出在一个字符串中,指定字符串出现的次数。,TestString.java,Apache Commons,public static int,countMatches,(,String,str,String,sub),System.out.printlmons.lang.StringUtils.countMatches(s,java);,StringBuffer,类,java.lang.StringBuffer,代表可变的字符序列。,StringBuffer,和,String,类似,但,StringBuffer,可以对其字符串进行改变。,StringBuffer,类的常见构造方法:,StringBuffer(),创建一个不包含字符序列的“空”的,StringBuffer,对象。,StringBuffer(String str),创建一个,StringBuffer,对象,包含与,String,对象,str,相同的字符序列。,StringBuffer,常用方法(1),重载方法,public StringBuffer append(),可以为该,StringBuffer,对象添加字符序列,返回添加后的该,StringBuffer,对象引用,例如:,public StringBuffer append(String str),public StringBuffer append(StringBuffer sbuf),public StringBuffer append(char str),public StringBuffer append,(char str,int offset,int len),public StringBuffer append(double d),public StringBuffer append(Object obj), ,StringBuffer,常用方法(2),重载方法,public StringBuffer insert(),可以为该,StringBuffer,对象在指定位置插入字符序列,返回修改后的该,StringBuffer,对象引用,例如:,public StringBuffer insert,(int offset,String str),public StringBuffer insert,(int offset,double d), ,方法,public StringBuffer delete(int start,int end),可以删除从,start,开始到,end-1,为止的一段字符序列,返回修改后的该,StringBuffer,对象引用。,StringBuffer,常用方法(3),和,String,类含义类似的方法:,public int indexOf(String str),public int indexOf(String str,int fromIndex),public String substring(int start),public String substring(int start,int end),public int length(),方法,public StringBuffer reverse(),用于将字符序列逆序,返回修改后的该,StringBuffer,对象引用。,StringBuffer,类举例,public class Test ,public static void main(String args) ,String s = Mircosoft;,char a = a,b,c;,StringBuffer sb1 = new StringBuffer(s);,sb1.append(/).append(IBM),.append(/).append(Sun);,System.out.println(sb1);,StringBuffer sb2 = new StringBuffer(,数字);,for(int i = 0;i,角度,toRadians(double angdeg),角度,-,弧度,public class Test ,public static void main(String args) ,double a = Math.random();,double b = Math.random();,System.out.println(Math.sqrt(a*a+b*b);,System.out.println(Math.pow(a,8);,System.out.println(Math.round(b);,System.out.println(Math.log(Math.pow(Math.E,15);,double d = 60.0, r = Math.PI/4;,System.out.println(Math.toRadians(d);,System.out.println(Math.toDegrees(r);,输出结果:,0.22724854767821204,3.05976E-10,0,15.0,1.65976,45.0,Math类举例,File,类,java.io.File,类代表系统文件名(路径或文件名),。,File,类的常见构造方法:,public pathname),以,pathname,为路径创建,File,对象,如果,pathname,是相对路径,则默认的当前路径在系统属性,user.dir,中存储。,File,的静态属性,String separator,存储了当前系统的路径分隔符。,通过,File,对象可以访问文件的属性。,public boolean canRead() public boolean canWrite() public boolean exists() public boolean isDirectory() public boolean isFile() public boolean isHidden() public long lastModified() public long length() public String getName() public String getPath(),通过,File,对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)。,public boolean createNewFile()throws IOException,public boolean delete(),public boolean mkdir(),Test,List,课堂练习,课 堂 练 习,编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件,(,夹,),补充:,java.lang.Enum,枚举类型,枚举类型:,只能够取特定值中的一个,使用,enum,关键字,是,java.lang.Enum,类型,TestEnum.java,总结,String,正则表达式,基础类型包装类,Math,File,递归,枚举类型,Apache Commons,第七章,:,容器,/,集合,本章内容,容器的概念,容器,API,Collection,接口,Iterator,接口,增强的,for,循环,Set,接口,List,接口 和,Comparable,接口,Collections,类,Map,接口,自动打包,/,解包,泛型(,JDK1.5,新增),容器的概念,阅读如下程序:,public class Name ,private String firstName,lastName;,public Name(String firstName, String lastName) ,this.firstName = firstName; this.lastName = lastName;,public String getFirstName() return firstName; ,public String getLastName() return lastName; ,public String toString() return firstName +,+ lastName; ,public class Test ,public static void main(String arg) ,Name name1 = new Name(f1,l1);,Name name2 = new Name(f2,l2);,Name name3 = new Name(f3,l3);, ,容器:,Java API,所提供的一系列类的实例,用于在程序中存放对象。,容器,API,J2SDK,所提供的容器,API,位于,java.util,包内。,容器,API,的类图结构如下图所示:,1,图,1,类,3,知识点,6,接口,没有顺序,不可重复,有顺序,可以重复,容器,API,Collection,接口定义了存取一组对象的方法,其子接口,Set,和,List,分别定义了存储方式。,Set,中的数据对象没有顺序且不可以重复。,List,中的数据对象有顺序且可以重复。(即互相,equals,),Map,接口定义了存储“键(,key),值(,value),映射对”的方法。,Collection,接口,Collection,接口中所定义的方法:,int size();,boolean isEmpty();,void clear();,boolean contains(Object element);,/equals,boolean add(Object element);,boolean remove(Object element);,Iterator iterator();,boolean containsAll(Collection c);,boolean addAll(Collection c);,boolean removeAll(Collection c);,boolean retainAll(Collection c);,/,求交集,Object toArray();,Collection,方法举例,import java.util.*;,public class Test ,public static void main(String args) ,Collection c = new ArrayList();,/,可以放入不同类型的对象,c.add(hello);,c.add(new Name(f1,l1);,c.add(new Integer(100);,System.out.println(c.size();,System.out.println(c);,输出结果:,3,hello, f1 l1, 100,TestArrayList.java,ArrayList,为什么有两个,remove,方法?,ArrayList为什么有两个remove方法?,remove(int index) 是子类新添加的!,如果是父类引用指向子类对象,则找不到子类中新添加的方法。,要想调用子类新添加的方法,需要先转型,是优先自动打包呢?还是先去匹配方法?,c,“hello”,Map,接口,实现,Map,接口的类用来存储键值 对。,Map,接口的实现类有,HashMap,和,TreeMap,等。,Map,类中存储的键值对通过键来标识,所以键值不能,重复,。,Object,put(Object key, Object value);,Object get(Object key);,Object remove(Object key);,boolean containsKey(Object key);,boolean containsValue(Object value);,int size();,boolean isEmpty();,void putAll(Map t);,void clear();,TestMap.java,Equals!,所以要比较,hashcode,hashCode,一个对象被当作,Map,里面的,key,的时候,hashCode,用来比较两个对象是不是相等,hashCode,非常适合用来做索引,hashCode,的常规协定,重写,equals,方法,通常需要重写,hashCode,方法,.,因为你的本意是想让他相等的,.,但,hashCode,如果不重写,不同的对象就不会相等,Hashcode,被谁调用了,?,什么时候调用的?,Collection,方法举例,import java.util.*;,public class Test ,public static void main(String args) ,Collection c = new HashSet();,c.add(hello);,c.add(new Name(f1,l1);,c.add(new Integer(100);,c.remove(hello);,c.remove(new Integer(100);,System.out.println,(c.remove(new Name(f1,l1);,System.out.println(c);,输出结果:,false,f1 l1,BasicContainer.java,HashSet,底层用,HashMap,来实现。,往,HashSet,里面放对象,同样需要重写,hashcode,方法,Collection,方法举例,public boolean equals(Object obj) ,if (obj instanceof Name) ,Name name = (Name) obj;,return (firstName.equals(name.firstName),return super.equals(obj);,public int hashCode() ,return firstName.hashCode();,容器类对象在调用,remove、contains,等方法时需要比较对象是否相等,这会涉及到对象类型的,equals,方法和,hashCode(hash,容器,),方法;对于自定义的类型,需要要重写,equals,和,hashCode,方法以实现自定义的对象相等规则。,注意:相等的对象应该具有相等的,hash codes。,增加,Name,类的,equals,和,hashCode,方法如下:,Collection,方法举例,使用更新的,Name,类,运行下列程序:,import java.util.*;,public class Test ,public static void main(String args) ,Collection c = new LinkedList();,c.add(new Name(f1,l1);,c.add(new Name(f2,l2);,System.out.println(c.contains,(new Name(f2,l2);,c.remove(new Name(f1,l1);,System.out.println(c);,输出结果:,true,f2 l2,Iterator,接口,所有实现了,Collection,接口的容器类都有一个,iterator,方法用以返回一个实现了,Iterator,接口的对象。,Iterator,对象称作迭代器,用以方便的实现对容器内元素的遍历操作。,Iterator,接口定义了如下方法:,Enumeration ArrayList - Vector,boolean hasNext(); /,判断游标右边是否有元素,Object next(); /,返回游标右边的元素并将游标移动到下一个位置,void remove(); /,删除游标左面的元素,在执行完,next,之后该,/操作只能执行一次,游标,Next(),元素,Iterator,方法举例,import java.util.*;,public class Test ,public static void main(String args) ,Collection c = new HashSet();,c.add(new Name(f1,l1);,c.add(new Name(f2,l2);,c.add(new Name(f3,l3);,Iterator i = c.iterator();,while(i.hasNext() ,/next(),的返回值为,Object,类型,需要转换为相应类型,Name n = (Name)i.next();,System.out.print(n.getFirstName()+ );,输出结果:,f2 f1 f3,start = 0,I = 0,I = 1,I = 2,arr(1),rotate(0),1, 2, 3,start = 1,ii = 1,rotate(1),arr(2),ii = 2,rotate(1),Iterator,方法举例,Iterator,对象的,remove,方法是在迭代过程中删除元素的唯一的安全方法。, ,Collection c = new HashSet();,c.add(new Name(fff1,lll1);,c.add(new Name(f2,l2);,c.add(new Name(fff3,lll3);,for(Iterator i = c.iterator();i.hasNext();) ,Name name =(Name)i.next();,if(name.getFirstName().length()3),i.remove();,/,如果换成,c.remove(name);,会产生例外,System.out.println(c);,输出结果:,fff3 lll3, fff1 lll1,补充:,JDK1.5,增强的,for,循环,增强的,for,循环对于遍历,array,或,Collection,的时候相当简便,示例,EnhancedFor.java,缺陷:,数组:,不能方便的访问下标值,集合:,与使用,Iterator,相比,不能方便的删除集合中的内容,总结:,除了简单遍历并读出其中的内容外,不建议使用增强,for,EnhancedFor.java,Set,接口,Set,接口是,Collection,的子接口,,Set,接口没有提供额外的方法,但实现,Set,接口的容器类中的元素是没有有顺序的,而且不可以重复。,Set,容器可以与数学中“集合”的概念相对应。,J2SDK API,中 所提供的,Set,容器类有,HashSet,TreeSet,等。,Set,方法举例,public static void main(String args) ,Set s = new HashSet();,s.add(hello);,s.add(world);,s.add(new Name(f1,f2);,s.add(new Integer(100);,s.add(new Name(f1,f2); /,相同元素不会被加入,s.add(hello); /,相同的元素不会被加入,System.out.println(s);,输出结果:,100,hello, world, f1 f2,Set,方法举例,public static void main(String args) ,Set s1 = new HashSet();,Set s2 = new HashSet();,s1.add(a);s1.add(b);s1.add(c);,s2.add(d);s2.add(a);s2.add(b);,/Set,和,List,容器类都具有,Constructor(Collection c),/,构造方法用以初始化容器类,Set sn = new HashSet(s1);,sn.retainAll(s2);,/,求交集,Set su = new HashSet(s1);,su.addAll(s2);,System.out.println(sn);,System.out.println(su);,输出结果:,a, b,d, a, c, b,List,接口,List,接口是,Collection,的子接口,实现,List,接口的容器类中的元素是有顺序的,而且可以重复。,List,容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。,J2SDK,所提供的,List,容器类有,ArrayList,LinkedList,等。,Object get(int index);,Object set(int index, Object element);,/,返回旧的元素,void add(int index, Object element);,Object remove(int index);,int indexOf(Object o);,int lastIndexOf(Object o);,List,方法举例,List l1 = new LinkedList();,for(int i=0; i=5; i+) ,l1.add(a+i);,System.out.println(l1);,l1.add(3,a100);,System.out.println(l1);,l1.set(6,a200);,System.out.println(l1);,System.out.print(String)l1.get(2)+ “ “);,System.out.println(l1.indexOf(a3);,l1.remove(1);,System.out.println(l1);,输出结果:,a0, a1, a2, a3, a4, a5,a0, a1, a2, a100, a3, a4, a5,a0, a1, a2, a100, a3, a4, a200,a2 4,a0, a2, a100, a3, a4, a200,类,java.util.Collections,提供了一些静态方法实现了基于,List,容器的一些常用算法。,List,常用算法,void sort(List),对,List,容器内的元素排序,void shuffle(List),对,List,容器内的对象进行随机排列,void reverse(List),对,List,容器内的对象进行逆续排列,void fill(List, Object),用一个特定的对象重写整个,List,容器,void copy(List dest,List src),将,src List,容器内容拷贝到,dest List,容器,int binarySearch(List, Object),对于顺序的,List,容器,采用折半查找的方法查找特定对象,输出结果:,a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,a1, a3, a8, a9, a4, a6, a5, a2, a0, a7,a7, a0, a2, a5, a6, a4, a9, a8, a3, a1,a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,5,List l1 = new LinkedList();,List l2 = new LinkedList();,for(int i=0; i,obj,返回负数表示,this ,obj,实现了,Comparable,接口的类通过实现,comparaTo,方法从而确定该类对象的排序方式。,Comparable,接口,改写,Name,类 让其实现,Comparable,接口,其,compareTo,方法定义为:,class Name implements Comparable , ,public int compareTo(Object o) ,Name n = (Name)o;,int lastCmp =,pareTo(n.lastName);,return,(lastCmp!=0 ? lastCmp :,pareTo(n.firstName);,BasicContainer.java,Comparable,接口,使用新的,Name,类 运行下列程序:,List l1 = new LinkedList();,l1.add(new Name(Karl, M);,l1.add(new Name(Steven, Lee);,l1.add(new Name(John, O);,l1.add(new Name(Tom, M);,System.out.println(l1);,Collections.sort(l1);,System.out.println(l1);,输出结果:,Karl M, Steven Lee, John O, Tom M,Steven Lee, Karl M, Tom M, John O,BasicContainer.java,如何选择数据结构*,Array,读快改慢,Linked,改快读慢,Hash,搜索极快,遍历极慢,Tree,插入,/,搜索都比较快,适合做索引,5,3,8,1,4,9,7,9,8,7,6,Auto-boxing/unboxing,在合适的时机自动打包、解包,自动将基础类型转换为对象,自动将对象转换为基础类型,int a = 12;,Integer b = Integer.valueOf(a);,int c = b.intValue();,int a = 12;,Integer b = a;,int c = b;,TestMap2.java,TestAutoboxing.java,补充:,JDK1.5,泛型,起因:,JDK1.4,以前类型不明确:,装入集合的类型都被当作,Object,对待,从而失去自己的实际类型。,从集合中取出时往往需要转型,效率低,容易产生错误。,解决办法:,在定义集合的时候同时定义集合中对象的类型,示例:,BasicGeneric.java,可以在定义,Collection,的时候指定,也可以在循环时用,Iterator,指定,好处:,增强程序的可读性和稳定性,BasicGeneric.java,TestMap.java,TestArgsWords.java,BasicGeneric.java,TestMap2.java,泛型,TestArgsWords.java,泛型,课堂练习,为什么,set,中的元素不能重复,add,方法实际执行的是,map,的方法,,并且我们添加的对象是,map,中的,key,value,是执行的同一个对象,PRESENT.,因为,map,中的,key,是不允许重复的,所以,set,中的元素不能重复。,private transient HashMap map;,private static final Object PRESENT = new Object();,public boolean add(E o) return map.put(o, PRESENT)=null; ,总结,Java Collections Framework,一个图,Set,无序,不可,重复,/ List,有序,可以,重复,/ Map,两个类,:,JCF,框架中还有两个很实用的公用类:,Collections,和,Arrays,Collections,提供了对一个,Collection,容器进行诸如排序、复制、查找和填充等方法,Arrays,提供了数组的填充,查找,比较,排序等一系列的对数组的操作,三个知识点,Enhanced For,不重要,Generic,范型,增强程序的可读性和稳定性,Auto-boxing / unboxing,谨慎使用,六个接口,Collection,Set,List,Map,Comparable,Iterator,注意:重写,equals,和,hashCode,方法,BasicContainer.java,TestAutoboxing.java,class,Test1 ,int,i = 0;,Test1(,int,i),this,.i = i;,public,class,MyTest,extends,Test1,public,static,void,main(String args),new,Test1(9);,Map,怎么遍历,为什么是,3,遍,hashcode,equals,equals,重写,equals(),注意用,object,用具体的类就不行了,第八章:流,本章内容,Java,流式输入,/,输出原理,Java,流类的分类,输入,/,输出流类,常见的节点流和处理流,文件流,缓冲流,数据流,转换流,Print,流,Object,流,NIO,简介,Java,流式输入/输出原理,在,Java,程序中,对于数据的输入/输出操作以“流” (,stream),方式进行;,J2SDK,提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过,标准,的方法输入或输出数据。,文件,00101 ,程序,文件, 00101,程序,网路连接,程序,0010111 ,程序,程序,010,010,文件,010,程序,“hello”,流是一个很形象的概念,输入/输出流的分类,java.io,包中定义了多个流类型(类或抽象类)来实,现输入/输出功能;可以从不同的角度对其进行分类:,按数据流的方向不同可以分为,输入流,和,输出流,。,(,以程序的角度来考虑,),按处理数据单位不同可以分为,字节流,和,字符流,。,按照功能不同可以分为,节点流,和,处理流,。,J2SDK,所提供的所有流类型位于包,java.io,内都分别继承自以下四种抽象流类型。,字节流,字符流,输入流,InputStream,Reader,输出流,OutputStream,Writer,节点流和处理流,节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存),数据源,程序,处理流是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。,节点流,数据源,数据源,程序,程序,InputStream,继承自,InputSteam,的流都是用于向程序中输入数据,且数据的单位为字节(8,bit);,下图中深色为节点流,浅色为处理流。,InputStream,的基本方法,/读取一个字节并以整数的形式返回(0255),/如果返回-1已到输入流的末尾。,int read() throws IOException,/,读取一系列字节并存储到一个数组,buffer,,/返回实际读取的字节数,如果读取前已到输入流的末尾返回-1,int read(byte buffer) throws IOException,/,读取,length,个字节,/并存储到一个字节数组,buffer,,从,off,位置开始存,最多,len,/返回实际读取的字节数,如果读取前以到输入流的末尾返回-1,int read(byte buffer, int off, int len),throws IOException,/,关闭流释放内存资源,void close() throws IOException,OutputStream,继承自,OutputSteam,的流是用于程序中输入数据,且数据的单位为字节(8,bit);,下图中深色为节点流,浅色为处理流。,OutputStream,的基本方法,/向输出流中写入一个字节数据,该字节数据为参数,b,的低8位,void write(int b,),throws IOException,/,将一个字节类型的数组中的数据写入输出流,void write(byte b) throws IOException,/,将一个字节类型的数组中的从指定位置(,off),开始的,/len,个字节写入到输出流,void write(byte b, int off, int len),throws IOException,/,关闭流释放内存资源,void close() throws IOException,/,将输出流中缓冲的数据全部写出到目的地,void flush() throws IOException,良好的编程习惯,先,fl
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!