Java基础(一)

本文探讨了Java的JVM、JDK和JRE概念,比较了Java与C++的差异,涉及单继承、内存管理、类加载机制等内容,以及StringBuilder和StringBuffer的区别和Java的类加载器模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM JDK JRE

JVM:运行Java字节码的虚拟机,针对不同系统的特定实现(JVM可以理解代码叫做字节码 扩展名.class)

JDK:包含JVM和JRE,能够创建和编译Java程序的开发套件

JRE:Java运行时的环境

Java 和 c++区别

java和c++都是面向对象编程。

(1)java是单继承机制,c++可以多继承。

(2)java不提供指针来访问内存,程序内存更加安全

(3)java有自动回收机制,不需要程序员手动释放无用内存

(4)c++同时支持方法重载和操作符重载。java只支持方法重载

Java的几种基本数据类型

四种整数类型:byte(1) short(2) int(4) long(8)

两种浮点类型:float(4) double(8)

一种布尔类型:boolean

一种字符类型:char(2)

基本类型和包装类型

包装类型的缓存机制

Byte,Short,Integer,Long四种包装类型默认创建了数值[-128,127]的相应类型的缓存数据,Character创建了数值在[0,127]范围的缓存数据,Boolean直接返回True or False。如果超出了缓存数值的值再去创建新的对象,否则直接使用缓存中的对象。

自动装箱拆箱

装箱:将基本类型用他们对应的引用类型包装起来

拆箱:将包装类型转换为基本数据类型

例如:第一行这个代码会发生装箱,等价于第二行代码

           第三行这个代码会发生拆箱,等价于第四行代码(编译过程)

Integer i1 = 40;
Integer i1 = Integer.valueof(40);
int n = i1;
int n = i1.intValue();

String StringBuilder StringBuffer的区别

StringBuilder和StringBuffer都继承自AbstractStringBuilder,这个抽象类并没有被final修饰,StringBuilder和StringBuffer被final修饰。在AbstractStringBuilder中是由字符数组来保存字符串的。String中的对象是不可变的,保证了线程安全。StringBuilder不保证线程安全,StringBuffer对方法或调用的方法加了同步锁保证了线程安全。

StringBuilder和StringBuffer方法在使用无参构造器时:默认初始容量是16的字符缓冲区。

String不可变的原因

因为String被final关键字修饰,被final关键字修饰的变量值不可以改变,方法不能被重写,类不能被继承,引用类型不能改变引用对象。由于保存String的字符串数组(引用类型)是被final修饰,并且没有提供公开的修改方法,因此String是不可变的。

重载和重写

重载

同样的一个方法能够根据不同的输入数据做出不同的处理

要求:同一个类或者父类和子类之间,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和修饰符可以不同

重写

子类继承父类的相同方法,输入数据一样,但要做出和父类不一样的行为

要求:方法名、参数列表必须一样,子类的返回值类型应该小于等于父类的返回类型,子类的修饰符应该大于等于父类,抛出的异常应该小于等于父类

类加载过程

类加载的过程主要分为三步 加载 连接 初始化

加载:将.class的二进制字节流加载到内存中,并且在堆内存中创建一个class对象

连接:分为 验证 准备 解析。验证:是否满足JVM的规范。准备:为类的类变量开辟空间,为其中的变量赋初始值,基本变量为0,引用变量为null。解析:将字符串引用解析为直接

初始化:为类的类变量赋初始化值。

类加载器

自定义类加载器 application classloder extension classloader bootstrap classloader

双亲委派模型

非顶层的类加载器在加载类时,向上传递直到顶层,如果顶层可以加载则加载,如果不可以再向下遍历。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值