1、如何解决String乱码的问题?

String乱码的主要原因主要有两个:字符集不支持复杂汉字;二进制进行转化时字符集不匹配。

在以后使用String时候,为了解决String乱码的问题,主要注意以下两点:

1、所有可以指定字符集的地方强制指定字符集,比如new String 和getBytes这两个地方;

2、应该使用UTF-8这种能完整支持复杂汉字的字符集

2、 为什么String是不可变的?

主要是因为String和保存数据的char数组,都被final关键字所修饰,所以是不可变的。

不可变是什么?

不可变指的是类值一旦被初始化,就不能再被改变了,如果被修改,将会是新的类。

为了更好的理解String的不可变,从String的源码可知:

public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for character storage. */private final char value[];/** Cache the hash code for the string */private int hash; // Default to 0/** use serialVersionUID from JDK 1.0.2 for interoperability */private static final long serialVersionUID = -6849794470754667710L;

从源码可以看出:

  1. String类被final修饰,说明String类绝不可能被继承,也就是说任何对String的操作方法,都不会被继承覆写;
  2. String中保存数据的是一个char的数组value。可以发现value也是被final修饰的,也就是说value一旦被赋值,内存地址是绝对无法修改的,而且value的权限是private的,外部绝对访问不到,String也没有开放出可以对value进行赋值的方法,所以说value一旦产生,内存地址就根本无法被修改。

以上两点就是String不变形的原因,充分利用了final关键字的特性,如果自行定义不可变的类时,可以模仿String的这两点操作。

因为String具有不可变性,所以String的大多数操作方法,都会返回新的String。

2、String相关问题相关推荐

  1. JAVA基础5——与String相关的系列(1)

    与String相关的系列 String, 是JAVA中常见的一个引用类型,且其具有一定的特殊性. String类型被设置为final型,即不可继承,也就不可修改其中的实现. String可以改变吗 S ...

  2. boost::mpl::string相关的测试程序

    boost::mpl::string相关的测试程序 实现功能 C++实现代码 实现功能 boost::mpl::string相关的测试程序 C++实现代码 #include <string> ...

  3. c++ string 长度限制_面试中要会的String相关问题

    在java面试中,String是面试官最喜欢问,甚至是最先问的问题.这是在考验你的基本功,也是考验你的能力.String都答不上来,下面就不用继续了.我总结一些String相关的试题,希望对大家在以后 ...

  4. LLVM中的String相关

    LLVM中的String相关 1. 传递字符串(`StringRef` 类和 `Twine` 类) 1.1 `StringRef`类 1.1.1 StringRef.getAsInteger()成员函 ...

  5. 大数据技术之_31_Java 面试题_02_== 和 equals 有什么区别 + String 相关 + 多态 + 传值 + static 加载机制 + 线程

    大数据技术之_31_Java 面试题_02 1.== 和 equals 有什么区别? 2.为什么需要同时覆写 hashCode 和 equals 方法? 3.为什么用 eclipse 重写 hashC ...

  6. java String相关

    String相关 字符型常量和字符串常量的区别 形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符 含义上: 字符常量相当于一个整形值(ASCII值),可以参加表达式运算 字 ...

  7. Java字符串String相关2

    先在定义字符串: 1 String str="字符串常量"; 2 String str1=new String("字符串常量"); 3 String str2= ...

  8. java中字符 的含义 有什么作用_Java中字符串常见题之String相关讲解

    今天给大家带来的是在面试中经常被问到的一道题: 无论在Java还是Android中,String是一个很常见的类,但是大家真的很了解吗,我这里有几个题: 1. String str1 = " ...

  9. openFOAM学习笔记(三)—— char和string相关的类

    openFOAM中的char和string并不是直接使用C++提供的string,而是进行了一系列的封装,并添加了更多的功能.这里进行一个总结. char类型的更多功能 openFOAM中并没有对ch ...

  10. Re:从0开始的Python学习生活(Ⅱ)——string相关

    Python的string还是比较友善的. # some python's function of srting# + and * # what's more, we can find that bo ...

最新文章

  1. 【OpenCV】正确创建用于保存YUV420P格式的cv::Mat
  2. Windows Phone实用开发技巧(1):保存图片及加载图片
  3. oracle 创建 触发,Oracle 创建触发器
  4. 实验二:网络嗅探与欺骗
  5. java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题
  6. 携程发布2021第三季度财报:营收53亿元 国际国内旅游市场“攻守”同发力
  7. Targeted Resumes How to Write a Targeted Resume By Alison Doyle
  8. 彩灯(洛谷-P3857)
  9. [恢]hdu 2186
  10. web.xml文件中mime-mapping
  11. 目标检测(十三)--MultiPathNet
  12. AD(PCB)知识总结
  13. 【C / EasyX】十字消除游戏的实现方法
  14. Android热修复Sophix的使用
  15. 让View具有弹性效果的动画——SpringAnimation
  16. 数分下第11讲(9.5节) 多变量函数的Taylor公式与极值
  17. 判断二叉树是否能成为折半查找判定树
  18. Linux下C语言 对pow、exp未定义引用问题
  19. CortexM4内核Stm32-HAL_Init()及HAL_InitTick(TICK_INT_PRIORITY()详解——Systick中断优先级
  20. EXCEL教程 | 保存多比例尺、多尺寸地图,支持大图、加水印、保存PNG、TIF、HTML等格式

热门文章

  1. qpsk调制解调matlab_本科毕业设计课题—QPSK相干解调的MATLAB仿真(3)
  2. pythonrequest方法_解决Python requests 报错方法集锦
  3. wpf popup 最前面_【第1988期】NutUI 组件 popup 源码分析
  4. python3查找文件中指定字符串_Python3在指定路径下递归定位文件中出现的字符串...
  5. 如何用Python实现多任务版的udp聊天器
  6. poj1364(差分约束+Bellman-ford)
  7. 背包模型dp2之二维费用背包
  8. Educational Codeforces Round 108(Rated for Div. 2) E - Off by One(一种一般图的边最大匹配,好题)
  9. C - Multiplication Table CodeForces - 448D
  10. 网络摄像机ip修改工具_网络监控怎么连接网络