Java中String类、字符串常量池、字符串常用方法

String类:

String代表字符串类,java中所有双引号中的内容都称为字符串,如:“hello”。字符串是不可改变的,因此字符串是可以共享使用的,相当于char字符数组,但是底层原理是byte字节数组。

创建字符串的四种方式:

// 1.创建字符串对象有四中方式,如下:
public class Stringobj{public static void main(String[] args){// 1-1:第一种括号中不传参直接创建:new String(),括号留空表示创建的是空白字符。String str1 =new String();System.out.println(str1);//""// 1-2:第二种根据字符数组的内容创建:new String(字符数组变量名),括号中写字符数组变量名,不能直接写字符数组表达式,否则解析错误,如:{'a','b'}。char[] char1 = {'o','k'};String str2 = new String(char1);System.out.println(str2);//ok,ok实际是有双引号的字符串// 1-3:第三种根据字节数组创建:new String(byte数组变量名),计算机底层都是字节,因此可以直接使用字节创建。byte[] byte1 = {97,98,99};//a的字节数为97,b的字节数为98,c的字节数为99String str3 = new String(byte1);System.out.println(str3);//abc// 1-4:直接创建:"字符串的内容",如:String str4 = "hello,my name is kuhai.";System.out.println(str4);//hello,my name is kuhai.}
}

字符串的常量池:
字符串中直接使用双引号包裹的字符串就在常量池中,字符串常量池存在于堆当中,常量池中的字符串可以共享。

// 1.常量池:双引号直接包裹着的字符串是在常量池中的。
// 2.==在基本数据类型中是对值的进行比较,在引用型数据类型中时是对地址值的比较。
public class StringPool{public static void main(String[] args){String str1 = "123";String str2 = "123";char[] chararr = {'1','2','3'}; String str3 = new String(chararr);System.out.println(str1 == str2);//true,表明str1和str2的地址值相同System.out.println(str1 == str3);//false,表明str1和str3的地址值不相同System.out.println(str2 == str3);//false,表明str2和str2的地址值不相同}
}

String类的常用方法:

public class StringMethods{public static void main(String[] args){// 1.字符串内容比较:// 1-1:==是对对象地址值进行比较的,若要比较两个字符串内容(区分大小写),那么可以使用:equals(Object)方法,参数可以是任何对象,此方法通过.调用,只有调用者和传入的参数相同时,才会返回布尔值true,如:String str1 =  "123";String str2 = "123";char[] arr = {'1','2','3'};String str3 = new String(arr);String str4 = "kuhai";Boolean str1and2 = str1.equals(str2);Boolean str1and3 = str1.equals(str3);Boolean str2and3 = str2.equals(str3);Boolean str2and4 = str2.equals(str4);System.out.println(str1and2);//trueSystem.out.println(str1and3);//trueSystem.out.println(str2and3);//trueSystem.out.println(str2and4);//false// 提示:equals方法具有对称性,即:str1.equals(str2)和str2.equals(str1)效果是一样的;当常量和变量进行比较时,推荐常量调用equals方法,将变量传入方法中。// 1-2:equalsIgnoreCase(String),忽略英文字母大小写对内容进行比较,内容相同返回布尔值true,如:String strabc = "abc";String strABC = "ABC";Boolean result1 = strabc.equals(strABC);Boolean result2 = strabc.equalsIgnoreCase(strABC);System.out.println(result1);//falseSystem.out.println(result2);//true  //2.获取字符串字符的个数:length(),如:System.out.println(str1.length()); //3// 3.字符串拼接:concat(String),将被调用该方法的字符串和传入的字符串拼接起来且原字符串都不变,只是会生成新的字符串返回,如:String hw = "hello".concat(" world");System.out.println(hw);//hello world// 4.获取字符串指定位置的字符:charAt(int),需要注意:索引从0开始,也就是说,字符串中第一个字符为索引为0,如:String sayhello = "hello,my name is kuhi!";char chars = sayhello.charAt(4);System.out.println(chars);//o// 5.查找某字符在字符串中第一次出现的位置:indexOf(String),返回索引值,没有则返回-1,如:String hel = "hello";int indexhel = hel.indexOf("l");System.out.println(indexhel);//2// 6.截取字符串:substring(int),当给一个索引时表示从某索引位置开始截取后面的所有字符串,当传入两个参数时,表示截取[int1,int2)区间的字符,如:String numstr = "12345";String  substr = numstr.substring(1,3);System.out.println(substr);//23// 7.字符串转换为字符数据:toCharArray(),将某字符串转换为字符数组并返回,原来字符串不变,如:String strtest1 = "abcd";char[] arrtochararr = strtest1.toCharArray();System.out.println(arrtochararr[1]);//b,通过索引的方式拿到数组的元素// 8.字符串转换为字节数组:getBytes(),将某字符串转换为字节数组并返回,原来字符串不变,如:byte[] bt = "abc".getBytes();System.out.println(bt[0]);//97,通过索引拿到数组的元素// 9.字符串替换:replace(oldstr,newstr),将某字符串中旧的字符替换为新的字符并返回,原字符串不变,如:String says = "你好";String replacestr = says.replace("你","他");System.out.println(replacestr);//他好// 10.字符串分割:split(String),将字符串按照某规则进行分割成几部分,并以数组的形式返回,原字符串不变,如:String names = "jack,李明,韩梅梅";String[] namearr = names.split(",");//这里实际是正则表达式,若要以英文句号切割,那么就得传入:\\. ,因为英文句号在正则中有特殊含义。System.out.println(namearr[1]); //李明}
}

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql同步数据到另一张表_mysql:Otter跨机房数据同步(单向)

重要说明:需要同步的表必须要有主键 主键 主键otter是一款基于Java且免费、开源基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库的解决方案。Otter目前支持了什么1. 单向同步, mysql/oracle互相同步2. 双向同步&am…

04day1

无穷的数列 找规律 【问题描述】 有一个无穷序列如下: 110100100010000100000… 请你找出这个无穷序列中指定位置上的数字。 【输入】 第一行一个正整数 N,表示询问次数;接下来的 N 行每行一个正整数 Ai,Ai 表示在序列中的位置。 …

arraylist扩容是创建新数组吗 java_Java编程之数组扩容

一、背景数组在实际的系统开发中用的越来越少了,我们只有在阅读某些开源项目时才会看到数组的使用。在Java中,数组与List、Set、Map等集合类相比,后者使用起来方便,但是在基本数据类型处理方面,数组还是占优势的&#…

【转】Eclipse+CDT+Gcc编译选项控制

原文地址:http://www.oschina.net/question/4873_19441 如果我们的程序调用动态链接库,当在cdt中运行的时候,可以通过run-->enviroment-->添加LD_LIBRARY_PATH 环境变量来设置查找动态链接库文件的路径。但是在运行的时候,程…

apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境

学习网络开发过程中不想“污染”macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求。十里安装了 ubuntu 虚拟机,一般就是在 mac 中 ssh 连接 ubuntu 虚拟机在终端下进行操作学习&#xff0…

java中static关键字简介

static静态关键字: static关键字可以修饰成员变量和成员方法,被修饰的成员是属于类的,而不是简简单单的属于某个对象,也就是说可以不用通过对象调用,而是通过类直接调用。 类变量(静态变量)&a…

[WCF编程]10.操作:回调操作

一、回调操作概述 WCF支持服务将调用返回给它的客户端。在回调期间,许多方面都将颠倒过来:服务将成为客户端,客户端将编程服务。回调操作可以用在各种场景和应用程序中,但在涉及事件或者服务发生时间需要通知客户端时,…

float去掉小数点之后_float类型的存储方式

在c语言中float函数是单精度的。它在内存中以二进制的形式存储。分为符号位,阶码与尾数三部分。 符号位最为简单,如果你存储的是正数那么符号数就是0。如果是负数,则为1。下面,我以13.625为例说明阶码与尾数的表示方法。首先&…

idea 2020.2 如何设置classpath_开发属于自己的第一款IDEA插件!

作者:木杉 http://imushan.com/写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件。要…

java中Arrays类和Math类常用API简介

Arrays类: java.util.Arrays是一个与数组相关的工具类,提供了许多静态方法对数组进行操作,直接通过类点出来使用,无需创建对象。 // 1.Arrays类存在与java.util下,需要导包: import java.util.Arrays; pu…

按15分钟取数据_Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析...

前言文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者: Yura不说数据说 ,PYuraLPS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://note.youdao.c…

UI设计

摘要 源于ajlr项目的验收,过程中ui的设计被屡次提到。所以就有了这样一个思考,什么是ui设计?对于开发人员来说,ui设计是否很重要?以及如何来进行ui设计? ui设计? User Interface,简称…

Java中继承、this关键字、super关键字

继承: 概述:当多个类中存在相同属性和行为时,将这些相同的内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承抽离出来的这个类即可。 子类:当某个类继承了另一个类的时候,可以把这个某…

java中抽象类,abstract关键字

抽象类:java语法规定,包含抽象方法的类为抽象类。 abstract关键字:abstract用来定义抽象方法和抽象类,定义抽象方法格式为:abstract修饰方法,并去掉大括号,直接以封号结束;定义抽象…

c++获取当前时间戳_python开发:python时间模块的使用

前言:今天元宵节,祝福大家元宵节快乐。今天在元宵节给各位朋友分享一下python时间模块。我们在开发中经常会与时间打交道,如:获取事件戳,时间戳的格式化等,这里简要记录一下python操作时间的方法。ython中常…

Linux重新编译内核指南

Linux的一个重要的特点就是其源代码的公开性,全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。      为什么…

python 获取向上两级路径_Python学习第171课--相对路径和绝对路径

【每天几分钟,从零入门python编程的世界!】这节我们补充2个概念:相对路径和绝对路径。●绝对路径就像一棵大树一样,从它的根开始,往上会有大的枝干,在大的枝干上面又会有小一点的树枝,小树枝上面…

Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字

接口: 接口是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和…

百度热力图颜色说明_大数据下的龙港、鳌江人口热力图

大数据下的龙港、鳌江人口热力图--趋势显示,人口逐步集中于区域中心地区与城市 2020-08-25 大数据(big data),是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。大数据有五大特点,即大量(Volume)、高速(Velocity)…