scjp 学习指南(高清中文版pdf)

4星(超过85%的资源)
所需积分/C币:43 2011-12-01 11:00:07 688KB PDF
113
收藏 收藏
举报

scjp 学习指南中文版九章全,高清晰版,可以系统地检验自己的Java基础知识,值得学习……
int num[= new int[5] 方括号也可以放在数据类型后面或者数组名后面。下面的两种都是合法的 int[ nun; int num 你可以读作: 个名字为num的整型数组 一个数据类型为整型名字为num的数组 Java和CC++数组的比较 Java数组知道它的大小,并且Java语言支持对意外的移动到数组末端的保护。 如果你从Ⅴ isual basic背景下转到Jaa开发,并且还不习惯于一直从0开始计数,这点 是很方便的。这也可以帮你避兔一些在C(C←程序中很难发现的错误,例如移动到了数组末 端并且指向了任意内存地址。 例如,下面的程序会引起一个 Arraylndex OutofBounds Exception异常。 int[ num= new int[5] for(int 1=0; 1<6; 1++i num[]=*2; 访问一个Java数组的标准习惯用法是使用数组的 length成员 例如 int[ num=new in[5]; for(int i=0; i<num length; 1++)& 数组知道它的大小 假如你跳过了CC→+的对照,Java中的数组总是知道它们的大小,这表现在 length字段。 因此,你可以通过下面的语句动态移动数组 int myarray[=new int[ 10] for(int j=0; j<myarray. length; j++& aylil-j 注意,数组有 length字段,而不是 length()方法。当你开始用一组字符串的时候,你 会像 Slength(这样使用字符串的 length方法 数组中的 Icngth是域(或者说特性)而不是方法。 Java数组和Ⅴ isual basic数组的对照 Java中的数组总是从0开始。如果使用了 Option base声明,Ⅵ isual basic可能从1开始 Java中没有跟ⅵ sual basic中可以使你不删狳内容就改变数组大小的 redim preserve命令等价 的语句。但你可以建立一个同样大小的新数组,并且复制现有元素到里面。 个数组声明可以有多个方括号。Java形式上不支持多维数组,但是它可以支持数组的 数组,就是我们常说的嵌套数组 CC++中那样的多维数组和嵌套数组的最主要区别就是,每个数组不需要有同样的长 度。如果你将一个数字当作一个矩阵,矩阵不一定是矩形。按照Java语言规范: (http:/java.sun.com/docs/books/jls/html/10.doc.html#27805) “括号里的数指明了数组嵌套的深度” 在其他话言中,就要跟数组的维度相符。因此,你可以建立一个类似于下面的形式的」 维数组 int i[[: 第一个维度可以匹配X,第二个维度可以匹配Y。 声明和初始化相结合 个数组可以通过一个语句来创建并初始化,这就代替了通过数组循环来初始化的方 式。这种方法很适合小数组。下血的语句创建了一个整型数组并且赋值为0到4 int k[=ncw int[ ( 0, 1, 2, 3, 4) 注意,你没有必要确定数组元素的数量。你可能在测验中被问到下面的语句是不是正确 的问题: int k=new int[5](0, 1, 2, 3, 4//Wrong, will not compile 你可以创建数组的同时确定任何薮据类型,因此,你可以创建一个类似」下面形式的字符串 数组 String sll-new Stringl i Zero","One, two",Three, "Four") System. out. printIn(s[oD; 这句将会输出 String[O] 数组的默认值 不同于其他语言中的变量在类级别创建和本地方法级别创建有不同的动作,Java数组总 是被设定为默认值。 无论数组是否被创建了,数组屮的元素总是设为默认值。因此,整型的数组总是被置0, 布尔值总是被置 Talse。卜面的代码编译时不会出错,并且输出0。 public class array Init( public static void main(String argv& int[ ai= new int[ 10]: Systcm.out.printIn(ai[o 问题 问题1)怎样通过一个语句改变数组大小同时保持原值不变? 1)Use the setSize method of the Array class 2)Use Util. setsize(int iNew Size) 3)use the sized operator 4)None of the above 问题2)你想用下面的代码查找数组最后一个元素的值,当你编译并运行它的时候,会发 生什么? public class MyAr public static void main(String argv& int[ i=new int[s] moutprintIn(i[5]); Compilation and output ofo 2)Compilation and output of null 3)Compilation and runtime Exception 4)Compile time error 问题3)作为一个好的Java程序员,你已忘记了曾经在CC+中知道的关于数组大小信息 的知识。如果你想遍历一个数组并停止在最后一个元素处。你会使用下面的哪一个? 1)myarray. length 2)myarray. length; 3)myarray. size 4)myarray. sitco: 问题4)你的老板为了你写出了 Hello world而很高兴地为你升职了,现在她给你分配了 个新任务,去徹一个踢踏舞游戏〔或者我小时侯玩的曲棍球游戏)。你认为你需要一个多维 数组,下面哪一个能做这个工作? int 1 =ncw int[33]; 2)intl -new int33; 3)int[[ i new int[3[3] 4)int 133]new int[l 问题5) 你希望找到一个更优雅的方式给你的数组赋值而不使用for循环语句,下面的哪一个能做 到? my Array [1]-"One"; [2」="T B3=Three 5 2)String s[5]=new String[ ["Zero", One", Two", Three, Four"3: 3)String s[=new String[ ,"Zero,One", Two, Three", "Four") 4)String s[=ncw String[="Zcro",Onc,Two", Thrcc","Four") 问题6)当你试着编译运行下面的代码的时候,可能会发生什么? public class ardec& public static void main( String arg)& Ardec ad- new Areco ad amethod() public void amcthod(i int ial={1,2,3}; int[ ia2={1,2,3} int 1a3=new int 11, 2, 33 System. out. print(ia3 length) 1)Compile time error, 1a3 is not created correctly 2) Compile time error, arrays do not have a length field 3)Compilation but no output 4)Compilation and output of3 答案 答案1) 4) None of th 你不能改变个数组的大小。你需要创建个不同大小的临时数组,然后将原数组中的内谷 放进去。Java支持能够改变大小的类的容器,例如 Vector或者 collection类的一个成员 答案2) 3)Compilation and runtime Exception 当你试着移动到数组的末端的时候,你会得到一个运行时错误。因为数组从0开始索引,并 且最后一个元素是订4而不是5]。 答案3) 2)myarray. Iength 答案4) 3)into i new int33] 答案5) 3 )String s[-new Stringl,"Zero", One", "Two", Three", "Four") 答案6) 4) Compilation and output of3 所有的数组的声明都是正确的。如果你觉得不太可能,可以自己编译这段代码。 目标二定义类和变量 定义类,內部类,方法,实例变量,静态变量和自动(本地方法)变量,需要合适的选 用允许的修饰词。(例如 public, final, static, abstract诸如此类)。这些修饰词或者单独使用 或者联合使用,定义了包的关系。 本目标需要注意的 我发现目标中用了“诸如此类”,这让我有些烦恼,我想你需要弄明白下面词的意思 native transient synchronized volatile 什么是类? 个类的的定义把它很生硬描述为“方法和数据的集合”。它把面向对象编程出来之前 的编程思想结合起来,这对理解该概念很有帮助。在类和面向对象程序设计前的主要概念是 结构化稈序设计。结构化稈序设计的理念是程序员将复杂问题划分为小块的代码,一般称为 凶数或子程序。这符合“倣一件很大很复杂的事情的好办法是把它分成一系列比较小但更容 易管理的问题”的理念 尽管结构化程序设计在管理复杂性方面很有用,但它不能容易的解决代码重用问题。程 序员发现他们总是“重复发明”轮了。在试着对现实物理对象的思考中,程序设计方面的思 想家找到了面向对象的理念(有时被称为OO) 举例来说,一个计算机厂商准备生产一种新型个人电脑,如果计算机厂商使用类似于程 序设计的方式的话,就要求他建立新团队来设计新CPU芯片,新声卡,没准还需要另一个 闭队设计规划制造新的板。事实上,这根本不可能出现。由于电脑组件接口的标准化,计 算杋厂商只需要联系配件供应商,并商议好他们要生产的新型号的说明书就行了。注意组件 接口标准化的重要性。 比较C++VB和Java的类 因为Java被设计成容易让C++程序员学习的语言,因此两种语言在处理类上有很多相 似的地方。C艹+和Java都有继承,多态和数据隐藏特性,并使用显式的修饰词。有一些不 同也是因为使Java更容易学习和使用。 C++语言实现了多态继承,这样,一个类就可以比一个的父类(或基类)更强大。Java 只允许单继承,这样就只有一个父类。为了克服这个限制,Java有一个被称作接口的特性。 Java语言的设计者确定接口能够提供多态继承的好处而没有坏处。所有Java类都是 Object 类的后代。 对象在 isual basic中是语言设训之后才加入的想法。 Visual basic有时被称作基于对象的语 言而不是面向对象的语言。这就好像是语言的设计者认为类很酷,然后随着VB4的发布, 他们决定加入一个新类型的模块,称它为类并且加上冒号,让它看起来更像C→+。VB的类 概念中失去了至关重要的元素:继承。微软在VB5中加入了跟Java的接口很相似的接口的 概念。VB类和Java类的最主要相似之处是引用的使用和new关键字。 Java中类的角色 类是Java的心脏,所有的Java代码都在一个类里。Java里没有自由独立代码的概念 甚至最简单的 Hello world应用都是包含在类里被创建的。为了指出一个类是另一个类的派 生类,我们使用 extend关键字。如果 extend关键字没有被使用,这个类将是基类 Object派 生的。这可以使它有一些基本的功能,比如打印自己的名字和其他一些在线程中可能需要用 到的功能。 类的最简单特性 定义一个类全少需要 class关键字,类名和一对花括号。如: class classnamc D 如果不是有特别作用的类,它在语法上是止确的(我很惊讶的发现,当我举例说明继承 时,我定义了一个跟着类似的类)。 通常,一个类还会包括一个访问修饰符,放在关键字 class前面,还会有程序体放在花 括号之间。下面的是一个史好的类模版: public class classname ∥ Class body goes here 创建一个简单的 Hello world类 这里有一个简单的 Hello world程序,它将会向控制台输出“ hello world public class Hello World i public static void main( String argyI System. out printIn("Hello world); F//End class definition 关链字 public是一个可见的修饰符,指明了这个类对于其他类来说都是可见的。一个文 件只有一个外部类可以声明为 public。内部类将会隐藏在任意位置。如果你在一个文件中定 义了多于·个的 public类,将会发生个编译期错误。注意,Java对每部分都是很敏感的, 包含这个类的文件名字必须是 Hello world. java。当然,这跟微软平台虽然保护但是却忽略文 件的大小写有些差别 关键字cass指明」一个将被定义的类,并且类名是 Hello world。左花括号表明类的开 始。注意,类结束的右花括号后面没有分号。注释语句 /End class definition 使用了CC艹+中同样允许的单行类型。Java也能够识别*的注释模式。 创建一个类的实例 上面措述的 Hello world应用例子很浅显的告诉了你所能创建的最简单的应用,但是它 漏掉了使用类时至关重要的元素,那就是关键字new的使用,new指出了一个类的新实例 的创建。在 Hello world应用中,因为只有 System. out println这个唯一的satc方法,并且不 需要类使用new关键字创建,因此创建新实例不是必要的。 static方法只能访问 static变量。 可以稍微改进一下 Hello world应用,下面举例说明一个类的新实例的创建 public class Hello World2 i public static void main(String arg i Hello world2 hw= new Hello world20 hw methode public void amcthodot System. out. printIn ("Hello world") 上面的代码通过这行代码创建了自己的一个新实例 Hello world2 hw= new Hello World20 这是使用类创建新实例的一个基本语法。注意类的名字怎样出现了两次。第一个指明了 类的引用的数据类型。这需要它不能和new关键字所修饰真正的类的名字相同。这个类实 例的名宇是hw。这仅仅是给变量选择的名字。这里有一个命名习惯,一个类的实例名以小 写字母开头,而类的名字以人写字母开头。 创建方法 在上一个例子 Hello world2中,一个Java中的方法跟C/CH+中的函数和Ⅴ sual basic中 的子程序很相似。上例中名字为 amethod的方法和木例中的 amethod方法被声明为 public, 这说明它可以在任何地方被访问。它有一个返回值void,表明没有值返回。并且括号中也是 空的,表明它没有参数 同样的方法可以从下面几种方式之中选择: private void amcthod( String S private void amethod(int i, String s) protected void amethod(int 1) 这些例子说明了一些典型的方法签名。使用关键字 private和 protected说明它们将会在 别处隐藏。 Java方法和其他像C这样的非面向对象语言的方法的区别是Java方法属于类。这衣明 它们通过点号指明代码属于哪个类的实例来调用。( static方法是一个例外,但我们现在无需 担心) 因此在 Hello world中 amethod通过卜面的语句调用 Hello World hw ncw Hello World hw. amethodo 在 Hello world类中创建的其他实例中,方法被类的每个实例所请用。每个类的实例将 能够访问它自己的变量。因此下面的代码将调用不同实例的 amethod方法 Hello World hw= new Hello World(; Hello World hw 2-new Hello World hw methode hw2. amethodo 类的两个实例hw和hw2可能访问不同的变量 自动局部变量 自动变量是方法变量。它们在方法代码开始运行时生效,并在方法结束时失效。因为它 们门只能在方法内可见,因此临时操作数据时比较有用。如果你希望一个值在方法被调用时休 持,你需要将变量创建在类级别。 个自动变量将“屏蔽”类级别的变量。 因此,下面的代码将打印99而不是10 public Shad public int sHad=10 public static void main(String argyi Shad s= new Shado: S methode public void amethodoi Chad-9 9 System. out. printIn(shad); B//End of amethod 修饰语和封装 修饰符的可见性是Java封装机制的一部分。封装允许分离方法执行的接口。修饰符的 可见性是Java封装机制全关重要的部分。封装允许分离方法执行的接口。带来的好处就是 类内部的代码的细节可以被改变,同时不影响其他对象的使用。这是面向对象设计(最后不 得不在某处使用这个词)的一个关键概念 封装一般用找回或更新 private类的变量值的方法的形式。这些方法一般是 accessor或 mutator方法。访问方法找回值而设置方法改变值。命名惯例是这些方法名类似于 setFoo改 变值, gctFOO得到值。注意,使用st和gct来命名的方法比仅仅使程序员感到方便更重要 并且是 Javabean系统的重要组成部分。不过我们的测试还没有涉及到 Javabean的内谷。 0

...展开详情
试读 127P scjp 学习指南(高清中文版pdf)
立即下载 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
renchao123yy 还是挺不错的资源
2016-02-27
回复
二十生 高清版,初学者 可以看看
2015-10-22
回复
King658 资源很好啊~
2015-03-31
回复
一只代码汪 一般吧 感觉没什么用
2015-02-26
回复
zh119 不是正版的SCJP学习指南。
2014-09-14
回复
zjkcome 骗分的,都不是这个书名; 内容还是可以用的,这个看各人的情况。
2014-06-24
回复
warningerror 普通的教材,不好不坏 个人感觉
2014-05-25
回复
xituzi 真的很不错。看起来易学易懂
2014-05-12
回复
hackerhaohao 很清晰,有主意知识点的查缺补漏!
2014-05-03
回复
山清泉 很好,知识很全哇
2014-04-10
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
scjp 学习指南(高清中文版pdf) 43积分/C币 立即下载
1/127
scjp 学习指南(高清中文版pdf)第1页
scjp 学习指南(高清中文版pdf)第2页
scjp 学习指南(高清中文版pdf)第3页
scjp 学习指南(高清中文版pdf)第4页
scjp 学习指南(高清中文版pdf)第5页
scjp 学习指南(高清中文版pdf)第6页
scjp 学习指南(高清中文版pdf)第7页
scjp 学习指南(高清中文版pdf)第8页
scjp 学习指南(高清中文版pdf)第9页
scjp 学习指南(高清中文版pdf)第10页
scjp 学习指南(高清中文版pdf)第11页
scjp 学习指南(高清中文版pdf)第12页
scjp 学习指南(高清中文版pdf)第13页
scjp 学习指南(高清中文版pdf)第14页
scjp 学习指南(高清中文版pdf)第15页
scjp 学习指南(高清中文版pdf)第16页
scjp 学习指南(高清中文版pdf)第17页
scjp 学习指南(高清中文版pdf)第18页
scjp 学习指南(高清中文版pdf)第19页
scjp 学习指南(高清中文版pdf)第20页

试读结束, 可继续阅读

43积分/C币 立即下载