21.Java基础_String类

String类构造方法

package pack1;
//推荐使用直接赋值的方式得到字符串
public class test {
public static void main(String[] args) {
//public String(): 创建一个空白字符串对象,不含有任何内容
String s1=new String();
System.out.println("s1:"+s1); //"s1: " //public String(char[] chs):根据字符数组的内容,来创建字符串内容
char[] chs={'a','b','c'};
String s2=new String(chs);
System.out.println("s2: "+s2); //"s2: abc" //public String(byte[] bys): 根据字节数组的内容,来创建对象
byte[] bys={97,98,99};
String s3=new String(bys);
System.out.println("s3: "+s3); // "s3: abc" //public s="abc"; 直接赋值方式创建字符串对象,内容就是abc
String s4="abc";
System.out.println("s4 "+s4); //"s4: abc"
}
}
String类特点:


变量s1,s2,s3,s4在main函数的栈内存中,他们指向堆内存地址。char数组首先在栈内存开辟空间,然后new String()操作在堆内存中创建索引变量ref(用来链接堆内存中数组的首地址),可以看出s1,s2指向的地址是不同的,但是他们的堆内存中的索引都指向char数组。再来看s3,s4,用String s=“abc”方式创建出来的对象,字符串会被存储在堆内存中的常量池,如果有别的对象也用该方式创建,并且字符串完全一致,则共享常量池内的该字符串。

注意:如果再来一句 s3="hdu"; s4的值会改变么?我试了一下,发现s4是不会改变的,所以执行该语句时,是又在堆内存的常量池中创建了一个“hdu”字符串,然后将其首地址赋给了s3,期间并不会改变s3所指向的地址,也不会改变常量池中的“abc”字符串。
String类对象的比较

package pack1;
//推荐使用直接赋值的方式得到字符串
public class test {
public static void main(String[] args) {
//构造函数得到对象
char[] chs={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs); //直接赋值的方式得到对象
String s3="abc";
String s4="abc"; //比较字符串对象地址是否相同
System.out.println(s1==s2); //false
System.out.println(s1==s3); //false
System.out.println(s3==s4); //true
System.out.println("------------"); //比较字符串内容是否相同
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //true
System.out.println(s1.equals(s4)); //true
}
}
21.Java基础_String类的更多相关文章
- java基础-Arrays类常用方法介绍
java基础-Arrays类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Array类的概念 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定 ...
- java基础-System类常用方法介绍
java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...
- java基础-BigInteger类常用方法介绍
java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...
- java基础-Math类常用方法介绍
java基础-Math类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Math类概念 Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函 ...
- java基础-Integer类常用方法介绍
java基础-Integer类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需 ...
- Java基础-Calendar类常用方法介绍
Java基础-Calendar类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Calendar类概念 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 Y ...
- Java基础-Date类常用方法介绍
Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...
随机推荐
- sqlserver刷新视图
sqlserver 用于刷新当前数据库所有视图的存储过程 create procedure dbo.proc_refreshview as begin ) declare cur_view curso ...
- June 30th, 2019. Week 26th, Sunday
It's so easy to be careless, it takes courage and courage to care. 不在乎很容易,但在乎却需要很多勇气. Sometimes it w ...
- AcWing 30. 正则表达式匹配 (剑指OFFER leetcode 10)
题目描述请实现一个函数用来匹配包括’.’和’*’的正则表达式. 模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式. ...
- 设计模式-FlyWeight(结构型模式) 针对 需要创建大量对象的情形,被共享的状态作为内部状态,不被共享的状态作为外部状态
以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Flyweight.h #pragma once #include<string> class FlyWeig ...
- 腾讯云服务器centos7.2+nginx(开启gzip压缩)+uwsgi+Django+react
因为项目原因,学习了react,Django,完成react开发项目过后,打包(做好了代码分割.压缩)放入Django中,在本地运行速度很快,结果放到服务器中,虽然某些js文件很小(只有一百多kb), ...
- php+laravel依赖注入浅析
laravel容器包含控制反转和依赖注入,使用起来就是,先把对象bind好,需要时可以直接使用make来取就好. 通常我们的调用如下. $config = $container->make('c ...
- Qt Designer布局预览正常,代码调用时所有控件堆在一起
一.实验环境 1.Windows10x64 2.anaconda4.6.9 + python3.7.1(anaconda集成,不需单独安装) 3.pyinstaller3.5 二.问题描述 1.Qt ...
- new 关键字 和 newInstance() 方法的 区别
区别1: new是一个关键字,可以说是一个指令: newInstance()是一个方法,Class对象的一个方法. 区别2: new主要作用是在内存中生成一个实例,而这个类可以没有提前加载到内从中: ...
- 《细说PHP》 第四版 样章 第二章 PHP的应用与发展 4
2.4 PHP的发展 最初创建时,PHP是一个简单的用Perl语言编写的程序,只是为了统计自己的网站有多少访问者.后来又用C语言重新编写,多年来,PHP经过无数开源贡献者的不断迭代,历经数个版本,已 ...
- git 清除远程仓库已经删除的本地分支 清除已经合并到master的本地分支
在gitlab中执行deleted merged.也是可以在本地看到这些分支的 查看本地分支和追踪情况: git remote show origin 可以发现远程分支已被删除的分支,根据提示可以使用 ...