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类用final修饰,是不可变的,对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关键字的基本用法

在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。

(1) 修饰类

当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
在这里插入图片描述
 
(2) 修饰方法

下面这段话摘自《Java编程思想》第四版:

“使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。“
  
  因此,如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的。

注:类的private方法会隐式地被指定为final方法。

(3) 修饰变量

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象.

1111
上面的一段代码中,对变量i和obj的重新赋值都报错了。

3.final关键字与static对比

static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变

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

static和final

当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。


引用:
理解final关键字
浅析Java中的final关键字

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值