全新java初学者实践教程
更新时间:2023-03-10 15:17:01 阅读量: 教育文库 文档下载
全新java初学者实践教程1(Java SE5.0版)--配置环境变量
作者:100jq
最近我发现不少初学者,学习java的时候,看了好多java的历史、优点和应用范围。
对于这些知识,并不难理解。我也当然同意java是一种优秀的计算机语言。但是对于我们来说要了解的并不是,这些历史等知识。而是掌握java这套技术。要想掌握这套技术实践是非常重要的。那么很多初学者,在第一步实践的时候就遇到了困难,就是配置环境变量。以至于,因无法继续实践而苦恼。下面为了帮广大爱好者解决这个问题,“百家拳软件项目研究室”特别写了这个教程来与大家共享。
环境变量这个概念,是我们平时用电脑时不常用的概念,所以大家在下载完jdk之后,
不知如何配置环境变量。下面我解释一下,环境变量相对于给系统或用户应用程序设置的一些变量。应该怎么理解呢?我们来做一个实验吧!
实践:鼠标单击 开始――>运行――> cmd,进入了DOS的窗口。我们在任意目录下敲
QQ。会出现 “ 'QQ' 不是内部或外部命令,也不是可运行的程序或批处理文件。”这段话 其实也是啊,在当前的目录根本就没有QQ这个文件啊。我的QQ程序安装在 D:\\Tencent\\QQ 下 了。你们做的时候找到这个目录。在dos下进入这个目录,再敲QQ。就会发现弹出了QQ的登陆窗口。那么怎样能使,我们在任何目录下都可以敲QQ就可以执行呢。那就是设置环境变量了。
实践:我们现在桌面上,右键单击 我的电脑――>属性――>选择“高级”选卡――>
环境变量。现示的结果如图1-1
图 1-1
环境变量分为两类,一个是上半部分区域用户变量,另一个是下半部分系统变量。用户变量是只适用于当前用户使用,换了用户就不管用了。而系统变量则是任何用户都可以使用。呵呵,这样说可以理解吧。 我们现在在用户变量里面按“新建”。在变量名里面输入path(不区分大小写)
变量值里面输入你QQ的安装路径,我的QQ安在了 D:\\Tencent\\QQ 所以你们按照自己的来做
哦。
图 1-2
然后一路按“确定”按钮。接着,新打开一个DOS窗口。切记,一定要新打开一个DOS窗口,用原来的是不行的。这回在任意的目录下,敲QQ 回车。就会发现弹出窗口了。大家做出来了吗? 所以现在我来做一下总结性陈词:环境变量相对于给系统或用户应用程序设置的一些变量, 具体起什么作用这当然和具体的环境变量相关. 象path, 是告诉系统, 当要求系统运行一个程序而没有告诉它程序所在的完整路径时, 系统除了在当前目录下面寻找此程序外, 还应到那些目录下去找。当然还有很多的变量啊!以后我们会慢慢的学到。
说了这么多,我们开始开始正式的配置jdk吧!马上就可以敲出java代码了。 实践:1、在sun公司的官方网站下载jdk。或者在百度或google搜索jdk下载。安装j
dk;
2、在“用户变量”中,设置3项属性,java_HOME,PATH,CLASSPATH(大小写无
所谓),若已存在则点击“编辑”,不存在则点击“新建”;
3、java_HOME设为JDK的安装路径(如C:\\Program Files\\java\\jdk
1.5.0_11),此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依靠此变量);
Path使得系统可以在任何路径下识别java命令,设为:%java_H
OME%\\bin
CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%java_HOME%\\lib;%PATH%(要加.表示当前路径) %java_HOME%就是引用前面指定的java_HOME。形如 图1-1
4、打开一个DOS窗口,输入“java -version”。
看看出现了,一大堆的版本信息就说明已经配置成功了。配置已经成功了,我们如何使用
jdk呢?
全新java初学者实践教程2(Java SE5.0版)--“HelloWorld”和jdk的使用
作者:100jq
通过上一节的学习,相信大家已经能够学会如何配置环境变量了。如果还有问题请联系“百家拳软件项目研究室”或者到我们的论坛交流bbs.100jq.com。接下来,我们继续进行吧!
这节我们首先体验一下用java编写的程序。也让大家过把代码瘾,呵呵。目前世界上大部分的软件教程有一个习惯,最开始时总要输出一个字符串“HelloWorld”。我们也是不能免俗啊,也要输出这么一段话。
实践:1、单击“开始”――>运行――>CMD,进入DOS系统。 2、用cd命令进入一个你容易找到的目录。如图2-1
图2-1
3、输入命令notepad Hello.java 用记事本创建并打开一个java文件。 如图2-2
图 2-2 4、在里面输入下列代码
/*
简单的 HelloWorld 程序
*/
public class Hello{
//main方法
public static void main (String args[]) {
System.out.println (\World!\//输出字符串“Hello World!” }
}
本例子,点击此处下载
upload/2007_07/07070220084567.rar 5、在DOS的界面里,敲javac Hello.java 编译这个文件。会发现
文件夹里多了一个Hello.class的文件。如图2-3
图 2-3 6、最后一步,还是在DOS的界面里,敲 java Hello 观察结果。 相信你已经看到结果了吧!
总结
通过上述几个步骤我们体验了java代码原来是这么编写和运行的啊。
那么具体这些东西是什么意思呢?
javac是jdk的编译器,刚才我们输入javac Hello.java的时候意
思是把把Hello.java这个源文件编译成了字节码,就是Hello.class这个文件。
java命令是 java的解释器 java Hello的意思是将编译后的字节
码放在解释器上执行。 从中我们也可以看到java语言的执行过程,是先编译后解释的。
JDK里面还有许多命令呢!下面我们来全面了解一下JDK。JDK的命令为
4类。有基本命令,RMI命令,国际化命令,安全控制命令。在这里我
只介绍些,有代表性的命令。刚才那两个javac和java已经说过了。 他们是基本命令,基本命令里还有jar命令,也是很常用的。Jar命令是java类的归档命令。Jar命令可将多个文件合并为单个JAR归档文件。Jar是个多用途的存档及压缩工具,它基于zip和zlib压缩格式。说的通俗一点就是它是把java的类文件,即*.class文件打包用的。我们来做个例子, 实践:1、在刚才那个目录的DOS窗口里敲jar cvf hello.jar Hello.class 2、观察结果。如图2-4
图 2-4
看看有没有生成一个叫做hello.jar的文件,用winrar打开有没有Hello.class这个文件呢?如果有的话就好了,其实jar命令还可以打很多格式的包哦。上一节我们配置JDK的时候,是不是把CLASSPATH里面配置了一个lib的目录,那里面也有很多jar包。所以说jar命令,是大家要掌握的一个命令。
下一个介绍国际化的命令,JDK里只有一个这样的命令native2ascii,该命令将本地编码字符(既非Latin-1,又非Unicode字符)的文件,转换为Unicode编码字符文件。这是一个处理多国语言字符的命令,都转换为Unicode编码了,就容易处理了。这样开发国际化的软件,是非常方便的。
实践:1、在任意目录里面建立两个文件,一个叫gb2312.txt,另一个叫ascii.txt
在gb2312.txt里面输入“百家拳软件项目研究室”这段话。之后保存。
2、在dos里面进入文件所在的目录。敲 native2ascii -encodi
ng gb2312 gb2312.txt ascii.txt 。
3、打开ascii.txt看看是什么结果呢?里面的有很多符号吧 \百\家\拳\软\件\项\目\研\究\室 这些就
是
“百家拳软件项目研究室”这段话的Unicode编码。
好了这节课介绍了java代码的编写和jdk的一些命令。相信大家
应该有所了解了吧!但是我们要学习一门技术的话,也不能只会编hello world啊。下一节我们将介绍java语言的基础
全新java初学者实践教程3(Java SE5.0版)---- 基本语法1
作者:100jq
上回课,我们学习了并实践操作了一个Hello World的例子,大家显然是没
有解渴。不
过,回过头来有些同学问了。“你写了一大堆,是出字了。不过我不明白是什
么意思啊!
这个不用着急。下面我为大家解释一下这段程序。
1 /*
2 简单的 HelloWorld 程序 3 */
4 public class Hello{ 5 //main方法
6 public static void main (String args[]) {
7 System.out.println (\World!\//输出字符串“Hello World!” 8 } 9 }
程序中的1-3 行是注释行 /*
简单的 HelloWorld 程序 */
“/*……*/”是多行注释,而“//”是单行注释的意思。
第4行
声明类名为Hello,保存时要以Classname.java保存。类名(Classname)是在源文件中指明的,源文件编译后可在源代码所在的目录里生成一个classname·class 文件。在本例题中,编译器创建了一个称为Hello.class 的文件, 它包含了公共类Hello 的编译代码。
public class Hello{ 第5行是一个单行注释
第6行
是程序执行的起始点。java 技术解释器必须发现这一严格定义的点,否则将拒绝运行程序。C和C++语言,也采用main()做为程序的起点。但是与java有些不同,以后的课程会介绍的。 第7行
声明如何使用类名、对象名和方法调用。它使用由System 类的out 成员引用的PrintStreamout对象的println()方法,将字串“Hello World!”打印到标准输出上。
System.out.println (“Hello World!”); 分号“;”是java语言语句的分隔符 第8-9行
那两个花括号是分别和第4行和第6行的花括号配对
数据类型的概述
数据类型对于任何一门计算机语言来说都是重要的,因为变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在java语言里,数据类型分为两大类:
一、基本数据类型。二、复合数据类型(对象数据类型)。 基本数据类型又分4类8种。如下:
? 逻辑型:boolean。 ? 文本型:char。
? 整型:byte,short,int和long。 ? 浮点型:double和float。
复合数据类型就有很多种了,他们都是从Object这个类继承下来的。
下面我想重点的讲一个问题:
文字类型的char和String,这两个都是文本类型。但是不同之处,
1、char是基本数据类型,而String不是,但是String是非常有用的。
2、char是一个16位的unicode(国际码)字符,用单引号引上。例如, char c = ?100jq?; String是一个类。字符串在java里是对象。在java SE 5中有三个类可以表示字符串:
String,StringBuffer和StringBuilder。StringBuilder是jdk1.5的特性,在jdk1.5之
前的版本中没有。字符串要放在双引号中。字符串中的字符也是Unicode 。String对象表示的字符串是不能修改的。如果要对字符串修改,应该使用StringBuffer和StringBuilder类。 实践:
public class Assign { public static void main (String args []) { // 声明整数型变量 int x, y; // 声明并赋值给一个单精度浮点数变量 float z = 3.414f;
// 声明并赋值给一个双精度浮点数变量 double w = 3.1415; // 声明并赋值给一个布尔类型的变量 boolean truth = true;
// 声明字符型变量 char c; // 声明字符串型变量 String str; //声明并赋值给一个字符串型变量
String str1 = \
// 为字符型变量复值 c = 'A';
// 给字符串型变量赋值
str = \out there!\ // 给整型变量赋值 x = 6; y = 1000;
System.out.println(x); System.out.println(z); System.out.println(w); System.out.println(truth); System.out.println(c); System.out.println(str); System.out.println(str1); }
}
错误的赋值举例:
y = 15.454; //y是个整型数 w = 456; //w是个双精度数
将这个程序用上节课的方法,编译执行。就可以看到结果了。 这是基本数据类型的例子 点击此处下载 这节课,我们基本了解了java的数据类型的知识。也知道了基本数
据类型的概念。但是对象型的数据呢?java是面向对象的语言啊,光靠基本数据类型也无法描述客观的世界啊。因为我们不可能说,桌子、椅子是整数,还是字符。所以对象型的数据类型是非常必要的,也是理解面向对象概念的基础之一。请看下节
全新java初学者实践教程4(Java SE5.0版)---- 基本语法2
作者:100jq
上节课给大家留下一个问题,计算机要描述的是现实世界。光有基本数据类型,是不能满足我们的需要的。在这个大千世界里,任何东西都可以看做成对象,
它们当然不能都是整数和文字了。现在学习java的同学,一般会看到一些java的教程里写的一个日期的例子。这个例子是个典型的例子。你们想啊,日期里面有很多属性啊,像是年,月,日。基本类型的数据就不能很好的描述它。就像是人,是一个类型。人有很多属性,头,躯干,四肢,这样的话,我们就更难用基本类型来描述了。
我们还是看看这个日期的例子吧! public class MyDate { private int day; //日
private int month; //月
private int year; //年 public MyDate(int day, int month, int year) { this.day = day; this.month = month; this.year = year; }
public MyDate(MyDate date) { this.day = date.day; this.month = date.month; this.year = date.year; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } public MyDate addDays(int more_days) { MyDate new_date = new MyDate(this); new_date.day = new_date.day + more_days; return new_date; } public void print() { System.out.println(\\+ day + \+ month + \+ year); }
}
在上次课的那个例子里我们已经看到了,class关键字后面是个类名。这个类名就是MyDate。MyDate 这个类里面定义了3个属性,4个方法,2个构造函数。因为还没有讲到这些概念,目前说还是有点超前。我还是先来讲些理论的东西。
理论阐述:
类描述了同一对象都具有的数据和行为。java语言中的类将这些数据和行为进行封装,形成了复合数据类型。创建一个新类,就是创建了一种新的数据类型。在程序中,类只定义一次,而用new运算符可以实例化同一个类的一个或多个对象。比如人是一个类,每一个人就是一个对象。那当然是人定义一次,对象可以new出很多对象了。但是这些具体的人,都具有同样的特征(数据和行为)。
java的类里面有3个东西,看下面: class 类名 { 声明属性; 声明构造函数; 声明方法; }
刚才讲了,类不是要描述现实的数据和行为吗?在这里属性就是要描述封装的数据,方法就是描述行为。构造函数嘛,是在new的运算符后面的,当然是构造对象的了,要不怎么能叫构造函数呢!
顺便说一下,那两个属性的前面有一个private 那是权限修饰符。意思是私有的也就是别人不能用。java语言用这种权限修饰符实现封装。不想C语言的结构体,都是公有的属性,那样是不安全的。就像是人有五脏六腑,那些东西就是私有的。怎么能让谁都碰呢?这就是面向对象的一个重要的概念叫做封装。面向对象一共有三个重要特征(封装,继承,多态)我们以后会学到的。
所以,刚才MyDate那个类里面,有3个属性 int类型的day,month,year .4个方法
setDay(int day),getDay() , addDays(int more_days), print().还有两个构造函数。
看下面的例子如何调用这个类的方法的: public class TestMyDate { public static void main(String[] args) {
MyDate my_birth = new MyDate(22, 7, 1964); //通过第一个构造函数new了一个叫my_birth的对象,并在参数里面赋值
MyDate the_next_week = my_birth.addDays(7); //这个对象调用了addDays(int more_days)的方法,赋值给the_next_week的变量 the_next_week.print(); //调用print()方法 }
} 点击此处下载源码
调用一个类的方法,实际上是进行对象之间或用户与对象之间的消息传递。
实践: 1、 编译上述两个类 ,直接编译TestMyDate.java就行。还记得怎么做吗?
进入DOS界面,到你存放这两个文件的目录下,敲javac TestMyDate.java
2、 然后敲 java TestMyDate 就OK了。
观察结果
总结:
今天我们理解了对象类型的数据类型,也知道了对象和对象之间的调用方式。
再为大家提供些代码吧。点击此处下载
全新java初学者实践教程5(Java SE5.0版)---- 基本类型变量和引用类型
变量
作者:100jq
上两次课我们知道了,java语言中的两种数据类型。这节课呢,我们对上两次课做一个补充,也加深一下理论知识的学习。理论的东西是很有用的啊。这节课介绍基本类型变量和引用类型变量。
java中数据类型分为两大类,上次课已经讲完了,是基本类型和对象类型。相应的,变量也就有两种类型:基本类型和引用类型。基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。引用类型,可是引用类型呢?它是一个对象类型的啊,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。很好理解吧,因为一个对象,比如说一个人,不可能是个数字也不可能是个字符啊,所以要想找它的话只能找它的地址了。
罗唆:
我们在学习计算机的过程中,所谓的难的东西,就是以前没有听过的概念,和不常用的思想。像是这个引用类型的概念就是以前不常用的,基本类型当然好理解不讲大家也知道。所以我们对于这样陌生的概念我们只要多琢磨一下就会明白的。
我们废话少说,接下来看看这两种类型变量的不同处理吧。基本类型自然是简单,声明是自然系统就给它空间了。例如,
int baijq; baijq=250; //声明变量baijq的同时,系统给baijq分配了空间。 引用类型就不是了,只给变量分配了引用空间,数据空间没有分配,因为谁都不知道数据是什么啊,整数,字符?我们看一个错误的例子:
MyDate today;
today.day = 4; //发生错误,因为today对象的数据空间未分配。
那我们怎么给它赋值啊?引用类型变量在声明后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问。举个例子:
MyDate today; //将变量分配一个保存引用的空间 today = new MyDate(); //这句话是2步,首先执行new MyDate(),给today变量开辟数据空间,然后再执行赋值操作。
小总结: 刚才说了一大堆,其实就是一件事。如果是引用类型的变量,必须先得new一个对象出来。不new哪来的对象啊,不new哪有数据空间啊?没有数据空间怎么能访问呢?这回明白了吧!
我们还有个问题没有说,引用类型变量怎么赋值?这个就不是很难了。举个例子:
MyDate a,b; //在内存开辟两个引用空间
a = new MyDate(); //开辟MyDate对象的数据空间,并把该空间的首地址赋给a
b = a; //将a存储空间中的地址写到b的存储空间中 如图5-1
全新java初学者实践教程6(Java SE5.0版)---- 基本语法3
作者:100jq
这节课我们又要讲语法了,这是“百家拳软件项目研究室”这部教程的第6节课,我们这个教程侧重的是实践的内容和语言的重点。在java语言中还有很多细节的东西,请参考sun公司的官方培训教程。我们这里不能一一讲述。这节课我们来给大家提供一些程序流程控制的一些例子供大家学习。计算机怎么做事情,是我们教给他的。我们用它解决实际生活中的问题,所以计算机要描述现实生活中的流程。java语言中提供了4类程序控制语句,来描述流程: 1.循环语句:while,do-while,for
2.分支语句:if-else,switch,
3.跳转语句 break,continue,label: 和return 4.异常处理语句:try-catch-finally,throw
实践:
1.循环语句 while 语句
class While {
public static void main(String args[]) { int n = 10; while(n > 0) { System.out.println(\\+ n); n--;
}
}
}
do…while 语句 class DoWhile {
public static void main(String args[]) { int n = 10; do {
System.out.println(\\+ n); n--;
} while(n > 0); } }
二者区别,do…while至少循环一次,而while的表达式要是为flase的话可以一次也不循环。再通俗一点,do…while就算是括号里的是flase,人家最少也能do一次。
for语句 class ForTick {
public static void main(String args[]) { int n;
for(n=10; n>0; n--)
System.out.println(\\+ n); } }
与上面那两个的区别,for循环执行的次数是可以在执行之前确定
的。通俗一点说吧,看这个例子 for(n=10; n>0; n--)就是在括号里的时候,就已经知道要循环10次了。
还有啊,for循环的部分可以为空的 class ForVar {
public static void main(String args[]) {
int i;
boolean done = false; i = 0;
for( ; !done; ) {
System.out.println(\is \+ i); if(i == 10) done = true; i++; } }
} 循环语句的例子下载
2.分支语句 if/else语句
class IfElse {
public static void main(String args[]) {
int month = 4; // April
String season;
if(month == 12 || month == 1 || month == 2)
season = \
else if(month == 3 || month == 4 || month == 5)
season = \
else if(month == 6 || month == 7 || month == 8)
season = \
else if(month == 9 || month == 10 || month == 11)
season = \ else
season = \Month\
System.out.println(\is in the \+ season + \
} }
//这段程序输出:
//April is in the Spring. // 注意 “||”是或运算
switch语句 class Switch {
public static void main(String args[]) {
int month = 4; String season; switch (month) { case 12: case 1: case 2:
season = \ break; case 3: case 4: case 5:
season = \ break; case 6: case 7: case 8:
season = \ break; case 9: case 10: case 11:
season = \ break; default:
season = \Month\ }
System.out.println(\is in the \+ season + \
}
} 分支语句代码下载
switch语句适合于条件非常多的逻辑
请看上述语句可以混合使用,请看下载例子
循环语句的例子下载 分支语句代码下载 综合使用的代码下载
如有问题请登陆论坛
全新java初学者实践教程7(Java SE5.0版)---- 基本语法4
作者:100jq
昨天我们说有4类程序控制语句,但是才讲了2个。今天讲跳转语句。异常处理语句我们找一节专题来讲。
循环跳转语句 :break [label] //用来从语句、循环语句中跳出。 continue [label] //跳过循环体的剩余语句,开始下一次循环。
这两个语句都可以带标签(label)使用,也可以不带标签使用。标签是出现在一个语句之前的标识符,标签后面要跟上一个冒号(:),标签的定义如下: label:statement; 实践:
1、 break语句 class Break {
public static void main(String args[]) { boolean t = true; first: { second: { third: {
System.out.println(\the break.\
if(t) break second; // break out of second block System.out.println(\won't execute\ }
System.out.println(\won't execute\ }
System.out.println(\is after second block.\ } } }
// 跳出循环
class BreakLoop {
public static void main(String args[]) { for(int i=0; i<100; i++) {
if(i = = 10) break; // terminate loop if i is 10 System.out.println(\\+ i); }
System.out.println(\complete.\ }
} 5个break跳出循环的例子下载 //跳出switch
class SampleSwitch {
public static void main(String args[]) { for(int i=0; i<6; i++) switch(i) { case 0:
System.out.println(\is zero.\ break; case 1:
System.out.println(\is one.\ break; case 2:
System.out.println(\is two.\ break; case 3:
System.out.println(\is three.\ break; default:
System.out.println(\is greater than 3.\ } }
} 这个在昨天的分支语句中,我们就已经学到了。
2、 continue语句 class Continue {
public static void main(String args[]) { for(int i=0; i<10; i++) { System.out.print(i + \\ if (i%2 = = 0) continue; System.out.println(\ } } }
正在阅读:
全新java初学者实践教程03-10
2018年华东师范大学化学与分子工程学院333教育综合之04-26
2018-2023年香茅醇行业产销需求预测及投资咨询报告(目录)03-08
颂竹作文500字06-16
老家的早晨作文300字06-24
倒霉的一天作文500字07-13
弘扬中国传统文化 助力提升党性修养09-10
中考英语复习策略(完型填空全解)08-20
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 初学者
- 实践
- 全新
- 教程
- java
- 同心花园外墙保温施工方案
- 2011版物理一轮精品复习学案:第一章 机械振动 机械波(选修3-4)
- 第三章自我检测题参考答案
- 彩排年会主持词
- 河道治理分部工程验收鉴定书
- GSM0710中文版
- 汽车制造工艺学总复习2017
- 三个中心项目绿色建筑设计专篇-三星级 - 图文
- 市调模板(简化版)
- 2011年 - 浙江公考行测真题解析a
- 浅谈对劳务派遣的认识
- 小小足球赛评课稿
- 2018年第九期中央企业班组长岗位管理能力资格认证通用必修创新与创新管理自测试题及答案
- 江苏省2014届一轮复习数学试题选编3:函数的基本性质(单调性、最值、奇偶性、周期性)(学生版)
- 建筑设计常用规范条文梳理
- 路基路面试验检测(01-10)
- 12个并购重组经典案例分析
- 文献综述写法及结构
- 直接数字频率合成器设计 - 图文
- 中国公办养老机构的改为革改制路径选择