Java基础知识点总结

目录

1、java语言具有良好的可移植性

2、一个java文件仅有一个public修饰的类

3、java访问权限

4、java的数据类型

5、包装类与装箱拆箱

6、全局(成员)变量与局部变量

7、成员变量(实例变量+类变量)的默认值

 8、java内存分区

9、面向对象的三大特征

10、单继承

11、方法重写与方法重载

12、Object类中的方法


1、java语言具有良好的可移植性

java源码(.java)——>字节码(.class)——>机器码

编译器:将源码编译为字节码

JVM:不同平台对应的JVM将字节码翻译成该平台的机器码

程序员编写的是java源码;运行的是经JVM翻译的机器码;

跨平台的是java程序;JVM是用C/C++开发的软件,不同平台有不同版本;

2、一个java文件仅有一个public修饰的类

可以有多个类,但public修饰的类只能有一个,且类名与文件一致

3、java访问权限

访问修饰符:private 私有的;protected 受保护的;public 公开的

形成四种访问权限:private,default,protected,public

未加修饰符即为:default

修饰成员变量或成员方法

private:该成员可被该类内部成员访问

default:该成员可被同一包下的类访问

protected:该成员可被同一包下的类及其子类访问

public:该成员可被任意包下,任意类的成员访问

修饰类时,仅两种访问权限

default:该类可被同一包下其他类访问

public:该成员可被任意包下,任意类访问

4、java的数据类型

基本数据类型+引用数据类型

基本数据类型共8个,分4类;

整数:byte;short;int;long

浮点数:float;double

字符类型:char

布尔类型:boolean

除布尔外,其他7种类型可视为数字类型,可相互类型转换

引用类型对一个对象的引用,3类

数组;类;接口;

本质:通过指针,指向堆中对象所持内存空间(java语言未沿用指针这个说法)

5、包装类与装箱拆箱

“一切皆对象”,8种基本数据类型不具备对象特性;为每个基本数据类型定义一个对应的引用类型,即包装类。

Byte、Short、Integer、Long、Float、Double、Character、Boolean;

装箱:基本数据类型——>引用数据类型(对象)

拆箱:引用数据类型(对象)——>基本数据类型

自动装箱和拆箱:jdk1.5

6、全局(成员)变量与局部变量

java中没有真正的全局变量;

成员变量:

1、类的范围内定义的变量

2、有默认初始值

3、未被static修饰的为实例变量(实例对象的属性),存储在对象所在堆内存中,生命周期与对象相同

4、static修饰的为类变量(该类所有对象共享的变量),存储在方法区中,生命周期与当前类相同

局部变量:

1、方法内定义的变量

2、没有默认初始值

3、存储在栈内存中,作用范围结束自动释放

7、成员变量(实例变量+类变量)的默认值

引用类型:null

基本数据类型:

 8、java内存分区

程序运行过程中,jvm利用一段空间存储程序执行期间需使用的数据和相关信息,即JVM内存

五部分:程序计数器(Program Counter Register);java栈/VM栈(VM Stack);本地方法栈(Native Method Stack);方法区(Method Area);堆(Heap);

程序计数器(PC寄存器):程序指令;

线程隔离,随程序运行空间不变,无内存溢出。

java栈:栈帧;

一个栈帧对应被调用的一个方法,栈帧中包括:局部变量表、操作数栈、指向运行时常量池的引用、方法返回地址、附加信息;线程执行方法,创建栈帧并入栈,方法执行完毕,栈帧出栈;线程隔离。

本地方法栈:同java栈原理作用类似,java栈为执行java方法服务,本地方法栈则是执行本地方法(Native Method)服务。线程隔离。

方法区:类的信息(类名,方法,字段)、静态变量、常量、编译后的字节码、运行时常量池

堆:对象本身、数组

9、面向对象的三大特征

封装、继承、多态

封装:将对象成员变量和实现细节隐藏起来,将对象的方法暴露出来,用方法实现对对象信息的安全访问和操作。

1、隐藏类的实现细节;

2、让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理访问;

3、可进行数据检查,从而有利于保证对象信息的完整性;

4、便于修改,提高代码的可维护性;

继承:继承是面向对象实现程序复用的一种手段。子类继承父类后,直接具备父类的属性和方法。在此基础上进行成员变量和方法的扩展。

多态:将子类对象直接赋给父类变量,运行时依然表现出子类特征。

其中父类型有三种:类;抽象类;接口;

10、单继承

java是单继承,即一个类仅能有一个直接父类。JAVA在设计时参考C++语法,C++支持多继承,但多继承易导致混淆。java可以有任意多个间接父类,可间接实现“多继承”。

11、方法重写与方法重载

方法重载:同一个类内,方法名相同、参数列表不同的方法之间就是重载关系。重载与返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分。

方法重写:发生在子类与父类中,若子类方法想要和父类方法构成重写关系,则它的方法名、参数列表必须与父类方法相同。另外,返回值要小于等于父类方法,抛出的异常要小于等于父类方法,访问修饰符则要大于等于父类方法。还有,若父类方法的访问修饰符为private,则子类不能对其重写。构造方法不能重写(构造方法需与类名一致);

12、Object类中的方法

Class<?> getClass():返回该对象的运行时类;

boolean equals(Object obj):判断指定对象与该对象是否相等;

int hashCode():返回该对象的hashCode值。在默认情况下,Object类的hashCode()方法根据该对象的地址来计算。但很多类都重写了Object类的hashCode()方法,不再根据地址来计算其hashCode()方法值;

String toString():返回该对象的字符串表示,当程序使用System.out.println()方法输出一个对象,或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的toString()方法返回该对象的字符串表示。Object类的toString()方法返回 运行时类名@十六进制hashCode值 格式的字符串,但很多类都重写了Object类的toString()方法,用于返回可以表述该对象信息的字符串;

Object类还提供了wait()、notify()、notifyAll()这几个方法,通过这几个方法可以控制线程的暂停和运行。

Object类还提供了一个clone()方法,该方法用于帮助其他对象来实现“自我克隆”,所谓“自我克隆”就是得到一个当前对象的副本,而且二者之间完全隔离。由于该方法使用了protected修饰,因此它只能被子类重写或调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

垂子帘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值