String为什么不是基本类型和理解final关键字

@[String为什么不是基本类型和理解final关键字]

八大基本类型

int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

boolean:只有true和false两个取值。

char:16位,存储Unicode码,用单引号赋值。

因此,String类并不是基本数据类。

————————————————

引用:https://blog.csdn.net/wojiao228925661/article/details/82385440

Java为什么不是基本类型

String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是System.Char 对象的有序集合

用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。
java 中String 是个对象,是引用类型

基础类型与引用类型的区别是:
基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构

java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,对于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。


引用:https://blog.csdn.net/qq_41668547/article/details/89603900

String类为什么是final的

1.为了实现字符串池
2.为了线程安全
3.为了实现String可以创建HashCode不可变性

被final修饰的类不能被继承,即它不能拥有自己的子类。

被final修饰的方法不能被重写,但是:
重写的前提是子类可以从父类中继承此方法,所以当父类中被final修饰的方法的访问权限为private时,子类中就可以重写该方法了。

final修饰的变量,无论是类属性、对象属性、形参还是局部变量,都需要进行初始化操作。

1.被final修饰的对象内容是可变的
虽然对象被final修饰对象不可被继承,但其内容依然可以被改变
被final修饰的对象内容可以被改变
2.final关键字与static对比

static关键字修饰变量时,会使该变量在类加载时就会被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次

static和final


引用: https://blog.csdn.net/qq_34375473/article/details/81487803