Java连载72-String类详解、多个构造方法
一、String类
1.String类是不可以变类,也就是说String对象声明后
2.java.lang.String;是字符串类型
(1)字符串一旦创建不可再改变,“abc”字符串对象一旦创建,不可在改变成“abcd”。
(2)提升字符串的访问效率:在程序中使用了“缓存”技术,所以在java中所有使用“双引号”括起来的字符串,都会在“字符串常量池“中创建一份,字符串常量池在方法区中存储。
(3)在程序执行过程中,如果程序用到某个字符串,例如:”abc“,那么程序会在字符串常量池中去搜索该字符串,如果没有找到这个字符串则在字符串常量池中新建一个”abc“字符串,如果找到就直接拿过来用。(字符串常量池是一个缓存区,为了提高访问字符串的效率)。
(4)使用Sting的时候,应该注意的问题:尽量不要做字符串频繁的拼接操作,因为字符串一旦创建就不可以改变了,只要频繁的拼接,就会在字符串常量池中创建大量的字符串对象,给垃圾回收带来问题。
package com.bjpowernode.java_learning;
public class D72_1_StringClassAnlysis {
public static void main(String[] args) {
//创建一个“abc”字符串对象,该对象的内存地址,让s1变量保存。
//s1是一个引用,s1指向“abc”对象
String s ="abc";
//可以让s1重新指向吗?s1是局部变量,s1前面是没有final,所以s1是可以重新指向的。
//但是"def"字符串本身是不可以变的。
String s1 = "雄安";
String s2 = "雄安";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
//比较两个字符串的值,不能用双等号,要使用函数.equals,双等号比较的是内存地址
//如果字符串是new出来的,那么内存地址就肯定不相等了,这个了例子也证明了
//直接使用字符串的话,那么就是存储在了方法区的字符串常量池
String s3 = new String("雄安");
String s4 = new String("雄安");
System.out.println(s3==s4);
System.out.println(s3.equals(s4));
System.out.println(s1==s3);
System.out.println(s1.equals(s3));
//题解:以下程序创建了三个对象,两个在堆内存,一个在方法区内存
String s5 = new String("abc");
String s6 = new String("abc");
String[] ins = {"sport","music","food","sleep"};
//要求将上面的兴趣爱好拼接成一个字符串
String temp = null;
for(int i=0;i<ins.length;i++) {
if(i==ins.length-1) {
temp += ins[i];
}else {
temp += ins[i]+",";
}
}
System.out.println(temp);
//不推荐这样做因为做了大量拼接,方法区创建了很多字符串
}
}

二、字符串常用构造方法
package com.bjpowernode.java_learning;
public class D72_2_StringCommonMethod {
public static void main(String[] args) {
//常用的构造方法
String s1 = "abc";
String s2 = new String("abc");
byte[] bytes = {97,98,99,100};
String s3 = new String(bytes);
System.out.println(s3);//从输出结果可以看出,String已经重写了Object中的toString
String s4 = new String(bytes,0,2);//第二个参数是开始位置,第三个参数是长度
System.out.println(s4);
char[] c1 = {'我','是','中','国','人'};
String s5 = new String(c1);
System.out.println(s5);
String s6 = new String (c1,2,2);
System.out.println(s6);
}
}

三、源码:
D72_1_StringClassAnlysis.java
D72_2_StringCommonMethod.java
https://github.com/ruigege66/Java/blob/master/D72_1_StringClassAnlysis.java
https://github.com/ruigege66/Java/blob/master/D72_2_StringCommonMethod.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载72-String类详解、多个构造方法的更多相关文章
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- java 复习整理(四 String类详解)
String 类详解 StringBuilder与StringBuffer的功能基本相同,不同之处在于StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此效率上S ...
- Java的String类详解
Java的String类 String类是除了Java的基本类型之外用的最多的类, 甚至用的比基本类型还多. 同样jdk中对Java类也有很多的优化 类的定义 public final class S ...
- Java常用类(一)String类详解
前言 在我们开发中经常会用到很多的常用的工具类,这里做一个总结.他们有很多的方法都是我们经常要用到的.所以我们一定要把它好好的掌握起来! 一.String简介 1.1.String(字符串常量)概述 ...
- Java常用类(二)String类详解
前言 在我们开发中经常会用到很多的常用的工具类,这里做一个总结.他们有很多的方法都是我们经常要用到的.所以我们一定要把它好好的掌握起来! 一.String简介 1.1.String(字符串常量)概述 ...
- Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.
1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...
- STL之string类详解
通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类 ...
- String类详解,StringBuffer
先说一下String类的equals()方法. 下面我们先看一段代码: 这段代码输出的结果为: ture true -------------- false 咋看之下貌似Object类比较特别,那么我 ...
- String类详解
看了很多文章事实证明之前的通过new创建String对象只有一个是错误的,实际上创建一个或者创建两个对象,一个在堆区,一个在常量池,当常量池中已经存在就不会创建.看了一篇非常好的文章http://ww ...
- 深入理解String类详解
1.Stringstr = "eee" 和String str = new String("eee")的区别 先看一小段代码, 1 public static ...
随机推荐
- Egret Engine 2D - 显示容器
DisplayObjectContainer 所有容器的父类 1 添加 删除 子对象 2 访问子对象 3 检测子对象 4 设置叠放次序 Sprite 继承自DisplayObjectContain ...
- Canvas基本定义
Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.今天我们主要要了解的是2D相关的 大部分2D使用的api都在android.g ...
- Vulkan SDK 之 Descriptor Set Layouts and Pipeline Layouts
当我们有了一个uniform buff之后,vulkan 还不知道这个信息,需要通过descriptor进行描述. Descriptors and Descriptor Sets A descript ...
- 通过SQL语句操作Sqlite数据库
一.数据库的创建 数据库版本为1 //Ctrl+Shift+U:大写 public static final String DATABASE_NAME ="zzw.db"; pub ...
- 二十六、CI框架之分页
一.在模型中读取数据库中的表 二.在控制器中添加dividePage函数 三.在View中写入显示代码 四.查看效果,还是挺漂亮的分页效果 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信 ...
- LIS是什么?
在之前的随笔中,大概介绍了医疗系统有哪些,是干什么的,是怎么配合医院业务的.现在就开始主要的说一说我的主要工作业务 — LIS了. 前面说到过LIS(LIMS),名称是实验室信息管理系统,大概可以分解 ...
- js获取浏览器窗口大小
摘抄:https://blog.csdn.net/qq_27628085/article/details/81947478 常用: JS 获取浏览器窗口大小 // 获取窗口宽度 if ...
- Spring 中将service 注入到普通的工具类中
记录一下,防止忘记. 要求每次生成一个和数据库不重复的组队码,于是就想在工具类中加入service注入 方法1(红框是注意的地方)
- PIP一次性导入所有环境和指定镜像源
镜像源: 阿里云:https://mirrors.aliyun.com/pypi/simple/豆瓣:https://pypi.douban.com/simple/清华大学:https://pypi. ...
- 阿里云-容器服务之集群服务 k8s(Jenkins+gitlab+k8s的devops)- 04
配置jenkins和gitlab: 1.进入jenkins,新增一个项目,demo-piepeline,创建好,点击配置, 2 .设置镜像地址的命名空间: 3.设置镜像的名字 4.设置代码的分支或者t ...