仓酷云

标题: JAVA教程之Java编程头脑重点条记(Java开辟必看)仓酷云 [打印本页]

作者: 小女巫    时间: 2015-1-18 11:15
标题: JAVA教程之Java编程头脑重点条记(Java开辟必看)仓酷云
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net网页编程和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点Java编程头脑,Java进修必读典范,不论是初学者仍是年夜牛都值得一读,这里总结书中的重点常识,这些常识不但常常呈现在各年夜出名公司的口试口试过程当中,并且在年夜型项目开辟中也是经常使用的常识,既有复杂的观点了解题(好比is-a干系和has-a干系的区分),也有深切的触及RTTI和JVM底层反编译常识。

1.Java中的多态性了解(注重与C++辨别)


2.is-a干系和is-like-a干系


3.运转时范例信息(RTTI+反射)

<ul>观点
RTTI:运转时范例信息使得你能够在程序运转时发明和利用范例信息。利用体例
Java是怎样让我们在运转时辨认对象和类的信息的,次要有两种体例(另有帮助的第三种体例,见下形貌):

事情道理
要了解RTTI在Java中的事情道理,起首必需晓得范例信息在运转时是怎样暗示的,这项事情是由称为Class对象的特别对象完成的,它包括了与类有关的信息。Java送Class对象来实行其RTTI,利用类加载器的子体系完成。
不管什么时候,只需你想在运转时利用范例信息,就必需起首取得对得当的Class对象的援用,猎取体例有三种:
(1)假如你没有持有该范例的对象,则Class.forName()就是完成此功效的便利途,由于它不必要对象信息;
(2)假如你已具有了一个感乐趣的范例的对象,那就能够经由过程挪用getClass()办法来猎取Class援用了,它将前往暗示该对象的实践范例的Class援用。Class包括很有有效的办法,好比:
  1. packagertti;interfaceHasBatteries{}interfaceWaterProof{}interfaceShoots{}classToy{Toy(){}Toy(inti){}}classFancyToyextendsToyimplementsHasBatteries,WaterProof,Shoots{FancyToy(){super(1);}}publicclassRTTITest{staticvoidprintInfo(Classcc){System.out.println("Classname:"+cc.getName()+",isinterface?["+cc.isInterface()+"]");System.out.println("Simplename:"+cc.getSimpleName());System.out.println("Canonicalname:"+cc.getCanonicalName());}publicstaticvoidmain(String[]args){Classc=null;try{c=Class.forName("rtti.FancyToy");//必需是全限制名(包名+类名)}catch(ClassNotFoundExceptione){System.out.println("CantfindFancyToy");System.exit(1);}printInfo(c);for(Classface:c.getInterfaces()){printInfo(face);}Classup=c.getSuperclass();Objectobj=null;try{//Requiresdefaultconstructor.obj=up.newInstance();}catch(InstantiationExceptione){System.out.println("CantInstantiate");System.exit(1);}catch(IllegalAccessExceptione){System.out.println("Cantaccess");System.exit(1);}printInfo(obj.getClass());}}
复制代码
输入:
Classname:rtti.FancyToy,isinterface?[false]
Simplename:FancyToy
Canonicalname:rtti.FancyToy
Classname:rtti.HasBatteries,isinterface?[true]
Simplename:HasBatteries
Canonicalname:rtti.HasBatteries
Classname:rtti.WaterProof,isinterface?[true]
Simplename:WaterProof
Canonicalname:rtti.WaterProof
Classname:rtti.Shoots,isinterface?[true]
Simplename:Shoots
Canonicalname:rtti.Shoots
Classname:rtti.Toy,isinterface?[false]
Simplename:Toy
Canonicalname:rtti.Toy
(3)Java还供应了另外一种办法来天生对Class对象的援用,即便用类字面常量。好比下面的就像如许:FancyToy.class;来援用。
如许做不但更复杂,并且更平安,由于它在编译时就会遭到反省(因而不必要置于try语句块中),而且它肃除了对forName办法的援用,以是也更高效。类字面常量不但能够使用于一般的类,也能够使用于接口、数组和基础数据范例。
注重:当利用“.class”来创立对Class对象的援用时,不会主动地初始化该Class对象,初始化被提早到了对静态办法(机关器隐式的是静态的)大概非final静态域(注重final静态域不会触发初始化操纵)举行初次援用时才实行:。而利用Class.forName时会主动的初始化。
为了利用类而做的筹办事情实践包括三个步骤:

这一点十分主要,上面经由过程一个实例来讲明这二者的区分:
[code]<olclass="linenums"style="padding-top:0px;padding-bottom:0px;margin-bottom:0px;margin-left:35px;color:rgba(102,128,153,0.4);">packagertti;
importjava.util.Random;
classInitable{
staticfinalintstaticFinal=47;
staticfinalintstaticFinal2=ClassInitialization.rand.nextInt(1000);

static{
System.out.println("InitializingInitable");
}
}
classInitable2{
staticintstaticNonFinal=147;

static{
System.out.println("InitializingInitable2");
}
}
classInitable3{
staticintstaticNonFinal=74;

static{
System.out.println("InitializingInitable3");
作者: 谁可相欹    时间: 2015-1-20 18:50
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 再现理想    时间: 2015-1-21 13:42
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 深爱那片海    时间: 2015-1-26 08:49
是一种语言,用以产生「小应用程序(Applet(s))
作者: 灵魂腐蚀    时间: 2015-1-30 23:40
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 冷月葬花魂    时间: 2015-2-4 13:31
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者: 活着的死人    时间: 2015-2-4 23:24
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 莫相离    时间: 2015-2-8 04:03
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 山那边是海    时间: 2015-2-17 03:03
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 因胸联盟    时间: 2015-2-19 07:48
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 简单生活    时间: 2015-2-22 11:18
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 不帅    时间: 2015-2-26 02:59
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 若天明    时间: 2015-2-26 17:32
Java是一种计算机编程语言,拥有跨平台、面向对java
作者: admin    时间: 2015-3-2 23:51
Java 编程语言的风格十分接近C、C++语言。
作者: 柔情似水    时间: 2015-3-9 13:45
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 透明    时间: 2015-3-16 22:29
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 再见西城    时间: 2015-3-23 05:24
Java是一种计算机编程语言,拥有跨平台、面向对java




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2