首页 > 编程语言 >JavaSE--String类

JavaSE--String类

时间:2023-08-15 21:45:53浏览次数:42  
标签:String -- System 字符串 println new JavaSE out

一、String内存图

// jvm内存图
String s1 = "abcde";
String s2 = "abcde" + "zz";
String s3 = new String("yy");

垃圾回收器不会释放常量

 

二、比较字符串最好使用String类中重写的equal方法

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); // true
// s1 与 s2 都存放在字符串常量区中,s1 与 s2 都直接指向字符串常量区同一地址,所以为true

String s3 = new String("efd");
String s4 = new String("efd");
System.out.println(s3 == s4); // false
// 通过new关键字创建对象,会在堆内存中创建,
// s3 与 s4 在堆内存中创建的对象都指向字符串常量区的“efd”
// 但是s3 与 s4 指向堆内存中的对象的不一样 所以为false
System.out.println(s3.equal(s4)); // true

 

三、String类中常用的构造方法

String s = new String("");
String s = "";
String s = new String(char数组);
String s = new String(char数组,起始下标,长度);
String s = new String(byte数组);
String s = new String(byte数组,起始下标,长度)
// 最常用
String s = "";
String s = new String("");
byte[] bytes = {97,98,99};// 97 a   98 b   99 c
// 将byte数组中全部转换为字符串
String s2 = new String(bytes);
System.out.println(s2);// abc

// String(字节数组,数组元素下标的起始位置,长度)
// 将byte数组中的一部分转换成字符串。
String s3 = new String(bytes, 1, 2);
System.out.println(s3); // bc
// 将char数组全部转换成字符串
char[] chars = {'你','好','大','家','好'};
String s4 = new String(chars);
System.out.println(s4);

// 将char数组的一部分转换成字符串
String s5 = new String(chars, 2, 3);
System.out.println(s5);// 大家好

 

四、String类常用方法

1、获取下标位置的字符CharAt

//char charAt(int index)
char c = "大家好".charAt(1);
System.out.println(c); // 家

2、字符串之间比较大小compareTo

// 2(了解).int compareTo(String anotherString)
// 字符串之间比较大小不能直接使用大于小于号,需要使用compareTo方法
int result = "abc".compareTo("abc");
System.out.println(result); //0(等于0) 前后一致  

int result2 = "abcd".compareTo("abce");
System.out.println(result2); //-1(小于0) 前比后小

int result3 = "abce".compareTo("abcd");
System.out.println(result3); // 1(大于0) 前比后大

3、前面字符串中是否包含后面的子字符串contains

//boolean contains(CharSequence s)
// 判断前面的字符串中是否包含后面的子字符串
System.out.println("HelloWorld.java".contains(".java")); // true
System.out.println("http://www.baidu.com".contains("https://")); // false

4、判断当前字符串是否以某个子字符串结尾endsWith

//boolean endsWith(String suffix)
// 判断当前字符串是否以某个子字符串结尾
System.out.println("test.txt".endsWith(".java")); // false
System.out.println("test.txt".endsWith(".txt")); // true

5、比较两个字符串是否相等equal

//boolean equals(Object anObject)
// 比较两个字符串必须使用equals方法,不能使用“==”
// equals只能看出相等不相等。
// compareTo方法可以看出是否相等,并且同时还可以看出谁大谁小。
System.out.println("abc".equals("abc")); // true

6、判断两个字符串是否相等,并且忽略大小写equalsIgnoreCase

//boolean equalsIgnoreCase(String anotherString)
// 判断两个字符串是否相等,并且同时忽略大小写
System.out.println("ABc".equalsIgnoreCase("abC")); // true

7、将字符串对象转换成字节数组getBytes

//byte[] getBytes()
// 将字符串对象转换成字节数组
byte[] bytes = "dslds".getBytes();
for(int i = 0; i < bytes.length; i++){
    System.out.println(bytes[i]);
}

8、判断某个子字符串在当前字符串中第一次出现处的索引indexOf

//int indexOf(String str)
// 判断某个子字符串在当前字符串中第一次出现处的索引
System.out.println("abcedabcaaedaa".indexOf("ed"));

9、isEmpty

10、length

11、lastIndexOf

12、replace

13、split

14、startsWith

15、substring

16、substring

17、toCharArray

18、toLowerCase

19、toUpperCase

20、trim

21、valueOf

//boolean isEmpty()
// 判断某个字符串是否为“空字符串”。底层源代码调用的应该是字符串的length()方法。
//String s = "";
String s = "a";
System.out.println(s.isEmpty());

//int length()
// 判断数组长度是length属性,判断字符串长度是length()方法。
System.out.println("abc".length());
System.out.println("".length());

//int lastIndexOf(String str)
// 判断某个子字符串在当前字符串中最后一次出现的索引(下标)
System.out.println("aaaaabbbbbaaa".lastIndexOf("aa")); 

//String replace(CharSequence target, CharSequence replacement)
// 替换
String newString = "http://www.baidu.com".replace("http://", "https://");
System.out.println(newString); //https://www.baidu.com
// 把以下字符串中的“=”替换成“:”
String newString2 = "name=zhangsan&password=123&age=20".replace("=", ":");
System.out.println(newString2); //name:zhangsan&password:123&age:20

//String[] split(String regex)
// 拆分字符串
String[] ymd = "200-11-11".split("-");
for(int i = 0; i < ymd.length; i++){
    System.out.println(ymd[i]);
}
String param = "name=zhangsan&password=123&age=20";
String[] params = param.split("&");
for(int i = 0; i <params.length; i++){
    System.out.println(params[i]);
    // 可以继续向下拆分,可以通过“=”拆分。
}

