复习1

来源:互联网 发布:数据安全交换平台 编辑:程序博客网 时间:2024/06/05 20:33

一. 环境配置

    开发环境:jdk-> java development kit
     运行环境:jre ->java runtime environment
    环境变量配置:添加JAVA_HOME变量:jdk的安装目录 
    在path中添加%JAVA_HOME%\bin
    命令:
        javac Hello.java  编译java的源代码 生成对应的字节码文件.class
        java Hello 执行java程序
        javadoc 自动生成api文档
        jar  将多个.class 文件生成.jar文件
        javap  java类文件解析器
        jdb 命令行调试环境
        还有许多不常用的命令,都有自己的命令选项

二.java如何实现跨平台操作

        java的字节码文件是运行在java虚拟机(jvm:java virtual machine)上的
         不同的操作系统安装的jvm是不同的,但是可以运行相同的字节码文件
         实现一处编译 处处运行

三.java语言的分类

        java SE主要用作桌面程序,为EE和ME的基础
        java EE:  主要做WEB开发,企业级的应用开发
        java ME:  做嵌入式的开发

四.java基础

1.java数据类型的分类

        计算机计数单位换算
                1Byte(字节) = 8bit(位)
                1KB  = 1024Byte
                1MB = 1024KB
                1GB = 1024MB
                1TB = 1024GB
                基本数据类型:8种
                整型(默认值为0):
byte(Byte null):8位 0000-0000~1111-1111(-128~127) 
short(Short null):16位 
int(Integer null):32位 
long(Long null):64位 
浮点型:
float(Float null):32位 0.0f
double(Double null): 64位 0.0
字符型:
char(Character null):16位 unicode编码:\u0000~\uffff  默认值\u0000
布尔型:
boolean(Boolean null) :true or false
数据类型的转换(数据类型兼容的情况下):
自动转换:小转大
byte->short->int->long->float->double
char->int->long->float->double
强制转换:  大转小
byte b=(byte)128;//b=-128
b=byte(255);//b=-1
只要类型比int小,那么在运算之前这些值会自动转为int型。
表达式出现的最大数据类型决定了最终结果的数据类型。

复合(引用)数据类型:
类、接口和数组 默认值为null
引用保存在栈内存中,存放的是具体值的地址
地址指向的是堆内存的地址,堆内存中保存具体的对象
2.标识符
由数字、字母、_和$组成,严格区分大小写,不能使用java的关键字和保留字
不能以数字开头
用来定义:类名 首字母大写
  方法名 首字母小写
  变量名 常量全部大写,其他首字母小写
采用驼峰模式(除了首字母,每个单词的首字母大写)
3.运算符

1.算术运算符 +  -  *  /  %  ++  --
2.关系运算符 ==  !  =  >  >=  <  <=  返回boolean值
3.boolean逻辑运算符(运算符两边都是boolean类型) & | ! ^ && ||
&和&&结果相同,但是步骤不同
|和||结果相同,但是步骤不同
&&和||具有短路功能
4.位运算符 & | ~ ^  <<  >>  >>>
5.赋值运算符 = ,+=, -=,*=,/=,%=
6.条件运算符(三目运算符) boolean?a:b 返回一个具体的值
4.分支语句
a.if() {  } else if(){  }else{  }
b.switch(变量){
case 值1:代码;break;
……
default:代码;
}(变量指byte,short,int,char,String(jdk1.7),枚举enmu类型)
5.循环语句
a.do{
代码块;
   }while(boolean)
b.while(boolean){
代码块;
   }
c.for(循环开始条件;循环满足的条件;变化的条件){
代码块;
   }
6.数组
数据类型[] 引用名 = new 数据类型[数组长度];
int[] a=new int[10];//初始化为10个0
Student[]  s=new Student[5];//初始化为5个null

int[] a={1,2,3};
int[] a=new int[]{3,4,5};
二维数组:
int[][] a=new int[][]{{1,2},{2,3,4}};
7.方法
方法时一段可以重复使用的代码块
方法的声明
[权限修饰符 public| protected|private|default] [static] [synchronized] void|数据类型
方法名称([数据类型 形式参数...]) [throws 异常]{
//方法体
}
方法的调用
同一个类中:方法名([实际参数...])
不同类中:
非静态方法  对象引用.方法名([实际参数...])
静态方法    类名.方法名([实际参数...])
方法的重载overload:
在同一个类中,方法的名称相同,参数列表不同(参数类型|个数|顺序),构成重载
方法的重写override:
在继承或者实现关系中,方法名称和参数列表返回值类型和父类完全相同,方法体不同
静态方法不能被重写
子类重写的方法不能缩小父类方法的权限
子类方法声明了异常,父类方法必须声明
可变参数 方法中声明的可变参数要放在参数列表的最后一位
8.字符串
equals和==
equals比较内容(String类重写了equals方法) ==比较地址
区分null和空字符串

五.面向对象编程 Object Oriented Programming(OOP)

1.面向对象的三大特征

封装

把客观存在的一些事物抽象为类的过程

