Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1082988
  • 博文数量: 135
  • 博客积分: 10182
  • 博客等级: 上将
  • 技术积分: 1565
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-07 16:05
文章分类

全部博文(135)

文章存档

2011年(5)

2010年(20)

2009年(3)

2008年(16)

2007年(91)

分类: Java

2010-06-23 14:19:06

    很久前学java时摘抄的。今天看android源码时,看到>>>操作符,又不明了了,翻出来看了看。发现总结的还不错,至少蛮好用的,就放出来了,方面以后查阅。

 

 

Java是什么?

   Java= “C++”-“复杂性和奇异性”+“安全性和可移植性

JavaCC++的区别

          不再有#include #define 等预处理功能

          不再有structure,uniontypedef

          不再有函数、不再有指针、不再有多重继承

          不再有goto

          不再有操作符重载(Operatior Overloading)

          取消自动类型转换,要求强制转换

          等等

 

一、Java 基本的程序设计结构

 

public class FirstSample {

    public static void main(String[] args) {

       System.out.println("HelloWorld");

    }

}

 

1.  Java对大小写敏感。

2.Java应用程序中的全部内容都必须放置在类中。

3.源代码的文件名必须与公有类的名字相同,并用.java作为扩展名。在一个源文件中只能有一个公有类,但可以有任意数目的非公有类。

4.Java编译器将字节码文件自动命名为FirstSample.class

5.运行 java FirstSample

6.java虚拟机将从类的main方法入口执行。

7.main方法必须是public static

8.注释支持///* */(不支持嵌套),另外支持/** */,且这种注释可以用来自动生成文档。

 

二、数据类型

Java是一种强类型语言,必须为每一个变量声明一种类型。在Java中,一共有8种基本类型,其中有4个整形、2个浮点型、1个字符型char、和1个表示真值的boolean

1.       整形

int 4    short 2    long 8    byte 1

Java种整形的范围与运行Java代码的机器无关。长整形数值有一个后缀L

Java没有任何unsigned类型。

2.       浮点型

 float 4   double 8 float类型的数值有一个F

3.char 2个字节

4. boolean类型有两个值:falsetrue,用来判定逻辑条件。这两个值不能与整型互换(C++)

 

          byte      8      2 的补码         (byte) 0

          short     16     2 的补码         (short) 0

          int       32      2 的补码              0

          long     64      2 的补码               0L

          float     32      IEEE 754浮点数标准    0.0f

          double   64      IEEE 754浮点数标准    0.0d

          char     16      一码字符集     ‘\u0000’

                                   

三、变量和常量

Java中不区分变量定义和声明。

final声明常量,const是保留的关键字,但未使用。

不可以嵌套定义同名变量。

可以在不同for语句中定义同名变量。

 

四、运算符

Java中的操作符:C基本一致

>>>运算符将用0填充前面的位。>>用符号位填充,C++中不确定。没有<<<运算符。

没有逗号表达式。

Java没有提供运算符重载。

Java中不再有指针了。

Java中引用是指向一个对象在内存中的位置,在本质上是一种带有很强的完整性和安全性的限制的指针。

当你声明某个类,接口或数组类型的一个变量时,那个变量的值总是某个对象的引用或者是null引用。

指针就是简单的地址而已,引用除了表示地址而外,还像被引用的数据对象的缩影,还提供其他信息。

指针可以有++,--运算,引用不可以运算。

 

五、字符串

Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类:String

六、控制流程

Java没有goto语句。有break,且break可以带标签。

switch语句的case标签必须是整数或枚举常量,不能检测字符串。

 

七、数组

int[] a; 或者int a[]; 声明

int [] a = new int[100];初始化

能够动态取得的内存有两种,一种是对象实体,一种数组.

Javanew申请内存,不需要自己释放不用的内存.

Java中,定义数组时不必给出数组的大小,因为Java的数组是动态分配的。

数组变量实际上是一个引用变量,因此要实例化才能使用。

例:int Array[]       Array=new int[8]

for each循环

forvariablecollectionstatement

collection必须是数组或实现了Iterable接口的类。

Java中,允许将一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组。

int[]a = new int[100];//java

不同于 int a[100];

而等同于int * a = new int[100]; //C++

Java中的[]运算符被定义为检查数组边界,而且没有指针运算,即不能通过a+1得到数组的下一个元素。

 

对象与类

 

class Car

{

   int car_number;

   void set_number(int car_num)

   { car_number=car_num;}

   

   void show_number()

  {System.out.println (“My car No. is :”+car_number); }

}

 

class TrashCar extends Car

{ int capacity;

  void set_capacity(int trash_car_capacity)

  {  capacity=trash_car_capacity;}

 

  void show_capacity();

  {  System.out.println(“My capacity is: ”+

      capacity);}}

类的严格定义及修饰字

[类的修饰字] class 类名称 [extends 父类名称]

 {    ….    }

abstract类不能直接产生属于这个类的对象

final类不能被其他任何类所继承(安全的考虑)

public类不但可以被同一程序包中的其它类使用,别的程序包中的类也可以使用.

friendly(缺省)类只能被本包中的其它类使用

