Java的一些基本知识

来源:互联网 发布:ubuntu设置输入法 编辑:程序博客网 时间:2024/04/30 15:32

一. 数组

  . 正确的定义: int num[];   num= new int[5]       //只有用new关键字真正创建数组时才可以给定它的大小

    错误的定义: int num[5];

  . 常见的数组错误为 : ArrayIndexOutOfBoundsException  (数组越界错误)

  . 数组的维度用 .length;  字符串长度用 .length();

  . 正确的初始化: int[] num={1,2,3}; 又或者: int num[]= new int[]{1,2,3}

    错误的初始化: int[] num=new int[3]{1,2,3};

  . 不能改变Java数组的大小.

 

二. 类

  . Java只允许单继承,所以增加了接口特性.

  . 所有Java类都是Object类的后代,如果一个类没有extend关键字,这个类将是基类Ojbect派生的.

  . 一个文件只能有一个外部类可以声明为public, 如果你在一个文件中定义多于一个public外部类,将会发生编译错误

  . Java严格区分大小写.

  . 一个外部类只允许声明为public, abstact , final.

  . System.out.print 是static方法, 不需要new创建.

  . Static方法只能访问Static变量

  . 一个方法变量将"屏蔽"类级别的变量

  . Private     : 创建它的类内部可见

    Public       : 所有类都可见

    Protected : 在类自身, 子类, 同一个包内部可见

  . Static  : 可以应用于内部类,方法, 变量.

                 标志一个变量为static, 表示其只能有一个副本存在.

                 一个static方法,不能在一个子类中重写为非static方法. (此规则对方法的重载不起作用)

                一个非static方法,不能在一个子类中重写为static方法.  (此规则对方法的重载不起作用)

 . native  : 仅修饰方法, 指明代码体不是用java而是用c或以c++所写

                 以一个分号结尾,与不是一个代码块, 如: pubic native fastCal();

 . abstract: 可以修饰方法和类

                 当修饰方法,表明方法只能在子类执行时运行,没有方法体.

                 如果一个类有 atstract 方法,则它需要声明为 abstract类.

                 任何从absract类继承来的类,都要实现基类的abstract方法, 或者声明自身为abstract类.

  . final  : 可修饰类,方法, 变量.

               final类不能被继承.

               任何final类中的方法自动成为final方法.

  . Synchronize : 同步的

  . transient      : 瞬时的

  . volatile         : 不稳定的

 

三. 构造方法

  . 构造方法是一种在类实例化时自动运行的特殊类型的方法, 通常被用来初始化类中的值.

  . 构造器有和类同样的名字并且没有返回值(包括void).

  . 一旦你为一个类创建了任何的构方法,你需要创建一个无参数的构造方法.

  . 构造方法不能是 native, abstract, static, synchronize, final

  . 构造方法不能被继承.

  . 构造方法中,不能同时用 super() 和 this()

 

四. 重载与重写

  . 重载: 如果一个类中的两个或者多个方法有同样的名字.

            (通过参数的顺序和类型来区分两个重载的方法,返回类型对区重载没有帮助.)

  . 重写: 在子类中的方法跟基类中被取代的原始方法有完全相同的方法名,包括返回值, 完全取代其功能.

            (static方法不能被重写)

 

五. 流程控制和差错处理

  . if 语句必须带一个 boolean 类型的值, 不能用非零的数值来表示 true;

  . switch 语句的参数必须是 byte, char, short, int

 

六. 循环

  . 死循环:  for(;;) system.out.print("forever");  或者 while(true){system.out.print("true")};

  . break/continue 不能跳到另一个方法去.

 

七. Try/Catch/Finally

  . 在子类中一个重写的方法可能只抛出父类中声明过的异常,或者异常的子类. (不适用于重载)

  . 通常来说, 所有的I/O操作都需要外在的使用 try/catch来异常处理.

  . 考试可能给你一个包括 return 语句来误导你认为代码不执行 finally语句就返回, 实际上 finally子句总是会执行的.

  . 如果执行了 System.out.exit(0), 则不会执行 finally地代码.

 

八. 断言

  .

 

九. 垃圾回收

  . 只能建议垃圾回收器运行,但无法决定它在代码的哪一部分执行.

  . 只有对象的实例才能成为垃圾回收对象, 原始数据类型不会.

 

十. 内部类

  . 仅仅在相应的外部类上的上下文中可见.

 

十一. Collection类/接口

  . Set   : 一个不可包含重复元素的集合类接口.

  . List   : 有序的, 可以有重复元素的集合类接口.

  . Map  : 接口, 实现它的类不能重复的key.

  . Vector : 可以将不同类的对象添加到一个Vector 里面.

  . HashTables : 优越的地方在于快速的查找.

  . BitSet : 存储的是一个序列比特.

 

十二. 接口

  . 接口只允许使用 public final static 修饰

  . 接口没有构造函数.

  .实现接口就要实现接口里的所有方法.

 

-------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------

  .  类级别的变量总是会被赋予一个缺省值, 而一个成员变量,将不会被赋予一个缺省值.

  . 对象引用的缺省值是 null.

  . instanceOf , 测试一个类的类型然后返回一个布尔值.

  . 将一个对象引用赋值给另一个对象的一般规则是: 你可以对继承树向上赋值,但不能向下复制.

  . 面向对象编程的三个特点: 封装, 继承, 多态.

  . == 比较的是两个对象的地址,而不是值.

 

 

原创粉丝点击