类:  属性 方法  内部类 

安全,功能解耦,方便维护

继承

子类extends父类

子类继承父类的属性和方法并且可以覆盖父类的属性和重写父类的方法

还可以扩展自己的方法

多态

同一个类的不同对象,调用相同的方法实现不同的行为

多态实现的必要条件:

a.继承关系或实现关系

b.方法的重写

c.父类声明子类对象

实现原理:运行时期类型判定rtti,采用方法的后期(动态)绑定机制

简化代码,便于功能扩展

2.this关键字(与对象相关)

this- 表示的是当前对象

使用在类的普通方法中,使用this.属性或this.方法

使用在类的构造方法中,this(实际参数)调用其他构造方法,必须放在第一行而且只有一个

使用在内部类中,外部类名.this 生成对外部类对象的引用

3.static关键字(与类相关)

static{

//静态代码块

}

声明方法和属性 可以直接使用类名.属性 类名.方法()来调用

静态的代码块和静态属性只会被初始化一次

静态的方法不能使用非静态的属性 不能调用非静态的方法

非静态的方法可以使用静态的属性 可以调用静态的方法

4.构造方法

创建对象时调用的方法就是构造方法

构造方法的声明

[权限修饰符] 类名([形式参数...]){

}

每个类默认都有一个无参数的构造方法,一旦自定义了构造方法,默认的就不会被创建

创建对象时调用构造方法 new 类名([实际参数...])

构造方法可以被重载不可以被重写

5.super关键字

super表示继承关系中的父类

super.属性 使用父类的属性

super.方法() 调用父类的方法

6.初始化

类初始化:

只在第一次使用类时初始化一次

初始化的是静态声明的属性 执行静态代码块

对象初始化:

每次创建对象,都会初始化一次

初始化的是非静态的属性 执行非静态的代码块{}

初始化顺序:

a.先静态后非静态

b.先声明后赋值

c.先属性后构造方法

d.先父类后子类

父类静态->子类静态->父类非静态->父类构造方法->子类非静态->子类构造方法

六.接口、抽象类、内部类

1.接口

interface声明

声明属性 属性都是public static final声明的

声明方法 

抽象方法 没有方法体 [public abstract] [修饰符] 返回值类型 方法名称(形式参数)[throwsException];

jdk1.8之后 default和static方法 包含方法体

不能创建对象

2.抽象类

abstract class 声明

属性

方法:具体的方法

   抽象方法

不能创建对象

3.内部类

静态内部类

static修饰的类

可以访问外部类的静态属性和方法

创建对象: new 外部类.内部类()

常规内部类

可以访问外部类的所有属性和方法

使用外部类对象:外部类.this

创建对象: 外部类对象.new 内部类()

常规内部类默认有一个构造方法,参数为外部类对象

内部类生成的class类名:外部类$内部类

匿名内部类

没有名字的内部类

new 类|抽象类|接口(){

@Override

重写方法

};

局部内部类

在方法中定义的内部类

匿名内部类和局部内部类如果使用局部变量时,在内部类中不能对该变量进行修改

一般把局部变量声明成final的

七.异常

1.异常概念:程序中的一些意外导致指令中断的一种事件

2.java异常的分类

Throwable  ->java异常类的父类

|

|__Error jvm的错误异常

|__Exception 

|

|__编译期异常 :执行中的异常,必须要处理

1.在方法中声明异常:

方法名称([参数]) throws 异常类的名字

将异常信息跑出了方法外,在调用这个方法的地方还是要处理该异常

(通常在main方法中不能再throws 了)

2.try{

//可能会出现异常的代码

}catch(异常类名字 e){

//出现异常之后执行的代码

}...finally{

//不管try中的代码块有没有抛出异常必须执行的代码块

}异常处理后,catch之后的程序会正常执行,不会中断

  |

|__RuntimeException 运行期异常(程序运行时出现的异常)

3.自定义异常

八.RTTI(run-time type identification运行时类型判定)

1.RTTI:在程序运行的过程中识别对象的类型

在java中每一个类都有与之对应的Class对象来表述这个对象的类型

一个类的所有对象共用一个Class对象

2.Class类:用来描述所有java类的类

属性:类的构造方法、成员属性、方法

3.Class对象:每一个java的类都有一个Class的对象保存在java类的.class文件中

4.Class对象的作用:a.分析类的结构

b.创建类的对象:newInstance()方法创建对象,调用无参数的构造方法

c.实现反射

5.获取Class对象:

a.类名.class不会初始化类

b.Class.forName("类名")初始化静态属性和静态代码块

c.对象.getClass() 因为创建了对象,所以都被初始化了

6.类加载器 ClassLoader

用来加载.class的字节码 文件到内存中

一旦加载类,就会在堆内存中创建该类的Class对象

由类加载器对象和.class文件来唯一的确定一个Class对象

一个类只能被同一个类加载器加载一次

可以使用Class对象.getClassLoader()获取加载该类的类加载器


九.集合类库

十.JDBC

十一.IO

十二.多线程

原创粉丝点击