Java里的String类为什么是final的

今天在看《图解设计模式》,里面出了一个问题“String类用final修饰,导致它无法被继承(扩展),这样做违反了开闭原则,这么做有什么正当理由?”

答案是效率安全性 

首先是效率,由于String类它基本上是最频繁使用的几个类之一,如果使用的不好,会出现很明显的性能问题。所以干脆做成final类的。可以在JVM里做很多优化(比如放在栈中重用),类似的还有StringBuilder,

string  [str??]  详细X

基本翻译

n. 线,细绳;一串,一行

vt. 扎,缚;使排成一列,串起;伸展,拉直

vi. 连成一串;排成一列

n. (String)人名;(德)施特林;(瑞典)斯特林

网络释义

String: 字符串

string quartet: 弦乐四重奏

string instrument: 弦乐器

原文地址:https://www.cnblogs.com/xujanus/p/9234150.html

时间: 2024-11-09 08:35:27

Java里的String类为什么是final的的相关文章

为什么jdk中把String类设计成final

为什么jdk中把String类设计成final? 最佳答案: 主要是为了"效率" 和 "安全性" 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final. 其它答案一: String和其他基本类型不同,他是个对象类型.既然是对象类型,如果是在静态方法下是必须调用静态方法或值的,如果是非静态的方法,就必须要实例化. main函数是个static的.所以String要能像其他的基本类型一样直接被调用.这也是

学java教程之String类

学编程吧学java教程之String类发布了,欢迎通过xuebiancheng8.com来访问 java类中的String类应该是用的最多的一个类,我们时时刻刻都离不开String类,时时刻刻都在用,面试的时候经常考,比方说问String类是不是基本数据类型.答案是否定了,String类不是基本数据类型,只不过String类和基本数据类型的用法很相似. 下面来看String类的用法. String str= “abc”;//定义了一个字符串abc String str1= new String(

String类为什么是final的

首先我们使用new创建一个String对象的时候比如: String str=new String("123"); 这句话里面创建了两个对象,第一个在系统中创建了一个"abc"这个字符串: 然后在创一个Str对象,然后在让"123"这个字符串的引用: 创一个String对象相当于创了两个. 在说说为啥String类设置为final类型. fianl类型,是一种不能被修改的类型. 试想,如果我对 str=str.toUpperCase(); 为啥这

java 中的String类

String a = "aaa"; 用这种方式的时候java首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它 如果没有则创建 String a = new String("aaa"); 是不管内存中有没有"aaa" 都开辟一块新内存保存它 可以用以下方法验证下 String a = "aaa"; String b = "aaa"; String c = new String

Java里的时间类以及函数

1.Java计算某一月份的最大天数 Calendar time=Calendar.getInstance(): time.clear(): time.set(Calendar.YEAR,year): time.set(Calendar.MONTH,i-1)://注意,Calendar对象默认一月为0 int day=time.getActualMaximum(Calendar.DAY_OF_MONTH)://本月份的天数 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当

Java String类为什么是final的?

答:1.为了实现字符串池         2.为了线程安全         3.为了实现String可以创建HashCode不可变性 首先你要理解final的用途,在分析String为什么要用final修饰,final可以修饰类,方法和变量,并且被修饰的类或方法,被final修饰的类不能被继承,即它不能拥有自己的子类,被final修饰的方法不能被重写, final修饰的变量,无论是类属性.对象属性.形参还是局部变量,都需要进行初始化操作. 在了解final的用途后,在看String为什么要被fi

java中的String类常量池详解

test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[] args){ String a = "a1"; String b = "a"+ 1; System.out.println(a==b); }//true } test2: package StringTest; public class test2 { /** *

JAVA API(一)String类和StringBuffer类

1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号""之内,如"abc".在Java中定义了String和StringBuffer类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用.下面将对String类和StringBuffer类详细讲解. 1.1String类的初始

Java中的String类与StringBuffer类

String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值 (2)String类对象的性能远不如StringBuffer类. 具体解释如下: 在java中有3个类来负责字符的操作. 1.Character 是进行单个字符操作的, 2.String 对一串字符进行操作.不可变类. 3.StringB