《张孝祥JAVA就业培训教程》书摘

1.java虚拟机及java的跨平台原理:
图P2
       java兼顾解释件与编译性语言的特点,java源文件转换成.class字节码文件的过程是编译型的,.class在操作系统上运行的过程则是解释型的,Java虚拟机充当了解释器的作用。


2.java(虚拟机)的运行过程:
    运行JVM字节码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验和代码的执行。

3.Java字节码的执行有两种方式:
    (1)即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
    (2)解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作。
    通常采用的是第二种方法。由于州规格报述具有足够的灵活性,这使得将字节码翻译为机器代码的工作具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。

4.反编译工具:
JAD(只能在DOS下运行)
FrontEnd(JAD的一个图形化操作界面,它的反编译引擎就是jad.exe)


5.java程序的注释:
 /*...*/中可以嵌套“//”注释,但不能嵌套“/*...*/”,例如,下面的注释是非法的:
  /*
  /* int c=19;*/
  int x=5;
  */

6. System.out.println()除了可以在屏幕上打印字符串外,还可以支接在屏幕上打印其他类型的数据,  读者再想想System.out.println('a'+1)在屏幕上的打印结果与System.out.println(""+'a'+1)在屏幕上的打印结果有什么不同呢?前者将字符'a'与整数1相加后得到的结果是整数98,后者将一个空字符串与字符'a'相连后再与整数1相连形成一个新的字符串"a1"。

7.    读者在日常的编程当中,尽量多读一些别人优秀的源程序、积累一些好的算法,这样对你以后的工作会有很大帮助。如下面的留言板分页问题和走马灯问题,有的程序员可能会用到一大堆的if else和for语句未判断和循环,作者在这里给出两个经典的算法。
    思考题1:某个培训中心要为新到的学员安排房间,假设共有x个学员,每个房间可以住6人,让你用一个公式未计算他们要住的房间数(千万不要像我以前的有些学员开玩笑、说男生和女生是不能分在一块的,我们就不在这考虑了)。
    答案:  (x+5)/6。这种算法还可用在查看留言根的分页显示上,其中x是总共的留言数,6是每页显示的留言数,结果就是总共有多少页。
    思考题2:假设你要让x的值在0至9之间循环变化
    答案:
    int x=0;
    while(true)
    {
    x=(x+1)%10;
    }
    这样,x的取值总在0与9之间循环。


8.“&”和“&&”的区别在于,如果使用前者连接,那么无论任何情况,  “&”两边的表达式都会参与计算。如果使用后看连接,当“&&”的左边为false,则将不会计算其右边的表达式(短路)。  “|”和“||”的区别与“&”和“&&”的区别一样。


9.移位运算:
<<左移:补0
>>右移:看最高位,高位为0则补0,高位为1则补1
>>>无符号右移:补0
注意:以上移位运算符适用数据类型有byte、short、char、int、long。
    1.对低于int型的操作数将先自动转换为int型再移位。
    2.对于int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数。例如:a>>33和a>>l结果是一样的,a>>32的结果还是a原来的数字。
    3.对于long型整数移位时a>>b,则是先将移位位数b对64取模。
   
      移位能为我们实现整数除以或乘以2的n次方的效果,如:x>>1的结果和x/2的结果是—样的,x<<2和x*4的结果也是—样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:屏幕上每个像素的颜色用一个8位的二进制数据表示,那么屏幕上最多能显示多少种颜色?这其实就是如何用程序实现求2的x次方的问题。答案:y=1<<x
      移位不会改变变量本身的值。如a>>1;在一行语句中单独存在,毫无意义,因为它没有改变a的值,也没有把它赋值给别的变量。作者在深史半夜编程时,常犯这错误,也帮不少人排除过类似的错误。

10.while循环语句中while()没有“;”,而do while语句中的while()后有“;”


11.for语句还可以用下面的特殊语法格式:
  for(;;)
  {
   .......
  }
同样意义的还有while(true),这些都是无限循环,需要用break语句跳出循环

12. Java把内存划分成两种:一种是栈内存  另一种是堆内存。
       在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块(也就是一对花括号{}之间)定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放并为该变量所分配的内存空间,该内存空间可以立即被另作他用。
       堆内存用来存放由New创建的对象和数组,在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象,引用变量就相当于是为数组或对象起的一个名称。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它时,才会变为垃圾,不能再被使用,但仍然占据内存空间不放,在随后一个不确定的时间被垃圾回收器收走(释放并)。这也是Java比较占内存的原因。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书主要是冲着实际应用而来的,共分11章。在刚开始的第一章就详细地讲解了Java开发环境的搭建、反编译工具的使用、JDK文档资料的查阅,Java程序的编译、运行过程。在第二章中,全面地讲解Java的基本语法知识,对基本语法的讲解也不是泛泛而谈,而是在其中贯穿各种实际应用中的巧妙用法和注意事项。在第三章和第四章中,透彻系统地讲解了面向对象的思想和应用。在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式交流,或源于某些成功的案例与作者的经验、心得,但这些东西对新手来说,是很难自学到的。作者从事了多年的软件开发和培训教学,非常清楚那些容易使新手困惑的问题,在学习过程中会碰到的拦路虎,作者结合了多年实际开发与教学经验,收集了众多学员在学习中常提到的问题,对平时讲课的内容进行了精心整理。读者从本书中不仅可以学习到Java本身方面的知识,还能学到了许多编程思想和实际操作手法,仿佛老手就在你面前进行现场演示一样。本书不仅全面的介绍Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。 本书不仅讲概念,讲怎么做,还告诉读者为什么;不仅讲操作技能,还贯穿一些系统的理论,这样读者才不至于不明不白,或是似乎明白,但不知道具体该怎么干。本书一步步引导读者深入,使读者轻松愉快、兴趣盎然、水到渠成、潜移默化地掌握Java编程及许多其他的软件开发思想。 本书语言流畅,内容翔实,分析透彻,是一本适合广大计算机编程爱好者的优秀读物。本书结构合理,图文并茂,实用性强,适合于广大有经验的开发人员来迅速转换到Java语言,对广大初学计算机编程语言的爱好者来说,这本书就是非常好的切入点。本书基本理论知识完备,又紧密联系实际开发,也非常适合作为大专院校师生的教学与学习用书,将给广大师生带来一种革命性的教学方式与学习思路,令人耳目一新。 这不是一本参考资料和Java百科全书,不是什么"宝典"和"大全",但却可以让新手变为老手,相信学完此书,再看任何以前看不懂的Java书都会显得非常轻松。即使是很有经验的老手,也能从本书中有巨大收益。如果你想非常轻松就精通Java编程,并期望学完便能参加实际的开发工作,本书就是你非常好的一个选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值