|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
最近想看看书,了解一下java的基本概念,其实以前也看过,但是囫囵吞枣,实在有愧.然而温故以知新,学习本应就是理解深化的过程. 主要看的书是《Java 2 参考大全》和《Java 2 核心技术:原理》 Java基本概念 一.字符类型 主要重温了一下各种字符类型占据的字节数。 short 短整型 16位 2字节 int 整型 32位 4字节 long 长整型 64位 8字节 浮点分单精度float和双精度double float 单精度 32位 4字节 double双精度 64位 8字节 char 这一点比较特别,java使用的不是ascii字符,也不是扩展的8位字符集,而是unicode字符集,unicode字符占据16位,2字节,可以表示人类所有发现的字符,也因为如此java可以比较方便的进行国际化,不知这个理解有无问题。 实际上char的值是个整数(0-65536),因此我们给char赋值可以用整数或者用单引号括起来的字符 顺便就看了一下UTF(unicode text format)格式,它是这样出来16位的unicode字符 前九位为0的unicode字符:一个字节 前五位为0的unicode字符:两个字节 其它:三个字节 对应的前缀编码: 0xxxxxxx Ascii码 10xxxxxx 第二或者第三个字节 110xxxxx 两字节序列中的第一个字节 1110xxxx 三字节序列中的第一个字节 二.类 类与对象:类是一个逻辑结构,对象拥有物理实体.也就是说类不占据内存空间,对象占据一定的内存空间.可以从类对象的获取说明这个问题。 Box aBox=new Box(); 实际上这个过程分两步 Box aBox; aBox=new Box(); 第一步是创建一个对象,返回的aBox是一个对象的引用。 第二步才是调用构造函数,为对象分配内存空间,返回的是这个内存地址的引用,这个引用被赋给了aBox。 构造函数是如何工作的呢? 构造函数没有返回值,是因为其隐含的返回类型是类本身。 默认的构造函数自动将所有的实例变量初始化为0。 实例变量即是一个类中定义的数据或变量,类的成员是指类中定义的方式和变量。 引用是个很有意思的东西。 Box a=new Box(); Box b=new Box(); 这个时候a和b对应各自的内存地址,假如 a=b; 这个时候a,b均指向同一个内存地址即b的内存地址。也就是说现在你更改a中的成员变量的值b的变量的值也随之改变;假如改变b中成员变量的值,a的对应变量也随之改变。引用只是一个内存的地址。 类中有个词语叫做抽象类,抽象类有很多含义和细节需要注重: 1。包含抽象方式的类必须声明为抽象类 2。抽象类的方式在子类中必须被覆盖,否则子类也必须声明为抽象类 3。抽象类不能有对象,不能new一个抽象类将其实例化 4。抽象类可以有抽象方式也可以有详细实现了的方式 5。抽象类可以创建对象引用 第五条异常有用,可以实现多态。李乾师兄曾讲解的设计模式中的工厂方式也就是抽象类的超类变量引用不同的子类对象。 由于接口都没有实现自身的方式,假如一个类没有实现接口中的方式,也必须定义为抽象类。 三.接口 接口只定义方式名,但是不实现方式。 接口可以声明变量,但是这些变量将是隐含的、最终的、静态的,不能由实现接口的类来改变。因此可以将共享常量在接口中定义,然后导入到多个类中。 可以使用接口引用来调用实现,这是什么意思呢? inerface callback() { public void call(int p) { } } class client implements callback { public void call(int p) { } } public static void (String arg[]) { <b>callback c=new client();</b> c.call(1); } 注重上面黑体字部分callback c=new client(), 创建了一个client对象,却声明为接口类型,这其中的意思就是c只是知道接口callback中方式,至于实现这个接口的client类还有什么其它的方式,c一概不知。这有些类似超类引用子类对象,很有用处的地方就是实现多态,很多实现这个接口的类可以用同一个接口的引用来调用。 四. 访问控制 五. 一些保留字的含义和运用 static:一般修饰类的成员,使该类成员独立于类的任何对象,使用类名即可调用。 使用static要注重: 1.static 方式仅可调用其它的static方式 2.只能访问static数据 3.不能以任何方法调用this或者super。(还不明白为什么) this:在任何方式中都可以使用this来调用当前的对象,this总是当前对象的一个引用。 this可以用于实例变量隐藏 所谓实例变量隐藏,就是说当一个本地变量和一个实例变量同名时,实例变量就被隐藏了。比如Box的构造函数 Box( double aWidth,double aHeight , double aDepth ) { width=aWidth; height=aHeight ; depth=aDepth; } 假如这时候参数是 width,height,depth,则这些本地的变量就会和类的成员变量同名,这时候就会发生实例变量被隐藏的现象。但是this可以避免这种情况。 Box( double width,double height , double depth ) { this.width=width; this.height=height ; this.depth=depth; } this直接引用对象,可以解决名字空间的问题,即本地变量和类的实例变量同名的问题。(这个需要再想想) super:主要有两种用法 1。super(parameter_list)调用超类的构造函数,但是这必须是子类构造函数的第一条语句。这里有趣的事情是子类构造函数调用超类构造函数时,过程是怎么样的;实际上是按照类的派生顺序调用构造函数。 2。super.member 这时候作为超类对象的引用调用超类的方式或者实例变量 final:可修饰变量,方式和类。 final 变量:变量的内容不能被修改 final 方式:方式不能被重载 final 类 :类不能被继续 返回类别: 教程 上一教程: java中的对象引用问题的再次理解 下一教程: Java中对HashMap的深度分析 您可以阅读与"java的一些基本概念"相关的教程: · [Eclipse笔记]一些基本概念 · Java新手入门需要把握的30个基本概念 · Java入门需把握的30个基本概念 · JAVA入门需把握的30个基本概念 · Java入门需把握的30个基本概念 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |