JavaSE基础知识

JavaSE零碎知识点

 

1.java为解释性语言,程序讲代码编译成字节码,然后由JVM解释进行

2.java是纯面向对象语言

3.不支持多重继承,可继承多个接口.

4.java不支持运算符重载,没有预处理,不支持默认函数参数.

 

Java程序初始化顺序

1.静态对象>非静态对象

2.父类对象>子类对象

3.其他(包含构造函数)按照编写顺序进行初始化

 

Java变量作用域

1.成员变量:类对象生命周期结束

2.静态变量/局部变量:类被JVM加载,即存在可调用

3.局部变量:或括号类即可使用

 

Java构造函数

1.可有多个构造函数,多个参数

2.super显示调用父类构造函数(当父类没有提供无参构造函数时)

3.当父类和自雷都没有定义构造函数时,会生成一个默认的无参构造函数

 

Java接口

1.抽象方法定义的集合

2.成员:public

3.常用值:public static final

已存在接口:serializable和cloneable

 

Clone接口的复制(重写接口Cloneable)

浅复制:引用对象的值复制了过来,单是仍会只想同一个引用值.

深复制:引用对象的值复制,且不再指向原来对象的值

 

反射机制:

1.得到对象的类,成员变量和方法.

2.运行时创建对象,调用对象方法.

<1>Class.forName(“path”) <2>类名.class <3>实例.getClass

 

Package的作用

<1>提供多层命名空间 <2>对类功能分类

 

面向对象的特性:

<1>封装 <2>继承 <3>多态 <4>抽象

 

多态实现的机制

<1>重载(overload)   <编译时多态>   同一个类有多个同名方法

<2>覆盖(override)   <运行时多态>   动态绑定不同类的相同方法.

抽象类和接口的异同点

1.相同点:

(1)不能被实例化

(2)子类实现接口或抽象方法后才能被实例化

2.不同点:

(1)接口:只有定义,方法不能被实现

抽象类:可以实现与定义.

(2)接口:implements        has-a

抽象类:extends  is-a

(3)接口:

成员变量   默认public static final(必须赋初值,不能被修改)

成员方法   public/abstract

抽象类:

成员变量 默认default,也可以定义其他(子类可修改重新定义)

抽象方法使用abstract

 

内部类:

<1>静态内部类

Class out{

Static class inner{}

}

1.可以不依赖外部实例化

2.只能访问外部类的静态成员/方法

<2>成员内部类(非静态内部类)

Class out{

Class inner{}

}

1.可以自由引用 静态/非静态  方法和成员

2.内部不能有静态成员

<3>局部内部类

Class out{

Public void func(){

Class  inner{}

}

}

代码块中的类

1.相当于局部变量,不能被public static修饰.

2.只能访问final类型局部变量

<4>匿名内部类

局部内部类的一种.

Final关键字

Final修饰的变量:引用不可变,必须初始化

(指向的初始对象不能变,值可以变)

初始化的方式:  1.定义时初始化

2初始化块中初始化(静态final在静态块中)   fianl{块}

3.类构造器中初始化(静态final不可以)

 

Assert(对boolean表达式的检查)

<1>检查控制流

<2>检查输入参数有效性

<3>函数结果有效化

<4>检查程序不变量

 

Static关键字用法

<1>static成员变量

内存中只有一个复制.(类/对象,静态变量).所有对象共享,相当于全局变量.

<2>static成员方法

方法不可用this和super

<3>static代码块

JVM加载类会加载静态代码块

<4>static内部类

可直接用Outer,Inner实例化.

 

==/equals和hashcode

<1>”==”比较两个变量是否相等

比较的是内存中所存储的数值  (内存地址)

(适用于比较基本数据类型)

<2>equals比较的也是内存数值引用.

特点:可以重写

例:String类

默认 boolean equals(Object obj){

return this==o;

}

<3>HashCode()方法

返回对象在内存中地址换成的int值.

(未重写,每个对象都不同)  默认返回地址值.

例:HashMap判断

规则:

1.equals判断相等,HashCode必相等

2.equals判断不相等,hashcode不一定相等

 

 

 

 

 

 

 

 

字符串创建与存储机制

JVM存在字符串池(方法区),可以被共享使用

  1. String s1 = new String(“abc”);

String s2 = new String(“abc”);     s1不等于s2.

2  String s1=”abc” String s2=”abc”  a等于b

3 new String(“abc”)            等于”abc”,new String()

当常量池有”abc”,则创建一个对象

常量池没有时,则创建两个对象

 

 

String,String Buffer,String Builder和String Tokenizer

1.String是不可变类

2.String Buffer是可变类,线程安全(多线程)

3.String Builder是可变类,线程不安全  (单线程)

4.String Tokenizer用来分割字符串的工具类

执行效率String<String Builder<String Builder

 

异常处理:

原理:

程序运行时所发生的非正常情况或错误,当违反了以后,JVM会抛出异常.

 

Throwable--------1.error  2.exception

<1>检查型异常 (非运行时异常)

IO或者SQL异常

<2>运行时异常 (未强制捕捉异常)

1.NullPointerException   空指针

2.ClassCastException

3.ArrayIndexOutOfBoundsExceptions

4.ArrayStoreException

5.BufferOverFlowException 缓冲区

6.ArithmeticException 算术

 

Throws暴露问题让调用者处理

 

Finally

1.finally在return前执行.

2.会覆盖方法体重的变量return. [有return]

3.finally中为引用类型,则可修改值.

Finally部位引用类型,则不能修改值.

原因:执行return前先存储值,在执行finally. [无return]

 

不执行finally的两种方法:1.try之前有异常 2.exit(0)

函数的返回值是在finally前确定的.

Java序列化

1.序列化  Serializable

将对象以连串字节描述的过程

特点:

1.类能被序列化,则子类也可以

2.static,transient(不用维持的关键字)不能被序列化.

2.使用序列化的情况:

<1>网络发送对象

<2>深复制

3.反序列化(将流转为对象)  SerialVersionID

4.外部序列化 Externalizable 继承 Serializable

5.部分序列化:

<1>Externalizable中实现

<2>transient实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值