《Java SE 6.0 编程指南》学习笔记

   前几个星期从学校图书馆借来《Java SE 6.0编程指南》由吴亚峰和纪超老师编写,讲解详细,写得很好。书很厚,但觉得这么一股脑地看下去也不是办法,于是把其中目前我不甚了解或者容易忽略的知识点记录了下来。3天前开始看,认认真真地看了100多页,现把3天的东西都粘贴一下吧,希望以后能坚持下来,争取每天或几天一更。

   2011-05-12
1、double的精度是float的两倍(精度指小数点后的位数)。
2、JavaSE5之前,浮点型只能用十进制表示,之后可以用十六进制表示。如0.125=0X1.0p-3(“p”是power,指数,非“e”)。
3、boolean型不能用0或1表示,即只能用true或者false。
4、比int级别低的数据类型(byte和short)参加运算,都要先转化为int型再运算;比int高的则照旧。即两个数值型数据进行运算时,结果至少是int。取负运算是其特例:
                                     byte a=-2;
                                     byte b=-a;
编译报错,原因是取负时,-a会提升为int型。改为byte=(byte)-a;另外,位运算也有此规律,而自增或自减没有此规律。
5、可用""+i将数值型数据转化为字符串。
6、关于求余运算符(%):①忽略正负,即如15%-4、-15%4、-15%-4两两相等;②浮点数也可求余
7、自增和自减分前缀和后缀。自增或自减在单独表达式中无甚差别;在表达式中时,前缀先计算自增(自减),再计算表达式。后缀先计算表达式,再计算前缀(后缀)。
8、==和!=特殊情况下可用于判断是否为正负无穷(常量分别是:Double.POSITIVE_INFINITY和Double.NEGATIVE_INFINITY),如12.0/0==Double.POSITIVE_INFINITY,返回True。但不能判断由12.0%0=NaN所产生的“NaN”(意为不知道)。Java规定:“结果”==Double.NaN返回false;“结果”!=Double.NaN返回true(这里假设“结果”为NaN,如果“结果”不是NaN,返回值与前述一致)。
9、数值与正无穷、负无穷是有意义的(正无穷比任何数都大,负无穷比任何数都小);数值与NaN比较无意义,Java规定,任何数值与之比较返回均为false。
10、与运算符分“&&”和“&”,前者如遇到“&&”的前半部分为false时,后半部分则不会执行,立即返回false;而“&”总是执行前后两部分。&&效率比&高。或运算符也分“||”和“|”,理同与运算。
11、三元运算符。形式()?1:2中,
①如果表达式1和2的数据类型如果不同,要求其能相互转化。如1为boolean型、2为int型,则编译出错。
②返回值类型与1、2的关系,遵循如下规则:(1)不同型的数值型数据类型,尽量窄化,不能的返回高级别;(2)变量不能窄化,返回二者中最高级别类型;以上的规则目的是使返回值尽量窄。

2011-05-13
1、赋值语句也是一个表达式,有返回值:a=b,返回b。借此可从根本上解析诸多现象。
2、位运算:移动位数个位,结果为0。如int i=88>>32;long=67>>64;则i=j=0。
3、else在没有花括号限制情况下,总是与离其最近的if配对。
4、switch的根本执行流程为:各case值与判断表达式配对,配对情况分两种:
①有匹配的case值,则从此开始执行,直至遇到break;
②无匹配的case值,则从default开始执行,直至遇到break;
5、for(int i=0;...;...)中,i的作用域为循环体。即循环体外可再次声明i,所以在同一个类中同时使用多个for语句而不需要考虑声明语句的重复问题。
6、编程中的反面思考。比如要打印1到100中不能被3、5整除却能被7整除的数。正面思考虽然可以,但编出的代码很复杂,从反面思考可以写成:   
 程序简单明了,提高了可读性。也即,配合循环语句和continue可剔除集合中满足某条件的成员。
7、String是系统定义的一个类,非基本数据类型。此情况与数组类似。
8、null表示引用没有指向任何对象。如代码:Sting []s=new String[1];int []n=new int[1];打印s[0]和n[0],分别是null和0。
9、main方法中,“String []args”表示方法的入口参数,是一个字符串数组,起元素是执行程序是输入的命令行参数,有几个参数args.length就等于几。“args”是数组名,可任意更换。
10、方法参数个数不定,Java SE5.0后,可声明一种参数个数变化的方法,举个例子:
                                       public static void Name(int...entrys){}
等效于5.0以前的
                                       public static void Name(int [] entrys){}
调用时,可以Name(2,3,6);也可Name(5,6,9,7,4);等效于将2,3,6或5,6,9,7,4赋给entrys[],再执行以前的方法。这样就方便点了。使用可变长参数时,遵循:①一个方法只能有一个可变长的形参;②若方法的参数不止一个,可变长参数需为最后一个。如方法methodName(int x,String y,int...entrys),不能将最后的int...entry提前。

2011-05-14
1、成员变量自动赋初始值,局部变量不能。
2、成员变量与局部变量同名时,系统将访问局部变量。
3、使用多个import语句不影响程序的运行效率,因为import只在编译的时候有作用。
4、关于引入类的使用,考察如下两个例子:
①某包A、B同时含有类C(假设A、B都在java包中),现需分别引入包A、B中的多个类,以及包A中的类C而不引入包B中的类C。若写成:
                  import java.A.*;
                  import java.B.*;
则系统会报错,原因是使用类C时,系统不知应匹配A中的C还是B中的C。正确写法应为:
                  import java.A.*;
                  import java.A.C;
                  import java.B.*;
②前提与①相同,不同的是要同时引用A包的C和B包中C。若写成:
                  import java.A.*;
                  import java.A.C;
                  import java.B.*;
                  import java.B.C;
则系统会报错,因为特定名的类只能引用一次,解决办法不能从引用下手,要从程序下手:
                  import java.A.*;
                  import java.B.*;
                  public class Test{
                        java.A.C c1=new java.A.C();
                        java.B.C c2=new java.B.C();
                       //...
                  }
除了以上,引用的时候要了解:
(1)系统会优先匹配import语句中明确给出类名的类;
(2)不能具体地引用同名类,如例子② 的错误写法。
5、Java SE 5.0开始,import语句可引入静态方法和静态成员变量。形式为:
import static <包名>.<类名>.*;//指引用某类下的所有静态方法和成员变量
import static <包名>.<类名>.<具体方法或成员变量名>;//指引用特定的方法和成员变量
引用之后就可以在程序中直接使用已引用的方法或成员变量了。实际的编程中很少使用静态引入,因为这会降低程序可读性。如import static java.lang.System.*,后程序可直接使用out.println()打印字符串,由此就会降低可读性。但此并非一无是处,某些时候使用静态引用后,更符合自然地阅读习惯。如,import static java.lang.Math.*;之后可以直接写PI来表示圆周率,sqrt()来计算平方根,比Math.PI、Math.sqrt()更方便更自然。
6、类与源代码的搭配:
(1)一个源代码文件中可有多个类,但只能有一个公共类,类出现的次序不规定;
(2)文件名必须与公共类相同,无公共类时文件名可为任意合法名;
(3)导入语和包语句作用于文件的所有类。
7、成员访问控制中的默认类型(即不加任何限制修饰符),该成员只在同一个包中是可见的。即,同一包中,相当于public型,不知同一包中是private型。
8、protected型,与默认差不多,不同的是位于包外的类只能通过继承来访问该成员。















  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值