1 面向对象
特点:封装、继承、多态、抽象
过程是函数,对象就是将函数等一些内容进行封装
定义类:定义成员变量和成员函数
成员变量:对应事物的属性
存储数据,通常私有化,提供公共的访问方法(setXXX(),getXXX())
成员函数:对应事物的行为
主函数:保证所在类的独立运行,是程序的入口,被jvm调用
成员变量和局部变量:
1)成员变量直接定义在类中,局部变量定义在方法中
2)成员变量在该类中有效,局部变量在自己所属大括号内有效
3)成员变量存在于堆内存中,随对象产生而产生、消失而消失,
局部变量存在于栈内存中,随所属区域的运行而存在、结束而释放
构造函数:用于给对象初始化,函数中的一种;
1)函数名和所在类名 相同
2)不需要定义返回值类型
3)没有具体返回值
所有对象创建时,都需要初始化才可以使用;如果没有,会默认生成一个空参数的构造函数
一个类可以有多个构造函数,函数名相同,而参数列表不同,是以函数重载体现的
构造函数和一般函数:
1)定义格式不同
2)构造函数在对象创建时就被调用,用于初始化,而且初始化动作只执行一次;
一般函数是对象创建后,需要调用才执行,可以被调用多次
构造代码块和构造函数的区别:
构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用这个代码块。只要对象一建立,就会调用这个代码块。
构造函数:是给与之对应的对象进行初始化,具有针对性。
创建对象在内存中做了什么:
2 封装
含义和原则:隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:将变化隔离;便于使用;提高重用性;安全性
this:
static:
特点
3 设计模式
单例模式:保证一个类只有一个实例,并提供被访问的方法
实现单例模式:饿汉式和懒汉式(区别 http://wenku.baidu.com/view/6a8b52f10242a8956bece4aa.html)
//饿汉式:预先加载类对象
class Sigle{
private Single(){} //私有化构造函数
private static Single s=new Single(); //创建私有并静态的本类对象
public static Single getInstance(){ //定义公有并静态的方法,返回该对象
return s;
}
}
//懒汉式:延迟加载类对象
class Sigle{
private Single(){}
private static Single s=null;
public static Single getInstance(){
if (s==null)
s=new Single();
return s;
}
}
4 继承
继承特点
super
final
4 抽象类 abstract
特点:
解决的问题:当功能内部一部分实现时确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。
abstract class GetTime{
public final void getTime(){ //此功能如果不需要复写,可加final限定
long start = System.currentTimeMillis();
code(); //不确定的功能部分,提取出来,通过抽象方法实现
long end = System.currentTimeMillis();
System.out.println("毫秒是:"+(end-start));
}
public abstract void code(); //抽象不确定的功能,让子类复写实现
}
class SubDemo extends GetTime{
public void code(){ //子类复写功能方法
for(int y=0; y<1000; y++){
System.out.println("y");
}
}
}
5 接口 interface
类与类存在继承关系,继承用extends;类与接口存在实现关系,实现用implements
6 多态
特点
7 对象Object
特点
8 内部类
直接定义在类B中的类A。A可以直接访问外部类B的成员变量,外部类B可以建立内部类A的对象来访问内部类。
9 异常
程序运行不正常的情况;将之封装成对象。
问题包括问题产生的原因、问题的名称、问题的描述等问属性信息。
异常就是java按照面向对象的思想将问题进行对象封装,方便操作和处理。
常见异常:
越界异常:IndexOutOfBoundsException,包括数组、字符串
空指针异常:NullPointerException
类型转换异常:ClassCastException
空元素异常
不支持操作异常
——java.lang.Throwable:
|Error:错误,一般不进行处理,通常是jvm发生的,需要对程序进行修正
|Exception:异常,可有针对性的处理方式
特点:可抛性 throwable
关键词:throws throw
class ExceptionDemo{
public static void main(String[] args){
byte[] buf=new byte[1024*1024*700]; //java.lang.OutOfMemoryError 内存溢出错误
}
}
当定义功能(函数)时,如果发现可能会出现一些问题,就通过抛出异常给出预处理方式。
格式:
try{需要被检测的代码}
catch(异常名 变量名){异常处理代码}
finally{一定会执行的代码}
catch(Exception e){
system.out.println("message:"+e.getMessage()); //获取的是异常的信息
system.out.println("toString:"+e.toString()); //获取的是异常的名字+异常的信息
e.printStackTrace(); //打印异常在堆栈中的信息:异常名称+异常信息+异常的位置
}
异常处理原则:
throw和throws的区别:
异常分:
编译时被检测的异常,即Exception及其子类;
运行时异常,即Exception的特殊子类RuntimeException编译时不被检查。
try or throws:
功能内部出现异常,如果内部可以处理,用try;
内部处理不了,声明出来,让调用者处理。
可以对项目中特有的问题进行封装,自定义异常:
1)定义一个子类继承Exception或RuntimeException,让该类具备 可抛性;
2)通过throw或 throws进行操作。
try cathc finally 结合方式:
1)try catch finally
2)try catch
3)try finally (无论是否发生异常,必须关闭资源)
System.exit(0); //退出jvm,只要这种情况finally不执行 (?)
异常出现后,子父类覆盖时特点:(?)
尽量避免异常;避免不了就预先给出处理方式。
10 包
包名小写,一种封装形式,封装类,包外只能访问public声明的类。
java中的4种权限:public protected default private
import:导入指定包中的类;导入的两个包存在相同名的类,需在代码中指定包名。
常见软件包:
java.lang 通常自动导入
java.awt
javax.swing
java.net
java.io
java.util
java.applet
jar:java的压缩包,主要用于存储类文件,或者配置文件等
命令格式:jar -cf 包名.jar 包目录
解压缩:jar -xvf 包名.jar
11 多线程
线程和进程:
同步
(for myself 附加:例程的理解 -简单理解 ,就是 某个系统对外提供的功能接口或服务的集合,类似函数)
12 字符串
== 和 equals:
s1==s2:比较是否为同一对象
s1.equals(s2):比较数值是否相等
13 集合
14 数组
15 泛型
16 API