//boolean startsWith(String prefix)
// 判断某个字符串是否以某个子字符串开始。
System.out.println("http://www.baidu.com".startsWith("http")); // true
System.out.println("http://www.baidu.com".startsWith("https")); // false

//String substring(int beginIndex) 参数是起始下标。
// 截取字符串
System.out.println("http://www.baidu.com".substring(7)); //www.baidu.com

//String substring(int beginIndex, int endIndex)
// beginIndex起始位置(包括)
// endIndex结束位置(不包括)
System.out.println("http://www.baidu.com".substring(7, 10)); //www

//char[] toCharArray()
// 将字符串转换成char数组
char[] chars = "我是中国人".toCharArray();
for(int i = 0; i < chars.length; i++){
    System.out.println(chars[i]);
}

//String toLowerCase()
// 转换为小写。
System.out.println("ABCDefKXyz".toLowerCase());

//String toUpperCase();
System.out.println("ABCDefKXyz".toUpperCase());

//String trim();
// 去除字符串前后空白
System.out.println("      aaa      bbb        ".trim());

//String中只有一个方法是静态的,不需要new对象
// 这个方法叫做valueOf
// 作用:将“非字符串”转换成“字符串”
//String s1 = String.valueOf(true);
// 这个静态的valueOf()方法,参数是一个对象的时候,会自动调用该对象的toString()方法
String s1 = String.valueOf(new Customer());
System.out.println(s1); // 没有重写toString()方法之前是对象内存地址

 

标签:String,--,System,字符串,println,new,JavaSE,out
From: https://www.cnblogs.com/hyy-0/p/17618138.html

相关文章

  • 对线程池的理解
    线程池是一种并发编程的技术,它是管理和重用线程的一种机制,能够有效地提高多线程应用程序的性能和资源利用率。线程池维护一组可重用的线程,可以分配任务给这些线程来执行,从而避免了频繁地创建和销毁线程,减少了系统开销。以下是我对线程池的一些关键理解:线程池的组成:线程池由线......
  • 【Python】解决“Tk_GetPixmap: Error from CreateDIBSection”闪退问题
    解决Python使用Tkinter的Notebook切换标签时出现的“Tk_GetPixmap:ErrorfromCreateDIBSection操作成功完成”闪退问题零、问题描述在使用Tkinter的Notebook控件时,对其标签进行切换,发现切换不了,一切换就报如下图错误:第一个页面正常显示,后面的就都不行了,都是报这个错误。第......
  • JavaSE--StringBuffer类与StringBuilder类
    开发中需要大量字符串的拼接操作,建议使用jdk中自带的StringBuffer与StringBuilder类1、StringBuffer优化StringBuffer的性能  在创建StringBuffer的时候尽可能给定一个合适的初始化容量  最好减少底层数组的扩容次数。预估计一下,给一个大一些初始化容量//创建一个初始化......
  • linux shell变量和数据类型
    变量是在编程中用于存储和操作数据的容器。在Shell脚本中,变量不需要事先声明数据类型,可以存储不同类型的值。以下是一些常见的变量和数据类型的示例:1.**字符串变量**:字符串是文本数据,在Shell脚本中用双引号或单引号括起来。NAME="Alice"MESSAGE='Hello,World!'2.**整数......
  • JavaSE--基本数据类型的包装类
    一、八种包装类1、为什么需要基本数据类型的包装类  有以下需求:方法参数为Objectobj,但是有需要传进去一个数字或者字符,publicclassIntegerTest01{publicstaticvoidmain(String[]args){//有没有这种需求:调用doSome()方法的时候需要传一个数字进去......
  • 配置无线网络
     目标:配置图示拓扑,使得笔记本电脑能根据DHCP服务器获得IP,笔记本vlan为192.168.101.x基本概念:AP:accesspoint 使得笔记本电脑得以连接wifiAC:控制AP的设备 1.AP配置原理及思路AP自动获得IP思路:1.配置DHCP客户端2.配置DHCP服务......
  • IO流
    IO(输入/输出)流是指用于在程序和外部数据源(例如文件、网络连接、内存缓冲区等)之间进行数据传输的机制。它是计算机编程中处理输入和输出的基本方式之一。IO流可以分为两种类型:输入流和输出流。输入流用于从外部数据源中读取数据到程序中,而输出流用于将程序中的数据写入到外部数据......
  • python 全国省名列表
    ['吉林','天津','台湾','云南','海南','山西','四川','山东','江西','浙江','辽宁','福建','湖北','江苏','内蒙古','宁夏'......
  • ansible剧本
    ansible剧本简单剧本----name:这是一个安装nginx的剧本hosts:webtasks:-name:01安装nginxyum:name:nginxstate:installed-name:02启动nginxsystemd:name:nginxstate:started剧本的高级特性高级特性是为了简化剧本比如,创建10个系统的用户不用循环......
  • 【线性代数】线性方程组 如何求方程组的解/基础解系/通解
    1.如何求齐次方程组的基础解系前面已经学过:基础解系的定义为:一个向量组中所有的向量都是原方程的解,并且线性无关,又能由这个向量组线性表出这个方程组的所有解。先讲齐次方程组是因为它右侧常数都为0,解起来更为简单。步骤:先对齐次方程组的系数矩阵作初等行变换,直到化为行阶梯矩......