String类为什么是final的
首先我们使用new创建一个String对象的时候比如:
String str=new String("123");
这句话里面创建了两个对象,第一个在系统中创建了一个"abc"这个字符串;
然后在创一个Str对象,然后在让"123"这个字符串的引用;
创一个String对象相当于创了两个。
在说说为啥String类设置为final类型。
fianl类型,是一种不能被修改的类型。
试想,如果我对
str=str.toUpperCase();
为啥这个需要返回返回而不是直接改?
首先如果直接改或许会操作到系统创建的abc这个字符串,当再new一个'abc'对象的时候,系统将不再创建abc对象,而是直接将新创建的对象指向'abc'字符串
如果不设置为final类型会导致直接操作系统字符串,导致系统字符串出现问题。。
String类为什么是final的的更多相关文章
- java问题解读,String类为什么是final的
一.理解final 望文生义,final意为“最终的,最后的”,我理解为“不能被改变的”,它可以修饰类.变量和方法. 所以我是否可以理解为被它所修饰的类.变量和方法都不能被改变呢?答案是”是“,因为有 ...
- Java问题解读系列之String相关---String类为什么是final的?
今天看到一篇名为<Java开发岗位面试题归类汇总>的博客,戳进去看了一下题目,觉得有必要夯实一下基本功了,所以打算边学边以博客的形式归纳总结,每天一道题, 并将该计划称为java问题解读系 ...
- Java里的String类为什么是final的
今天在看<图解设计模式>,里面出了一个问题“String类用final修饰,导致它无法被继承(扩展),这样做违反了开闭原则,这么做有什么正当理由?” 答案是效率和安全性 首先是效率,由于 ...
- String类为什么是final
String 本身一个对象,对象在jvm启动的时候就要实例化和其他类调用就要实例化,第一性能,第二安全,因为string的高频繁的使用,如果被继承,哪里性能将会大大降低,因为不能被继承,换句话来说就比 ...
- java String类为什么是final的
1.为了安全 java 必须借助操作系统本身的力量才能做事,jdk提供的很多核心类比如String,这类内的很多方法 都不是java编程语言本身编写的,很多方法都是调用操作系统本地的api,如果被继承 ...
- java里String类为何被设计为final
前些天面试遇到一个非常难的关于String的问题,"String为何被设计为不可变的"?类似的问题也有"String为何被设计为final?"个人认为还是前面一 ...
- 在java中String类为什么要设计成final?
大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...
- Java中String类为什么被设计为final?
Java中String类为什么被设计为final 首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...
- Java基础——数组应用之字符串String类
字符串String的使用 Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准Java类库中提供了一 ...
随机推荐
- oracle04_plsql
PLSQL:Procedural Language SQL (1) plsql的基本结构(a) declare id constant number(2):=2;--常量定义 name varchar ...
- 第一个RESTful API
一个简单的测试 /** * Created by M.C on 2017/9/8. */ var superagent = require('superagent'); var expect = re ...
- Python--socketserve源码分析(二)
BaseServer::self.process_request(request, client_address) 实现原理: 在类的继承关系中,当子类中没有相应的方法时就会去父类中寻找, 当继承多个 ...
- 实现iota函数
void Reverse(char *s) { char temp; char *p = s; char *q = s; while (*p != '\0') { p ++; } q --; whil ...
- linux相关概念
最近这段时间玩Linux比较多,前面我也转载了好多的相关的Linux指令.这里自己关于Linux概念来自己整理一下. 首先我们应该知道Linux到底是什么? 我们知道Linux这玩意儿是在计算机上面运 ...
- ssm web.xml配置解析
以下为web.xml的配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=& ...
- CString(转)
CString::Compare int Compare( LPCTSTR lpsz ) const; 返回值 字符串一样 返回0 小于lpsz 返回-1 大于lpsz 返回1 区分大小字符 ...
- zabbix监控-percona监控MySQL(三)
监控MySQL实战 标签(linux): zabbix & mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 percona为MySQL制作了专 ...
- absort函数和exit函数
1. exit()函数会结束并退出程序. 1. abosrt()函数会触发程序的异常,然后程序后面的语句就不会执行了.用来提示错误.会出现:
- Spring源码情操陶冶-PathMatchingResourcePatternResolver路径资源匹配溶解器
本文简单的分析下spring对某个目录下的class资源是如何做到全部的加载 PathMatchingResourcePatternResolver#getResources PathMatching ...