一、JAVA概述
1.编译型语言和解释型语言
2.JAVA先编译成与平台无关的字节码(*.class)文件,然后由JVM(Java Virtual Machine)来解释,最终转换为机器码。
3.不同平台的JVM都是不同的,但提供了相同的接口,达到跨平台目的。
4.JRE:Java Runtime Environment
JDK:Java Development Kit
SDK:Software Development Kit
二、基本数据类型和运算符
1.浮点类型默认为double,欲声明float类型需要在后面加F或者f,例如3.4F
float a = 3.4//出错! 可以强制转换float a = (float)5.6
2.正无穷:POSITIVE_INFINITY 负无穷:NEGATIVE_INFINITY 非数:NaN 只有浮点数除以0才返回无穷,整数/0会抛出异常
3.当一个算术表达式包含多个 类型的值,将发生自动提升,byte short char将提升为int
4. & 按位与
| 按位或
~ 按位非
^ 按位异或:相同返回0,不同返回1
<< :左移补0
>> :右移补符号位
>>>:右移补0
5.数在计算机中以补码存在,正数的补码是其本身,负数补码首位为符号位(0正1负),其余的为反码+1(1000 0000B表示-128D)
6.移位char short char 转换为int 再移位
7.&总是计算两边,&&只有左边为true才计算右边
三、面对对象
1.valueOf()、toString()之间的调用关系
public static String valueOf(Object obj){ return (obj == null) ? "null" : obj.toString(); }
2.静态成员:有static修饰的成员属于类本身,可以不实例化调用,没有static修饰的成员属于该类的实例
3.static修饰的方法中this无法指向合适的对象(因为该方法属于类本身),所以不能直接访问非静态成员
4.JAVA参数传递为值传递,欲传递引用需创建类
5.封装:讲对象的状态信息隐藏在内部,不允许外部程序直接访问对象内部信息,而是要通过该类所提供的方法来实现内部信息的操作和访问:
1)隐藏类的实现细节
2)只能通过预定的方法访问,限制不合理访问
3)可数据检查,有利于保证对象信息的完整性
4)便于修改,提高维护性
6.JAVA里面只有单继承,只有一个直接父类,可以有无限间接父类,使用extend关键字
7.重写override,两同两小一大:方法名相同、形参列表相同,返回值类型、抛出异常要比父类小,访问权限要比父类大
重载overload发生在同一类的多个同名方法之间,而重写发生在父类和子类的同名方法之间
8.super限定调用父类被覆盖的实例方法
class Base{ public int a = 5; } class Sub{ public int a = 7; public int access(){ return super.a; } }
9.多态:JAVA的引用变量有两个类型,编译时类型和 运行时类型,如何他们不一样,将出现多态
条件:1.要有继承
2.要有重写
3.父类引用指向子类对象(BaseClass T = new SubClass() ;//T编译时是子类Base,运行时是父类Sub)
10.初始化块也是类成员,总是在构造器之前执行之前执行;静态初始化块(类初始化块)在类初始化阶段就执行,而不是创建对象才执行,所以他比普通初始化块先执行
11. ==和equals方法
在比较引用类型变量时,只有他们指向同一个对象,==才返回true,而equals()在String中有重写,先比较引用,若返回false再比较字符,完全相等返回true,否则返回false,详见:http://www.cnblogs.com/xudong-bupt/p/3960177.html
12.final修饰
13.抽象类用abstract修饰,不能被实例化,只能被继承,用abstract修饰的方法在子类必须重写
14.static和abstract不能同时修饰某个方法,但可以同时修饰某个内部类
15.接口定义的是一种规范,使用interface关键字,不能包含构造器和初始化块,只能包含静态成员常量、方法(抽象实例方法、类方法、默认方法)、内部类。
接口所有成员默认都使用public修饰,成员变量默认public static final修饰,普通方法默认public static 修饰,它不能有方法实现,默认方法(defalt)修饰和类方法(static修饰)必须要有方法实现。
public interface Output { // 接口里定义的成员变量只能是常量 int MAX_CACHE_LINE = 50; // 接口里定义的普通方法只能是public的抽象方法 void out(); void getData(String msg); // 在接口中定义默认方法,需要使用default修饰 default void print(String... msgs) { for (String msg : msgs) { System.out.println(msg); } } // 在接口中定义默认方法,需要使用default修饰 default void test() { System.out.println("默认的test()方法"); } // 在接口中定义类方法,需要使用static修饰 static String staticTest() { return "接口里的类方法"; } }
16.接口完全支持多继承,不能用于创建实例,但可以声明引用变量,然后引用到实现类的对象,例如:
interface A{} class B implements A{ } ... A XX = new B();//用接口A声明一个B实例XX
17.接口体现的是一种规范,而抽象类体现的是一种模板式设计
18.内部类:http://www.cnblogs.com/nerxious/archive/2013/01/24/2875649.html
...
未完待续
原文:http://www.cnblogs.com/wangwxyz/p/4721692.html