方法和变量的定义及修饰字

[变量修饰字] 变量数据类型 变量名1,变量名2[=变量初值];

[方法修饰字] 方法的返回值类型  方法名称(参数1,参数2,  

{

     //方法的内容

}

public ,private,protected,default

到此为止-----final

final在方法之前,防止该方法被覆盖.

final在类之前,表示该类不能被继承

final在变量之前,定义一个常量.

属于类的变量和方法----static

static属于类且不属于类对象的变量和函数,JavaC++相同。

static 在变量或方法之前,表明它们是属于类的,

静态变量在各实例间共享

如果是public静态变量,则其它类可以不通过实例化访问它们

静态方法称为类的方法,因此不用实例化即可调用(面向过程)

一个对象的方法可以访问对象的数据成员,尽管不属于方法的局部变量

一个类的方法只能访问自己的局部变量

 

所有的Java对象都是在堆中构造的,构造器总是伴随着new操作符一起使用。

 

Java程序设计语言中,所有的方法都必须在类的内部定义,但并不表示它们是内联方法。

 

接口中的所有方法都自动的属于public。在接口中声明方法时不必提供关键字public。接口中可以定义常量。接口不能有实例域,也不能在接口中实现方法。提供实例域和方法实现的任务由实现该接口的类完成。

接口不是类,尤其是不能使用new运算符实例化一个接口。

然而,尽管不能构造接口对象,却能声明接口变量。接口变量必须引用实现了接口的类对象。

x = new Comparable();//ERROR

Comparable x//ok

x = new Employee(); //ok provided Employee implements Comparable

接口也可以被扩展

public interface Powered extends Movable

{

}

每个类只能有一个接口,但却可以实习多个接口。

calss Employee implements CloneableComparable{}

 

在实现接口时,必须把方法声明为public,否则即为默认访问属性。

利用接口可实现多重继承(可同时实现多个接口)

接口的作用和抽象类类似,指定原型,不直接定义方法的内容.

关键字implement用来实现方法,即在使用时要用给出方法的实际内容

接口中的方法和变量是public

interface Stack

{   void push(object x);

     object pop();

}

 

class A extends Applet

       implements Stack

{   void push(object x)

     {  

           …;//具体内容

     }

      object pop()

      {

           …;//具体内容}

}

 

程序包:相当于其它语言中的库函数

打包

package Graphics;

class Square {…;}

class Circle {…;}

class Triangle {…;}

使用程序包中的类要用import命令.表示路径,*表示使用包中的所有类

import   java.io.FileInputStream

import   java.io.*

 

public  class apple extends fruits

{   public apple(int price)

     {    super(price);    }

}

Java用关键字extends代替了C++中的冒号。在Java中,所有的继承都是公有继承,而没有C++中的私有继承和保护继承。

 

Java中使用关键字super调用超类的方法,而在c++中采用超类名加上::操作符的形式。

super指这个对象的父类:super用来引用父类中的方法及变量数据.以上句子表示使用超类的构造函数生成实例super必须是子类构造器的第一条语句

 

C++的构造函数中,使用初始化列表语法调用超类的构造函数,而不调用super

Java中不需要将方法声明为虚拟方法,动态绑定是默认的处理方式。如果不希望让一个方法具有虚拟特征,可以将它标记为final

final类不允许继承,其方法自动为final方法,但域不是。

C++中,在尾部用=0标记的抽象方法来表示纯虚函数,只要有一个纯虚函数,这个类就是抽象类。在Java中用关键字abstract

Java用于控制可见性的4个访问修饰符:

private仅对本类可见;public对所有类都可见;protected对本包和所有子类可见;默认对本包可见。默认即没有指明任何修饰符的情况。

 

Object:所有类的超类

 

Object类是Java中所以类的最终祖先,在Java中,每个类都是由它扩展而来的,但是不需要使用extends指明。

ArrayList是一个采用类型参数的泛型类。。它使用起来有点象数组,但在添加或删除元素是,具有自动调节数组容量的功能,而不需要为此编写任何代码。

ArrayList staff = new ArrayList();

构造器:在Java中可以通过this()的形式应用另一个构造器函数。C++不可以。

初始化块:在构造器函数前执行。

Java不支持析构器,可以使用finalize方法,不过无法保证该方法什么时候执行。

import语句是一种引用包含在包中的类的简明描述。一旦使用了import语句,在使用类时就不必写出包的全名了。import语句应该位于源文件的顶部但位于package语句的后面。

 

所有继承都是公有继承,没有私有继承和保护继承。

super是指示编译器调用超类方法的特有关键字。super()调用超类构造器。

Java中,子类数组的引用可以转换成超类数组的引用,而不需要采用强制类型转换。

子类覆盖超类的方法允许返回类型为原返回类型的子类型。

 

在覆盖一个方法的时候,子类方法不能低于超类方法的可见性。特别是超类方法是public,那么子类方法一定要声明为public

instanceof

ife instanceof Manager{}

Java中,只有基本类型的值不是对象。而所有的数组类型,不管是对象数组还是基本类型的数组都扩展于Object类的类型。

阅读(2141) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~