java_常用类_String
来源:互联网 发布:linux使用gcc调试 编辑:程序博客网 时间:2024/05/16 23:40
1.String
String 表示的是字符串,什么是字符串?就是一连串的字符而已.
首先学过java的都应该知道,String不是基本数据类型,是一个引用的类型.
String 是不可变类,一旦String对象创建,包含在字符串序列的内容就是不可变的.直到对象被销毁!
那么接下来就应该认识一下常量池:什么是"常量池"?顾名思义就是存放常量的一个池子.在java虚拟机当中有一块独立的区域就是存放字符串常量和基本类型的地方(public static final). 一旦对象创建完成之后就不能在修改对象中存储的字符串内容,所以说String类型是一个不可变的类型.
String对象比较比较:
单独使用""引号创建的字符串都是常量,编译期就已经确定存储到常量池中.如果用''
则创建的是字符类型,字符串可以理解成一堆字符拼接而成的字符串.如果创建的时候类似于"aa"+"cc"
就已经在编译期间确定了,定存储到常量池中.
如果new String();创建的对象是在jvm虚拟机的堆内存里面存储的,是在运行期间创建的.
使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在堆中;
以下代码解释以上所说的内容:
String s1 = new String("11");
String s2 = new String("11");
System.out.println(s1== s2);//false 在对堆内存中,分配的地址不一样,注意 "==" 比较的是地址
String s3 = "22";
String s4 = "22";
System.out.println(s3== s4);//true 在常量池中创建过s3了,所以在s4出来的时候并不会在创建对象了;
System.out.println(s3== s2);//false 一个在堆中,一个在常量池中,显然不一样.
String s5 = "2" + "2";//这句话其实在编译器编译后的class文件中 已经变成 "22"
//s5创建了几个对象?//回答:最多一个,如果常量池里面没有就是创建一个,如果常量池里本来就有就是创建零个!
String特点:
不可变的, 一个String对象的内容不能变,一旦内容变量该对象就变成一个新的String对象了
注:以上内容是个人对String理解的部分,如果有误欢迎及时指出,希望大家共同进步.
阅读全文
1 0
- java_常用类_String
- java_常用类库
- Java基础_常用类_String
- 黑马程序员_String类的常用功能
- _String类
- Java基础回顾_常用类_String常用1
- Java基础回顾_常用类_String常用2
- 第十二章:Java_常用类
- 01_String类常用方法(1)(2)
- 黑马程序员_String类常用语法及面试题
- 【JavaSE笔记】Java常用类及其方法(二)_String
- 【JavaSE学习笔记】常用类介绍02_String,StringBuffer,Integer
- Java菜鸟成长之路__Day_5_Java_常用类_String
- 自定义类_string类
- 黑马程序员_String类
- 黑马程序员_String类
- 黑马程序员_String类
- 黑马程序员_String类
- HDU6038-Function 思维+组合问题
- 在Fragment中OnActivityResult方法中接收Activity中返回的值
- 忘记题目是什么了
- hadoop单机安装配置
- 现代前端技术解析:Web前端技术基础
- java_常用类_String
- 【转】JavaScript & jQuery 面试题
- 判断元素出栈,入栈顺序的合法性
- Android drawable level-list
- ANSYS Workbench 技巧特点
- elasticsearch5 官方文档整理。。。。中
- hexo 博客
- Hdu 5098 Smart Software Installer【思维+拓扑排序】
- c++-----string和深浅拷贝