JAVA基础知识归纳(一)

Gaia ·
更新时间:2024-11-10
· 994 次阅读

最近总有杠精在Q群跟我杠JAVA的一些细枝末节的基础知识,故出一系列“科普文”来怒怼杠精

JAVA switch语句表达式支持类型
支持类型大致有六种:
int
char
byte
short
String(java 7才允许)
枚举
常见的boolean与实数性不支持

JAVA何种情况下需要强制类型转换

父类转换为子类时 基本数据类型长度不一,由长度的向长度的数据转换或者数据的二进制存储形式不同时

举例来说

short i=2; int j=i;

这种形式则可以,因为int数据长度比short长,可以放下short数据,而反过来

int j=2; short i=j;

这样则会报错,这是因为short所占用的内存大小比int小,可能会放不下int数据
还有一种情况

float i=2.0f; int j=i;

我们知道float与int长度都一样,但是却无法自动进行转换,那是因为float与int数据的二进制存储方式不同

float:二进制数据第31位存放符号位(0正,1负),30-23位存放阶码,剩下的23-0位存放尾数(小数点后小数位) int:以补码的形式存储,正数补码为其本身,负数补码为处符号位(31位)外其余位取反+1

至于为什么int向float转换时可以自动转换,我个人认为这与java自带的优化机制有关,因为根据我们常人的思维来想整数转换为小数没有问题,而小数转换为整数时就会出现丢失精度的问题

父类转换子类的情况不再赘述
JAVA static 方法与普通方法的区别

static方法被称为静态方法,调用类中的静态方法时,不需要将此类进行实例化就可以直接调用,static方法不可以调用this对象,也不可以调用类中的非静态方法与非静态属性,而非static方法则可以调用static方法,static方法或属性属于整个类不属于某个实例
生存周期:全局

main方法为什么必须是静态(static)的

因为main方法由JAVA虚拟机来调用,访问静态方法是不需要将类实例化,
且如果main方法不声明为静态的,JVM就必须创建main类的实例,
因为构造器可以被重载,JVM就没法确定调用哪个main方法。故main方法必须为静态的

main方法可以有几个

在同一个类中main方法有且只有一个,在一个完整的项目中每个类都可以有一个main方法,但只有一个main方法被执行。

方法重载与重写的区别

重载在同一类中,重写在不同类中。 重载是在统一类中声明多个不同参数或不同定义的同名方法
重写是父类与子类之间的多态性,若子类中有与父类完全相同(具有相同的方法名、返回类型和参数表)的方法,则子类中的新方法将覆盖父类中的旧方法

abstract(抽象类)与interface(接口)的关系
相同点:

都无法被直接实例化 一个类如果继承并要实现一个接口/抽象类的话,就必须对其中的抽象方法进行实现,否则依然得声明为抽象类 接口是特殊的抽象类,比抽象的概念更进一步

不同点:

接口子类由implements来继承,子类可以继承多个接口 抽象类子类由extends关键字来继承,只能继承一个 接口不可声明构造器 抽象类可以声明构造器 抽象类可以有普通方法、静态方法与抽象方法 接口中方法默认由public abstruct修饰为抽象方法,不可私有,从jdk8开始(在这之前不可以)也支持有普通方法,但必须由default来修饰,也是从jdk8开始支持静态方法的定义

易错处:

abstract方法必须在abstract类中,而abstract类中不一定全都是abstract方法,他可以有普通方法

杠精抬杠处:

接口不是(战术后仰.jpg)抽象类,为什么也有抽象方法… 为什么看上面相同点

普通方法与抽象方法区别

普通方法可以被子类重写也可以不被重写 抽象方法必须被子类重写,除非该子类也是抽象类 抽象方法没有方法体 普通方法有方法体

目前只能想到这些,如有谬误或者补充,可在评论处发言


作者:WiKiLeaks CN



java基础知识 归纳 java基础 JAVA

需要 登录 后方可回复, 如果你还没有账号请 注册新账号