搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Java入门很简单
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787302289425
  • 作      者:
    李世民等编著
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2012
收藏
编辑推荐
  

  Java入门必读经典,Java技术网力荐!零门槛学Java,庖丁解牛式讲解,轻松幽默,看得懂,学得会,易上手
  老鸟经验总结,菜鸟少走弯路,14.7小时配套教学视频,送教学PPT,送大量Java编程实例、模块和案例学习视频

 

  一个Java编程老手,他对Java有透彻、深入的理解;他善用比喻、类比、图解等多种方式讲解,帮助读者理解。

 

  他讨厌单调、枯燥、乏味的说教,代之以拉家常式地娓娓道来;他对Java菜鸟的学习难点了如指掌,主张从实践中学习Java编程。
  他耗费一年多的时间编写了本书,希望能让Java菜鸟在学习中少走弯路。

展开
作者简介

  李世民,毕业于华东理工大学,获控制理论与控制工程硕士学位。研究方向为无线网络中TCP协议传输性能的优化。毕业后长期从事UNIX/Linux服务器系统应用软件的开发及维护工作。热衷于开源软件,对Java有透彻、深入的理解,自2004年至今一直从事Java应用开发。

展开
内容介绍

  “入门很简单丛书”是由清华大学出版社精心打造的一套编程入门图书。丛书强调“零门槛学编程,看得懂,学得会,容易上手”的理念。目前已经出版了十几个品种,涵盖常见编程语言和技术。丛书中的每一本都由经验丰富的编程老手精心编写,讲解细腻,易学好用,视频教学,深受读者喜爱,销量居于同类图书的前列,是近年来不可多得的编程图书。可以说,这套丛书是编程新手上手的最佳读物

  Java编程不难,难的是找到一本真正的好书!茫茫的Java书海中,你找到这本书了吗?如果没有,就请看看本书吧!相信本书便是你要找的那本书。有了本书,相信你拥有了一把打开Java编程之门的金钥匙。本书是一本面向Java编程初学者的书籍,不需要读者有太多的计算机基础知识。《Java入门很简单》讲解通俗易懂,循序渐进,避免云山雾罩、晦涩难懂;语言轻松活泼,用类比、对比、比喻等写作手法,并配合图解教学,对难点给出了必要提示;每个知识点都对应相应的编程实例,便于读者一边学习一边动手实践,既可以提高读者的动手能力,也可激发学习兴趣。《Java入门很简单》配带1张dvd光盘,内容为《Java入门很简单》配套多媒体教学视频、《Java入门很简单》源代码及Java进阶教学视频。

  《Java入门很简单》共12章,涵盖的内容有建立Java语言的开发环境及编写第一个Java程序、了解面向对象的Java、变量和常量、数组、字符串、方法和它的表达式,Java中的语句、继承和多态,Java中的类、输入/输出对象、异常处理,通过Java使用MySQL数据库。通过学习《Java入门很简单》内容,读者可以具备初步的Java开发能力。
  《Java入门很简单》最适合没有基础的Java入门新手阅读;有一定基础的读者,也可通过《Java入门很简单》进一步理解Java语言的各个重要概念和知识点;对于大、中专院校的学生和培训班的学员,《Java入门很简单》也不失为一本好教材。

  正所谓众里寻“她”千百度,暮然回首……咦!貌似是本Java好书!嗯,不错!娓娓道来,亲切自然;不拖沓,不废话,很透彻;看得懂,学得会,很容易上手;老鸟带领菜鸟,零门槛学Java编程;


  超值、大容量DVD光盘

  本书涉及的源程序

  本书配套教学视频(14.7小时)

  377个Java范例教学视频(22小时)

  24个Java开发模块教学视频(9小时)

  5个Java项目案例教学视频(4小时)

