欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java基础知识概述3

时间:2023-06-09
一、final和static关键字: 1.final关键字:

final的三个作用:

a.被final关键字修饰的类:

表示该类不可被继承

public final class A {}//修饰符final修饰的A类无法被继承,这里会报错public class B extends A{}

如在java中的String类就是被final修饰的类,任何类都不能继承String类

b.被final关键字修饰的方法:

表示该方法不能被重写

public class A { public final void test(){//父类final方法 }}public class B extends A{ public void test(){//此方法无法被重写会报错 }}

当父类中的某些方法不想被子类重写时就可以用final方法修饰

c.被final关键字修饰的属性:

使局部变量变成常量,局部变量只能赋值一次,一但赋值就不能改变

final int x = 10;x = 20;//这里是错误的写法final int a;a = 20;//这里是正确的写法System.out.println(a);

使全局变量变成常量,必须在初始定义时就赋值,否则会报错

public final int a=0;//所有对象的值都一样

2.static关键字:

a.修饰方法或属性:

将属性和方法从对象级元素变成类级元素,用类名.属性或方法使用

public class Test { public static int age; //普通方法 对象级别的 public static void myStatic(){ } public static void main(String[] args) { Test.age = 10; Test.age = 30; Test.age = 50; Test.myStatic(); }}

类级元素被多个对象所共享,对象级元素时被单个对象共享

在静态方法中只能使用静态元素(属性或方法),而普通方法可以使用普通元素和静态元素

b.修饰类:

变成内部类

c.静态的使用场景:

(1).需要进行共享的属性元素

(2).静态方法-都是为了操作静态属性使用-用着方便

(3).综合考虑内存占用问题

二、包装类:

我们知道java是面向对象语言,但是其中基本数据类型 并不是面向对象的,有的时候我们需要把基本数据类型转换成对象,便于操作。如在集合中要存入基本数据类型

包装类和基本数据类型的对应

基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean

除了Character和Boolean外其他的都为数字型包装类而且可以相互转换

自动装箱和自动拆箱:

在jdk1.5之后有了自动装箱和自动拆箱的概念

自动装箱:把一个基本数据类型赋值给一个引用变量时会自动"装载"成其对应的包装类。这样就可以当成对象来使用

自动拆箱:当我们只有包装类对象,但是想变成基本数据类型,会自动把包装类对象"拆解"成对应的基本类型

public class Main { public static void main(String[] args) { Integer i = 20; int n = i; }}

三、hashCode()和equals():

这两个方法都是Object类的非final方法,可以让所有类进行重写,而重写equals方法的时候就必须重写hashCode方法

1.hashCode():

hashCode()方法的作用是获取对象的哈希值,也叫散列值,返回的是int类型,是该对象在哈希表中对应的位置

2.equals():

equals()方法的作用是比较两个对象是否相等,如果没有重写则是比较两个对象的地址是否相等,但是在String类里重写了equals方法,能判断两个字符串的值是否相等。

3.hashCode()和equals()联系:

值得注意的是如果重写了equals()方法那么必须重写hashCode方法,不然该类不能用于散列集合类里应用。

如果a.equals(b)为true,那么a和b的hashCode()必须相等

如果a.equals(b)为false,那么a和b的hashCode()可能相等

如果a.hashCode()!=b.hashC0de,那么a.equals(b)一定为false

如果a.hashCode()==b.hashC0de,那么a.equals(b)不一定为true

四、异常: 1.异常的分类:

所有异常直接或间接来自java.lang.Throwable类

Throwable类下还有java.lang.Error和java.lang.Exception两个类

Error类是表明合理的应用程序不应该试图抓住一类严重的问题,大多数这样的错误都是异常情况

Exception类是表明合理的应用程序应该试图抓住一类问题,下面还有以下两个异常

a.编译时异常(除RuntimeException):

在写代码期间必须解决的问题使用throws抛出异常,try...catch捕获异常来解决

b.运行时异常(RuntimeException):

在运行代码期间出现,只有运行完才能看见

2.常见异常:

a.NullPointerException(空指针异常):

出现原因:对象为空还要调用这个对象,就会出现该异常

b.ClassCastException(类型转换异常):

出现原因:出现在java多态中,编译时不知道类型转换是否正确,如果不正确在运行期时就会出现该异常

c.ArrayIndexOutOfBoundsException(数组下标越界异常): 

出现原因:在使用数组时,遍历或者调用数组元素时超过索引位置时聚会出现该异常

d.SQLException(操作数据库异常): 

出现原因:大多是sql语句错误

e.NumberFormatException(字符串转换数字异常):

出现原因:当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时

3.常见错误:

a.java.lang.OutOfMemoryError(内存不足错误):

出现原因:当可用内存不足以让虚拟机分配给一个对象时抛出该错误

b.java.lang.StackOverflowError(堆栈溢出错误):

出现原因:当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误,递归无出口时也会抛出

c.java.lang.NoClassDefFoundError(未找到类定义错误) :

出现原因:当虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。