整理 java SE基础知识

来源:互联网 发布:网络大电影盈利案例 编辑:程序博客网 时间:2024/05/21 21:34

一.java特点

跨平台:java编译器将java文件编译成class字节码文件,只要有安装java运行的机器都能执行这种文件。

简单:java摒弃了多继承运算符承载,指针,内存管理等,支持多线程,自动垃圾回收等特征。

面向对象:所有的java程序和applet均是对象,支持静态和动态风格的代码继承和重用。

分布式:java包括一个支持http和ftp等基于tcp/ip的子库。(为Internet下实现动态内容提供技术途径)

办编译半解释:源程序先编译成字节码文件,java解释器直接进行解释执行。

健壮:(类型检查/java自动操纵内存/垃圾回收)

安全:

多线程:一个程序里执行许多小线程(具有更好的网上交互习性能和实时控制性能尤其多媒体功能)

二.标识符命名规则

1.必须字母、下划线、美元符号、开头

2.标识符中间不能有空格

3.不能使用java中的关键字或保留字

三.数据类型

  • 基本数据类型:数值型:整数类型:byte、short、int、long
                                                         浮点型:float、double

                                                         字符型:char

                                                         布尔型:boolean

  • 应用数据类型:类(class)、接口(interface)、数组(array)

四.数据类型之间的相互转化

1.boolean类型不能转化成其他类型

2.(byte、short、char)--->int--->long--->float--->double

3.byte、short、char之间不会相互转化,在计算是会先计算成int型

五.switch()多分支条件 表达式只接受能转化成int的数据类型(int、byte、short、char)

六.方法的重载

  • 方法名必须相同
  • 方法的参数必须不同
  • 方法的返回参数可以相同也可以不相同
void int add(){}void int add(int a,int b){}
七.构造方法

  • 必须有跟类名相同的名字
  • 不含有返回值
  • 不能在方法中用return返回一个值
  • 一般访问权限为public(单例模式除外)
public class Test{     public Test(){   }     public Test(参数1,参数...){   }}
八.方法的重写
  • 相同的方法名
  • 相同的参数列表
  • 相同的返回类型
  • 子类重写的方法权限不能小于父类方法的权限
九.单例模式
  • 保证类有一个私有构造器,保证类不会被其他类通过调用本构造方法声明对象
  • 保证类只有一个实例,并提供一个访问它的全局的访问点
  • 提供一个自身静态私有成员变量(唯一的实例对象)
  • 提供一个静态共有方法(调用它创建实例)
public class Singleton{      private static Singleton instance=new Singleton();      //在自己的内部定义一个自己的实例,只供自己调用     //私有构造方法,保证不会被其他类调用      private Singleton(){            }//提供一个静态共有方法,供外部类访问本类     public static Singleton getInstance(){     return instance;   }}


十.this跟super关键字
this:代表对自身的引用
  • 方法中的变量名跟成员变量重名(封装类中的set方法)
  • 在同一类中的构造器中调用其他的重载构造器
  • 返回当前对象的引用
super:调用父类构造器,只能出现在子类构造方法中,且必须为第一行
  • super()中的参数决定了是调用的父类中的那个方法
  • 如果子类构造器没有super关键字,系统会自动默认加上调用父类默认构造方法,如果父类没有默认构造方法的话,会提示编译错误
在同一构造器中super跟this不能同时出现,子类的构造器不能继承父类的构造器

十一.static关键字
  • 只能修饰类成员,不能修饰局部变量
  • 用static修饰的变量和方法称为类变量和类方法(静态方法)
  • 静态方法只能访问类中的静态成员,不能访问类中的非静态成员
  • 静态方法中不能使用this和super关键字
  • 静态方法不能被非静态方法覆盖,静态方法不能修饰构造器
  • 当类被载入时,代码块(被static修饰的代码块/静态代码块)执行切只执行一次,经常用来进行类属性的初始化
十二.多态
  • 同一实现接口,使用不同类实现不同的功能
  • 例子:黑白打印机彩色打印机   同是  实现了”打印机“这一接口的功能,但黑白打印机彩色打印机这两个类能实现不同的功能
十三.抽象类跟接口
  • 抽象类不能被实例化
  • 其包含的抽象方法在其子类中必须被实现,否则子类只能定义成abstract的
  • 抽象方法不能为static的
接口
  • 接口不是一个类,不能被实例化
  • 接口默认常量:public static final
  • 接口默认抽象方法:public abstract
区别
  • 接口中不能含有任何非抽象的方法,抽象类中可以
  • 类可以实现多个接口但只能有一个父类
  • 接口不是类分级结构的一部分,没有联系的类可以实现统一接口
十三.final关键字
  • final修饰的类不能被继承
  • final修饰的变量(成员变量/局部变量)不能被重新赋值
  • final修饰方法不能再子类中被重写,即不能修改
十四.内部类
  • 内部类可以访问其外部类的所有属性方法
  • 无需创建外部类对象就可访问
  • 必须创建内部类对象,否则无法从外部类访问内部类属性方法
  • 如果内部类有与外部类同名的变量和方法,则内部类属性和方法较外部成员具有更高的优先级
  • 不能定义static变量
  • 静态内部类只能访问外部类静态成员
  • 非静态内部类只能定义非静态内部成员,而静态内部类可以定义静态/非静态成员
  • 静态内部类使用 Outer.Inter inter = new Outer.Inter();进行实例化
  • 非静态内部类不用使用上面的方法实例化
  • 在方法中定义的内部类只能访问方法中final修饰的局部变量
十五.异常处理 try..catch...finally
  • 当执行try语句是遇到异常,就会抛出异常,try结束执行,catch执行
  • 两种情况下finally语句都会执行
  • 当遇到 system.exit(0);是finally语句不会出执行,方法退出
十六.线程与进程的区别、用法
区别:每个进程都由独立的代码和数据空间,进程的切换会有很大的开销,同一类线程共享代码和数据空间。每个线程有独立运行的栈和程序计数器,线程切换开销小。
多线程实现的两种方式:
  • 继承Thread类,重写run()方法,通过start()方法激活线程
  • 实现Runnable接口,重写run()方法,使用这种方式有效的避免了java的单继承的问题
  • sleep():让线程终止一段时间
  • join():导致当前线程等待,知道调用这个join()方法的线程终止
  • yield():为其他可运行的线程提供机会
  • wait():导致当前线程等待,知道其他线程调用此对象的notify()或notifyAll()
  • notify():唤醒在此监视器上等待的单个线程
  • notifyAll():唤醒在此对象监视器上的所有的线程
线程终止:
  • stop():已过时
  • interrupt():粗暴的终止方式
  • 使用一个标志指示run()方法退出
线程同步:
  • 有时可能会有两个或多个线程试图同时访问一个资源(数据可能会变得不一致)
  • 为了确保在任何一个时间点一个共享资源只能被一个线程使用
使用锁:
  • synchronized void method(){} 锁定方法
  • Synchronized(object){} 锁定代码块
1.当一个包含锁定方法的线程被cpu调用,其他线程就无法调用相同对象的锁定方法
2.当一个线程子在一个锁定方法的内部所有试图调用该方法的同实例的其他线程必须等待。








0 0