展开
精彩书评

  图书市场上不乏大名鼎鼎的Java编程图书,但适合国内读者阅读的Java入门好书却少之又少。幸运的是,《Java入门很简单》是这样的一本书,作者以生动风趣的语言和透彻的分析,引导读者理解Java编程。建议Java入门阶段的读者用心研读,定会大有卑益。                                

  ——中文Java技术网(www.cn-java.com

展开
精彩书摘

  第1章  准备学习Java
  买这本书回家看的人肯定都想学Java编程。要想学Java,首先要了解一下它。有多少人已经了解Java是个未知数,所以在讲解如何用Java来编写程序,让计算机听从自己的命令之前,大致介绍一下Java还是有必要的。另外,Java是一种高级编程语言,用Java直接写的程序是不能被计算机识别的,需要经过编译才能执行。了解编译Java程序的准备工作也是学Java的前提,这也是本章的重点内容之一。好了,现在就让我们认识一下Java吧!
  1.1  Java是什么,什么是Java
  读者看到本节的标题可能会觉得有些奇怪,这两个问题似乎是一回事哦。其实并不尽然,在本节结束前读者会得到这两个问题的答案。也就是说,本节的主要任务就是来回答这两个问题。把这两个问题弄清楚之后,相信大家就会对Java有一个初步的了解。有这个最初的印象,就能顺利地进入后面章节的学习。这只是个开始,俗语有云:万事开头难,所以看不懂没关系,这是最难的部分。
  1.1.1  Java是一种跨平台的计算机编程语言
  先来看看第一个问题吧。要想学Java,第一要务是先搞清楚自己要学的东西是啥。不止如此,对它的前世今生、前前后后、来龙去脉都应该有个大致的了解才是。读者不要被这些话吓倒,从不懂到懂总是需要一个过程的,我们写这本书的目的就是尽可能地缩短这个过程。
  现在网络很方便,可以在维基百科上查到Java的定义——Java是一种电脑编程语言,拥有跨平台、面向对象、泛型编程的特性。既然有了这个定义,那就给大家解释一下。定义中首先提到Java是一种编程语言。不知大家对编程语言有没有一个清晰的概念,在这里简单提一下。
  1. 计算机的编程语言
  计算机是一种能自动进行运算的处理信息的工具,它可以根据一系列的指令对输入的数据进行相应的处理。这些指令、输入的数据和输出的结果都是二进制数(关于二进制数的详细内容可参阅第3章的介绍)。在最初的时候,没有编程语言,只能人工去输入这些由二进制数组成的一组指令,就像图1.1中所描述的一样。这使得人们在用计算机处理数据时,要用的指令不但难记,而且很容易出错。很难想象如果天天跟这些0和1打交道会是一种什么样的情景……

  图1.1  最初计算机的输入及输出方式
  为了方便人们使用计算机,后来随着计算机性能的提高,出现了编程语言。最初的编程语言称为低级编程语言,它们只是简单地对二进制的机器指令码进行命名,然后再由人工或程序将这些指令转换为计算机二进制数指令。这个过程称为“编译”。这相对于二进制数而言,已经相当先进了,结束了人们直接用二进制数同计算机交流的时代。一个简单的汇编语言程序的例子如下:

  MOV DL, 08H
  MOV AH, 2H
  INT 21H

  JMP REPEAT

  大家看到上面这样的代码是什么感觉呢?虽然比二进制数字好了许多,可还是一样看不懂,是不是?随着时代的发展,低级语言已不能满足人们方便地使用计算机的要求。于是高级语言出现了。例如C语言是早期的高级语言,后来出现了C++和Java。Java就是在C++的基础上发展而来的一种高级语言。
  高级语言相对汇编语言之类的低级语言而言更加抽象,也更容易被人们理解。高级语言倒是容易被人们理解,可计算机的理解能力在这些年里并没有提高,它只是速度变得更快而已。所以要想让计算机执行用高级编程语言写出来的程序,必须先将它编译为像图1.1那样的一串由0和1组成的数字才行。让我们省心的是,这件事不用我们自己动手来做,编译器可以轻松搞定。
  用高级语言开发计算机程序的流程如图1.2所示。

  图1.2  高级语言的开发流程示意图
  从图1.2中可以看出,用高级语言编写程序的开发过程如下。首先由我们自己动手编写好程序代码,这是理所当然的第一步。然后用相应的编译器把这些代码编译为计算机的指令,这一步将高级语言的源代码变成了计算机可以直接执行的二进制指令序列。再由计算机来逐个执行这些指令,执行的结果也都是一长串的二进制数字。最后还需要计算机的其他程序或操作系统将这些结果转换为我们习惯用的形式表示出来。
  通过图1.2,是不是已经理解了什么是计算机高级编程语言?Java就是这样一种编程语言!我们要学习的就是这门语言,用它可以教计算机如何更好地为我们做事情,让它按照我们的想法来做事。听起来很酷吧,那就好好学习后面的内容吧!
  2. 跨平台的Java语言
  大家知道了什么是高级编程语言,也懂了高级语言的开发流程。了解了这些还不够,毕竟前面只解释了定义的第一句,说明了Java是一种高级编程语言。后面还有Java的一些特性介绍,诸如跨平台、面向对象等。下面介绍Java的跨平台特性。
  平台就是计算机软、硬件环境的总称。软件方面主要有Windows、Linux、Solaris和Mac OS等平台,硬件有诸如英特尔的x86、IBM的PowerPC等。知道了平台的概念,就不难理解什么是跨平台了。跨平台就是指一个程序可以在不止一个平台上运行。Java的跨平台特性做得很出色,已经基本实现了当初的口号:一次编译,到处运行。
  Java这么好的跨平台性是怎么做到的呢?它是通过在各平台上实现一个统一的Java虚拟机(Java Virtual Machine,JVM)来做到的。Java的程序代码经过Java编译器的编译之后,就得到了和源代码相对应的字节码文件。Java虚拟机可以直接执行这样的字节码,就像是程序直接在计算机上运行一样。只要各种平台上都具备一个Java虚拟机,就能够运行编译好的Java程序。
  这样一来,在任何平台上编写并运行Java程序就变得一样方便了。有关平台的差异性已经和Java程序员无关了,不同平台上Java虚拟机能执行的Java字节码是不变的。Java虚拟机的设计很好地消除了不同平台间的差异性,使Java程序可以拿到任何平台上运行。
  不过要注意的是,实现“一次编译,到处运行”只是一个理想,实际上并没有完全做到这么酷,但至少我们的程序代码是可以拿到各个平台上编译之后运行的。图1.3说明了Java字节码、JVM和各平台之间的关系。

  图1.3  JVM在平台中所处的位置示意图
  从图1.3中可以看到,JVM处于Java编译后的字节码与平台之间。它的上层与Java字节码间是统一的接口,下层可以是各种各样不同的平台。这样通过JVM,Java语言就实现了很好的跨平台性能,能够让编译好的Java程序在各平台上运行出相同的结果。
  到此为止,可以知道Java是一种计算机编程语言,它有很好的跨平台特性。其他特性现在不懂也没关系,我们会在后面相关章节的内容中作出说明。现在只要简单地认识一下Java就可以了,以后会慢慢熟悉它的,不要心急。
  1.1.2  Java的开发及运行环境
  前面讲了Java是一门高级语言,它并不能直接被计算机识别并执行,需要通过编译才能在Java虚拟机中执行。那么,Java的编译器又是个什么东东呢?
  官方Java的开发组件是JDK(Java Development Kit),它是Java开发工具的简称。JDK中包括Java的编译程序javac,它就是传说中的Java编译器。我们所写的所有程序都是通过它来转换成字节码的,以后会一直使用它哦。当然了,JDK当中远不止这一个程序。其他的基本上用不着,所以就不作介绍了。有兴趣可以去网上查一下资料。
  JDK是一个用来开发的工具,它里面包括了Java的运行环境,因为开发完程序肯定要试一试它是否能正确运行。此外,Java还有专门的运行环境,名曰JRE(Java Runtime Environment)。JRE没有编译器,只能用来运行已经编译好的Java字节码程序文件。
  Java虽然在各种平台上都可以运行,但如前面所说,各平台间由不同公司开发出的JVM及Java编译器,多少还是略有差异的。这些小的差异有时会给Java程序的开发及运行带来微妙的、意外的结果。为了避免这种情况发生,现在把本书作者所使用的开发环境列出来,供大家参考,如表1.1所示。如果所使用的操作系统不一致关系也不大,只是结果可能会有小的差异。如果遇到实际运行结果和本书给出的不完全一致的情况,很可能就是这个原因造成的。
  表1.1  本书中程序示例所用的Java开发环境参数
  项    目
  内    容
  操作系统
  Microsoft Windows VISTA Ultimate
  操作系统版本
  Service Pack 2
  系统盘符
  C:\
  编译器版本
  1.6.0_26
  编译器安装目录
  C:\Program Files\Java\jdk1.6.0_20\bin
  JVM版本
  1.6.0_26
  Java程序目录
  C:\Program Files\Java\jre6\bin
  Java程序运行目录
  D:\Documents\Programs\Java

  可以说有了JDK,就能在计算机上开发并运行一个Java程序了。可以说,这套可以开发并运行Java程序的东西如JDK、JRE等,也称为Java。这样的说法虽然不是很准确,但并没有说错。Java并不是一个孤立的代码、程序、虚拟机,它发展到现在已经成为一整套复杂的软件与工具的组合。
  在所有这些属于Java的东西当中,入门者只需要从一个地方找到比较简单的切入点,然后由此开始Java的学习之旅。带领读者由浅入深地学习Java就是本书的主要任务。现在是不是已经理解本小节的标题了?
  1.1.3  Java程序的开发流程
  Java程序是在编译之后在JVM上执行的,这使得它和普通高级语言的运行机制不太一样。在讲解Java的程序设计之前,有必要了解一下Java程序设计的具体过程。Java程序从开发到得到结果大致要经过下面4个步骤。
  (1)由程序开发人员编写Java程序的源代码。这部分就是要学习的主要内容,也是本书重点介绍的东西。
  (2)使完成的代码方便用Java的编译器编译。Java的编译器把代码文件编译为Java虚拟机可以执行的字节码形式,好让JVM来执行这些指令。这个过程中,如果前面写的代码中有语法错误,Java编译器会指出来让你修改,直到没有错误为止。
  (3)用JVM来执行编译得到的字节码文件。这个过程是Java程序的真正执行阶段,程序中指定的任务就是在这个时候由计算机执行的。完成之后就会得到程序的结果,不过,这个结果只是一些二进制数的结果。
  (4)操作系统将JVM得到的二进制数结果转换为指定的格式。二进制数的结果没人喜欢看,所以最后还得由计算机的操作系统来把结果转换成我们在程序中指定的格式并输出。于是,我们就看到了自己编写的程序最终运行出来的结果。
  其中除了第4步,前3步都需要我们输入命令来执行,计算机不会自动完成。对于这个过程更直观的说明,如图1.4所示。图1.4中很清楚地画出了Java程序的开始、编译、运行的各个步骤。主要的工作量会集中在第一步上,这也是我们主要学的东西。

  ……

展开
目录

第1部分 做好准备工作
第1章 准备学习Java
1.1 Java是什么,什么是Java
1.1.1 Java是一种跨平台的计算机编程语言
1.1.2 Java的开发及运行环境
1.1.3 Java程序的开发流程
1.2 让计算机更聪明——Java能做什么
1.2.1 Java的桌面应用
1.2.2 Java的网页应用
1.2.3 Java的手机应用
1.2.4 Java的其他应用
1.3 开始搭建Java环境
1.3.1 JDK简介
1.3.2 JDK的下载及安装
1.3.3 JDK的相关配置
1.4 开发第一个Java程序
1.4.1 Hello,World!程序
1.4.2 Java程序的构成
1.5 如何学习Java
1.6 小结
1.7 习题

第2章 现实世界VS Java世界——了解面向对象的Java 
2.1 万事万物皆对象——理解对象模型 25
2.1.1 程序员眼中的世界——现实世界中的对象 25
2.1.2 什么是“对象” 25
2.1.3 现象世界中的对象 26
2.2 对象之间的差别——事物的属性 28
2.2.1 何为对象的属性 28
2.2.2 对象与属性的关系 30
2.3 万物皆有变化——对象的方法 30
2.3.1 对象的方法定义 30
2.3.2 对象方法的一个示例 32
2.4 “物”以“类”聚——什么是“类” 33
2.4.1 为什么要定义“类”这个概念 33
2.4.2 什么是“类”,类与对象的关系 36
2.4.3 “类”与“类”之间的关系 37
2.5 为什么要面向对象编程 37
2.5.1 面向对象有什么好处 38
2.5.2 面向对象编程的特点 40
2.6 程序中的对象——Java的对象世界 43
2.6.1 Java对象的模具——Java的类 43
2.6.2 从模具到成品——用class定义对象 45
2.6.3 什么是Java中的对象 46
2.6.4 拿来主义——extends的威力 47
2.6.5 对象的“使用说明”——方法的实现 50
2.7 内外有别——对象的封装 51
2.7.1 公开还是保密——访问控制关键字 51
2.7.2 要遵纪守法——对象的操作方式 54
2.8 绝知此事要躬行——自己动手定义对象 56
2.8.1 如何定义一个圆的类 57
2.8.2 如何定义一个圆的方法 59
2.8.3 查看运行的结果 60
2.9 小结 61
2.10 习题 61


第2部分 程序中的数据
第3章 事物的属性——变量和常量 
3.1 如何表示各种各样的属性——属性是由数据表示的 64
3.1.1 数据也不简单——数据是多种多样的 64
3.1.2 计算机比较“贰”——只认0和1 64
3.1.3 小数怎么办——浮点型 67
3.1.4 字母怎么办——字符型 68
3.1.5 只表示“真”和“假”——布尔型 70
3.2 数据也可以“包装”——基本类型的对象类型 70
3.2.1 对象类型给我们带来了什么——对基本类型的特性进行封装 71
3.2.2 仍从最简单的开始——整型的对象类型 71
3.2.3 当然不止是整数类型——其他基本类型的对象类型 73
3.3 数据住在何处——Java的变量 75
3.3.1 先登记,再入住——变量的定义与初始化 75
3.3.2 改变变量的值——为变量赋值 77
3.3.3 变量也玩克隆——变量的复制 80
3.3.4 铁路民警,各管一段——变量的作用域 82
3.3.5 数据“接力赛”——变量作为函数参数 85
3.4 一切因你而变——神奇的自动打包与解包 88
3.4.1 自动打包——基本类型的封装 88
3.4.2 自动解包——打包的逆过程 89
3.4.3 实例分析——事实说明一切 91
3.5 不能改变值的“变量”——常量 93
3.6 小结 94
3.7 习题 95


第3部分 较复杂的数据
第4章 变量的组合——数组 98
4.1 Java中的数组 98
4.1.1 为什么要有数组 98
4.1.2 Java数组的定义 99
4.2 最简单的数组——一维数组 100
4.2.1 Java中一维数组的声明与创建 100
4.2.2 Java中数组的基本操作 105
4.2.3 为什么叫一维数组 109
4.3 数组的数组——二维数组 110
4.3.1 认识二维数组 110
4.3.2 二维数组的初始化 112
4.3.3 二维数组的访问 115
4.3.4 不规则数组 117
4.4 数组的数组的数组…… 120
4.4.1 多维数组的概念及其声明 120
4.4.2 多维数组的创建与初始化 121
4.5 数组的高级应用 123
4.5.1 认识Arrays类 123
4.5.2 数组内容的输出 124
4.5.3 数组的填充 125
4.5.4 数组的复制 126
4.5.5 数组的比较 128
4.5.6 数组的排序 132
4.5.7 数组的查找 134
4.6 小结 138
4.7 习题 138
第5章 字符大派对——字符串 139
5.1 认识String类 139
5.1.1 String类型和字符数组的区别 139
5.1.2 声明与创建String对象 140
5.1.3 字符串的连接 147
5.2 获取字符串的信息 148
5.2.1 求字符串的长度 148
5.2.2 判断字符串是否相等 149
5.2.3 字符串的比较 151
5.2.4 字符串的查找 153
5.2.5 取得子串与判断字符串的开头与结尾 156
5.3 字符串的操作 158
5.3.1 分割字符串 158
5.3.2 大小写转换 159
5.3.3 删除两端空白字符 161
5.3.4 字符串的替换 162
5.4 字符串与其他类型的关系 163
5.4.1 对象及基本类型变量的字符串表示 163
5.4.2 字符串与基本数据类型的相互转换 165
5.4.3 格式化字符串 169
5.4.4 日期和时间的格式化字符串 172
5.5 字符串与字符数组 173
5.5.1 字符串到字符数组 173
5.5.2 复制字符串中的字符到字符数组 174
5.6 StringBuffer和StringBuilder类 176
5.6.1 StringBuffer类的方法 176
5.6.2 StringBuffer类应用举例 179
5.7 小结 181
5.8 习题 181


第4部分 程序功能的实现
第6章 改变变量的值——方法和它的表达式 184
6.1 从函数的角度来理解方法 184
6.2 方法的参数与返回类型 186
6.2.1 static关键字 186
6.2.2 方法的返回类型 188
6.2.3 方法的参数 189
6.2.4 一个例子 190
6.3 方法的“灵魂”——实现 193
6.4 方法中的表达式 194
6.4.1 从小学数学做起——算术表达式 194
6.4.2 总是需要做比较——关系表达式 196
6.4.3 拥有侦探的思维——逻辑表达式 196
6.4.4 返朴归真——位运算表达式 199
6.4.5 表达式举例 200
6.5 Java的其他运算符 202
6.5.1 赋值运算符 203
6.5.2 自增和自减运算符 204
6.5.3 括号运算符 205
6.5.4 条件运算符(conditional operator) 206
6.6 Java表达式中的计算顺序与类型转换 207
6.6.1 运算符的优先级与结合性 207
6.6.2 数据类型转换 210
6.7 小结 214
6.8 习题 215
第7章 不仅仅是表达式——Java中的语句 216
7.1 程序的结构化设计 216
7.1.1 顺序结构(sequence structure) 216
7.1.2 选择结构(selection structure) 217
7.1.3 循环结构(iteration structure) 218
7.2 具体情况具体分析——if判断语句 219
7.2.1 初识简单的if语句 219
7.2.2 if … else语句 221
7.2.3 多层if 语句的嵌套 222
7.2.4 一个if语句的例子 224
7.3 更多的分支选择——switch语句 226
7.3.1 switch语句的语法 226
7.3.2 switch语句的流程图 226
7.3.3 深入了解switch语句 227
7.3.4 switch语句的例子 230
7.4 懒人的福音——循环语句 233
7.5 每人执行一次——for循环语句 236
7.6 更方便使用的for each循环 239
7.7 while和do-while循环 241
7.8 break和continue语句 244
7.9 当一个不再够用——循环也可以嵌套 248
7.10 慧眼识英才——哪种循环适合你 253
7.11 小结 255
7.12 习题 255


第5部分 面向对象的高级内容
第8章 方法的多样性——继承和多态 258
8.1 如何创建对象 258
8.2 对象的构造方法 260
8.3 类的继承 266
8.3.1 继承的概念 266
8.3.2 super关键字 269
8.3.3 构造方法的例子 270
8.3.4 不能被继承的final类 274
8.4 多样的Java方法 274
8.4.3 重载vs覆盖 280
8.5 对象的类型转换 282
8.6 Object类及它里面的方法 291
8.7 小结 295
8.8 习题 296
第9章 形形色色的对象类型——Java中的类 297
9.1 作为类型的类 297
9.2 类中类——嵌套类 303
9.3 抽象类 308
9.4 接口 317
9.5 如何使用Java类库 330
9.6 小结 336
9.7 习题 337
第10章 Java程序的对外接口——输出/输入对象 338
10.1 向Java程序传递参数 338
10.2 基本输入/输出——read()和print() 341
10.3 输入/输出流与文件 346
10.4 文本文件的输入/输出 352
10.5 文本字符流的I/O 364
10.6 bit(字节)流的I/O 373
10.7 具有缓冲区的输入输出 383
10.8 百里挑一——如何选择合适的I/O类 392
10.9 小结 394
10.10 习题 394


第6部分 异常处理机制
第11章 意外的情况——异常处理 396
11.1 异常处理的概念 396
11.2 Java异常的体系结构 400
11.3 Java程序中如何处理异常 406
11.4 定义自己的异常 413
11.5 编写健壮的Java程序 419
11.6 小结 422
11.7 习题 423
第7部分 数据库入门
第12章 通过Java使用MySQL数据库 426
12.1 请个数据管家——MySQL 426
12.2 认识结构化查询语言——SQL 433
12.3 先和“管家”建立联系——用JDBC来连接到数据库 436
12.4 通过Java来操作MySQL数据库 440
12.5 小结 454
12.6 习题 455
附录A A SCII码表 456
附录B:Java运算符表 458
附录C:Java关键字表 460

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证