Java完美教程第三版笔记3-4章
- 格式:wps
- 大小:44.00 KB
- 文档页数:7
第三章1.If2.If-else3.Switch4.布尔表达式Equals和equalslgnoreCase方法:测试字符串是否相等时,不要用==,而是用String类的equals或equalslgnoreCase(不区分大小写)方法。
语法: String.equals(other_String)String,equalslgnoreCase(Other_String)例: String s1; if(s1.equals(“hello”)) System.out.println("The String is Hello!")5.优先级和结合规则:(句点运算符,数组索引,方法调用,【】,()《左到右》) > (后自增,后自减《右到左》) > (单目运算符+、—,前自增,前自减,!) > (类型转换(Type)《右到左》) > (* , / ,%) > (+,-) > (< , > ,<= ,>=) > (==,!=) > (&) > (|) > (&&) > (||) > (?: <右到左>) > (赋值运算符:=,*=,/=, %=, +=, -=, &=,|=)6.大多二进制运算符都是从左到右结合的,但是赋值运算符是从右到左结合的当赋值运算符=在一个表达式中使用时,它改变赋值运算符左边的变量的值,同时还返回一个值,即表达式左边的变量的新值。
注意:一定不成立的:两个运算符的优先级相等,但是一个的结核性从左到右,另一个的则从右到左。
7.result = (++n) + (other = (2 * (++n))) 当n的值为1时,result为8注:对一个表达式求值时,Java使用如下三个规则。
1)Java首先进行绑定;即运用优先级和结合规则,首先将表达式完全加上括号2)然后从左到右对任何子表达式进行求值。
3)如果一个运算符等待他的两个(或者三个)操作数被求值,那么它操作数一旦求出来就对该运算符求值、Ctrl+C 可以强制终止一个程序Break可以结束任何包含他的循环,而不仅仅是包含他的最里面的循环。
跟C语言中的goto语句用法类似。
实际上一种加标记的break总是结束带匹配标签的附属语句,而不管被标记的是那种语句。
System,out.exit(0); 此语句立即结束程序的运行跟踪变量是调试循环的好方法断言检查:断言是一个表明(断定)有关程序状态的某种条件的句子。
它必须是一个true 或false的句子,而且当程序没有错误时(即程序正确进行),则断言一定是true:Int n = 0; i int n = 0;Int sum = 0; int sum = 0;//n = = 0 and sum == 0 assert (n == 0)&&(sum == 0)While(n < 100) 断言{n++;Sum = sum + n;//sum == 1+2+3+......+n}//sum = = 1 + 2 + 3 +....+100一个专门检查断言是否为true的语句:assert Boolean_Expression;在断言打开的情况下这样运行程序:Java -enableassertoins YourProgram第四章、类的定义一、数据项有时也称为字段。
二、Return语句总是结束一个方法的调用,return语句一执行,该方法就结束,并且该方法中剩下的任何语句都不执行。
三、任何方法都可以当作void方法使用,它只执行操作,而返回的操作数将被遗弃。
四、代码块是符合语句的别名即用花括号{}括起来的java语句。
然而,程序员往往在不同的上下文中使用这两个术语。
如果在一个复合语句内声明一个变量,通常把这个复合语句叫代码块。
equals和toString的方法通常,类定义应当包含一个equals方法和一个toString方法。
equals方法将主叫对象与另一个对象进行比较,如果这两个对象相等,应当返回true。
标胶一个类类型的对象时,通常使用equals方法而不是==。
toString方法应返回一个代表主叫对象的字符串,如果一个类有一个toString方法,就可以使用该类的一个对象作为System.out.print方法的自变量。
一个仅对方法进行测试而不做任何其他事情的程序叫做驱动器程序。
方法测试的基本规则每个程序都应当在一个程序中经过测试,并且测试程序中的其他每个方法都已经经过完全测试和调试。
封装封装值将数据和操作组成一个单独的项目(这里指类对象),并将实现细节隐藏起来。
信息隐藏和封装涉及相同的基本原理:如果一个类进过精心设计,那么使用该类的程序员就不需要知道他的全部实现细节而只需要知道如何使用该类。
APIAPI是指应用程序编程接口(application programming interface )。
一个类的API是对如何使用该类的描述。
如果使用本书中讨论的封装技术,精心设计类,那么使用类的程序员只需要知道API,而不需要知道类定义的代码细节。
ADTADP是指抽象数据类型(abstract data type)。
ADP是一种使用良好的信息隐藏技术编写的数据类型。
赋值方法一般以set开头取值方法一般以get开头赋值方法可以返回一个布尔值以此来检查是否达到了修改的目的一种给方法加注释的好办法是把它分成两种信息:前条件(precondition)和后条件(postcondition)前条件是:规定调用该方法时应该成立的条件。
后条件是:规定方法调用的结果。
即方法调用后应该满足何种状态。
一个类可以访问该类的所有对象的私有成员在一个类的定义中,可以访问该类的任何对象的私有成员,而不仅仅是主叫对象的私有成员。
即在类的定义可以随意使用对象名点私有成员。
方法签名方法签名包括方法名以及该方法名的头部列出的参数类型列表。
注意返回类型不是方法签名的组成部分。
重载与自动类型转换Java在尝试使用自动类型转换前,总是会查找一个完全与方法调用相匹配的方法签名。
如果Java可以找到一个完全与自变量类型想匹配的方法定义,它就使用该定义。
只有在它找不到完全匹配的方法签名时,才会尝试自动类型转换,以找到一个与该方法调用的(类型转换后)类型相匹配的方法定义。
在Java中不能重载运算符很多编程语言(如c++)允许重载运算符(如+),使用该运算符能够与定义的某个类的对象结合使用,以及用于数值等。
如果希望自己的类中有一个“加法”,必须使用一个方法名(如add)和一般的方法法语法:而不能定义运算符(如+运算符)来操作定义的类的对象。
默认的变量初始化实例变量自动的被初始化为0。
Boolean类型的实例变量自动的被初始化为false,而其他类型的实例变量自动被初始化为各自类型的0。
类类型的实例变量自动的被初始化为Null,这是类的一种占位符在以后进行填充。
StringTokenizer类的一些方法用来还原一个多词字符串中的单词。
通常在读取输入时使用。
StringTokenizer类的一些方法包含在Java.util包中。
Public StringTokenizer(String theString)StringTokenizer构造方法,它在查找theString中的标记时,将使用空白符作为分隔符。
Public StringTokenizer(String theString, String deliniters)StringTokenizer构造方法,它在查找theString中的标记时,将使用delimiters 字符串中的字符作为分隔符。
Public boolean hasMoreToken()测试标记化器(tokenizer)的字符串中还没有其他标记。
当它与nextToken方法一起使用时,只要nextToken方法还没有返回该字符串中的所有标记,它就返回true;否则返回false。
Public String nextToken()返回该标记化器的字符串中的下一个标记(如果没有标记要返回,则抛出NoSuchElementException)。
Public String nextToken(String delimiters)首先将分隔符改变为delimiters字符串中的那些字符。
然后返回该标记化器的字符串中的下一个标记。
该调用完成以后,分隔符是delimiters字符串中的那些。
如果没有标记要返回,则抛出NoSunchElementExveption。
如果delimiters等于null,则抛出NullPointerException。
Public int countTokens()返回nextToken还没有赶回的标记数。
例子:StringTokenizer wordFactory = new StringTok(“A single word can be critical.”);//构造方法While(wordFactory.hasMoreTokens()){System.out.println(wordFactory.nextToken());}第四章总结对象即有实例变量,又有方法。
类是一个值为对象的类型。
一个类的所有对象有相同的方法和相同的类型的实例变量。
有两种主要的方法:返回一个值的方法和void方法。
(一些特殊的方法,如构造方法,既不是void方法,也不是放回一个值的方法。
)定义一个方法时,this参数是一个用于主叫对象的名称。
一般情况下,自定义的类应同时包括equals方法和toString方法。
如果一个实例变量或方法被标记为private,则除非在相同类的某个方法的定义中,否则在任何其他地方都不能直接引用它。
在定义私有实例变量的类的外部,通过取值方法(accessor)访问它(方法名通常以get开头),通过赋值方法(mutator)修改它(方法名通常以set开头)。
一个方法中声明的变量称为局部变量。
局部变量的含义是限于在声明它的方法内使用。
方法调用结束时,局部变量消失。
一个局部变量的名称在申明她的方法的外部可以重新用作其他变量。
参数就像一个方法定义中的一个空格,在该方法被调用时用一个自变量进行填充。
参数实际上是一个局部变量,被初始化为对应的自变量的值。
这就是所谓的按值参数传递机制。
如果一个变量被用作一个方法的自变量,则只是把该变量的值(而不是变量本身)带入相应的参数类定义通常包括一个无参构造方法。