Java基础总结

Posted yuwenS.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础总结相关的知识,希望对你有一定的参考价值。

1、 Java基础

1.1、数据类型

8种数据类型:

数据类型/位(bit)

byte/8、char/16、short/16、int/32、float/32、double/64、long/64、boolean/8

1.2、String类

String不是java基本数据类型,并且它被声明位final不可被继承(Integer等包装类也不能被继承)

String的底层是通过char数组实现的

String不可变性天生线程安全,可以在多个线程中安全使用

String不可变、StringBuffer和StringBuilder可变

String不可变,线程安全、StringBuiler是线程不安全的、StringBuffer是线程安全的,内部使⽤ synchronized 进⾏同步

1.3、关键字

1.3.1、final

修饰数据时:数据不能被改变

修饰类时:表明此类不能被继承

修饰方法时:表明次方法不能被重写

1.3.2、static

静态变量:又称类变量,可以直接通过类名来访问。静态变量在内存中只存在一份

静态方法:在类加载的时候就存在了,它不依赖任何实例。所以静态方法必须得有实现,不能是抽象方法。只能访问所属类的静态字段和静态方法,方法中不能存在this和super关键字

静态语句块:静态语句块在类的初始化时运行一次

静态内部类:静态内部类不需要先创建外部类,才能创建静态内部类,而非静态内部类需要先创建外部类才能进行创建非静态内部类

静态导包:在使用静态变量和方法时,不用在指明ClassName,但是代码的可读性较低

初始化顺序:静态变量和静态语句块优先于实例变量和普通语句块,静态语句块和静态变量的顺序取决于它们的前后顺序,最后才是构造函数的初始化。如果存在继承关系,顺序为:⽗类(静态变量、静态语句块)⼦类(静态变量、静态语句块) ⽗类(实例变量、普通语句块) ⽗类(构造函数) ⼦类(实例变量、普通语句块) ⼦类(构造函数)

1.4、Object通用方法

1.4.1、equals()

等价关系:两个对象要满足等价关系,需要满足自反性、对称性、传递性、一致性、与null比较为false五个条件

等价和相等:

对于基本类型,== 判断两个值是否相等,基本类型中没有equals方法

对于引用类型,== 判断两个变量是否引用同一个对象,而equals方法判断引用的对象是否等价

1.4.2、hashCode()

hashCode()返回哈希值,equlas()用来判断两个对象是否等价、等价的两个对象的散列值一定相同,但是有相同散列值的两给对象不一定等价。因为计算哈希值具有随机性,所以不等价的两个对象计算出来的散列值也可能相同。

在覆盖equlas()方法时,总会覆盖hashCode()值,确保两个等价对象的哈希值相等

1.4.3、toString()

toString()默认不重写的话,返回的是 包名.类名@… , @后⾯的数值为散列码的⽆符号⼗六进制表示。所以一般需要重写toString()方法,让其返回对象的字符串表示

1.5、继承

1.5.1、继承

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并扩展新的能力,这种继承使得复用以前的代码非常容易,能够大大的缩短开发的周期,降低开发费用

1.5.2、抽象类与接口

抽象类

抽象类和抽象接口都需要用abstract关键字进行声明,如果一个类中存在抽象方法那么这个类必须声明为抽象类

抽象类和普通类最大的区别就是抽象类不能被实例化,只能被继承

接口

接口就是抽象类的延伸,接口中不能有任何方法的实现,是一个完全抽象的类

接口的成员(字段+方法)默认都是public,并且不允许定义为private 或者 protected,并且接口默认字段都是 final 和 static 的

抽象类和接口的区别

一个类可以实现多个接口,一个类只能继承一个抽象类

接口字段只能是final和static类型的,而抽象类没有这种限制

接口的成员只能是public的,而抽象类的成员可以有多种访问权限

1.5.3、super

访问父类构造函数:使用super()函数访问父类的构造函数,从而委托父类完成一些初始化的工作

访问父类的成员:如果子类从写了父类的方法,可以通过使用super()函数来引用父类方法的实现

1.5.4、重写与重载

重写

存在于继承体系中,指子类实现了一个与父类在声明上完全相同的方法

重写需要满足三个要求:

子类方法的权限必须大于父类方法权限

子类方法的返回类型必须是父类方法返回类型或者其的子类型

子类方法抛出的异常类型必须是父类方法抛出类型或其子类型

重载

存在同一个类中,指一个方法与已经存在的一个方法名相同,但是参数类型、个数、顺序至少有一个不同

注意:返回值不同,其他相同不是重载

1.6、反射

反射可以提供运行时的类信息,并且这个类可以在运行时加载进来,甚至在编译时期这个类.class文件不存在也可以加载进来

Class和java.lang.reflect一起对反射提供了支持,java.lang.reflect类库主要包含了以下三个类

Field:可以使用get()和set()获取和修改Field对象关联的字段

Method:可以使用invok()方法来调用与Method相关联的方法

Constructor:可以使用Constructor的newInstance()创建新对象

1.7、异常

Throwable可以用来表示任意可以作为异常抛出的类,分为两种,Error 和 Exception ,Error表示JVM无法处理的错误,而Exception分为两种:

受检异常:需要用try…catch…语句捕获并进行处理,并且可以从异常中恢复

非受检异常:是程序运行时出错,例如除0错误就会抛出 Arithmetic Exception异常,此时程序崩溃无法恢复

异常的处理方式通常有两种:捕获或者向上抛出

1.8、泛型

泛型是JDK1.5的新特性,通常用来和集合对象一起使用

常用名称:

E -> Element(在集合中使用,因为集合中存放的是元素)

T -> Type(Java类)

K -> Key(键)

V -> Value(值)

N -> Number(数值类型)

1.9、注解

Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明和配置的功能。注解不会也不能影响到代码的实际逻辑,仅仅起到辅助性的作用。

Java注解可分为三类:JDK自带注解、元注解、自定义注解

JDK注解

@Override:用来标明重写方法

@Deprecated标记就表明这个方法已经过时了,但我就要用,别提示我过期

@SuppressWarnings(“deprecation”) 忽略警告

@SafeVarargs jdk1.7出现,堆污染,不常用

@FunctionallInterface jdk1.8出现,配合函数式编程拉姆达表达式,不常用

元注解

@Target:注解用到哪里,类上、方法上、属性上等等

@Retention:注解的生命周期,源文件中、字节码文件中、运行中

@Inherited:允许子注解继承

@Documented:生成javadoc时会包含注解,不常用

@Repeatable:为重复类型注解,可以在同一地方多次使用,不常用

1.10、特性

JRE和JDK:

JRE:Java Runtime Environment,Java运行环境的简称,为Java运行提供了所需的环境。它是一个JVM程序,主要包括了JVM的标准实现和Java的一些基本类库

JDK:Java Development Kit,Java开发工具包,提供了Java的开发及运行环境。JDK是Java开发的核心,集成了一些JRE和一些其它的工具,比如 Java 源码的编译器 Javac等

以上是关于Java基础总结的主要内容,如果未能解决你的问题,请参考以下文章

java基础大总结

java基础知识总结

总结——-java基础

java基础总结4

IT十八掌作业_java基础第26天_Java基础总结/虚拟机基础

java基础知识总结