Java常用类之String类

Java中的基本数据型及型转换(常量、字符集、字符编码Unicode) 文章目录前言一、基本数据型1.基本数据型2.型转换3.常量二、字符集、字符编码(Unicode)总结 前言 本文主要介绍Java中的常量、基本数据型(如int、char、String等),简单介绍字符集、字符编码Unicode。 一、基本数据型 1.基本数据型 基本数据型也成为内置数据型,可分为48种 (1)整型 byte(1字节)、short(2字节)、int(4字节)、long(8字节) 取值范围: byte a = 1; short a1 = 2; int a2 = 3; lo 阅读详情

一、String类

1.==与equals的区别

== 比较的是引用类型,是地址值是否相同,是否是同一个对象
equals 比较的是引用类型,默认是比较地址值,而String类重写了equals方法,比较的是内容是否相同

public class App {
    public static void main(String[] args) throws Exception {
        String str1 = "abc";
        String str3 = new String("abc");
        System.out.println(str1 == str3);
        System.out.println(str1.equals(str3));
    }
}

在这里插入图片描述
因为str1和str3不是同一个对象,所以str1==str2是false
但是他们二者内容相同,所以str1.equals(str2)是true

2.定义一个字符串

String str1 = "string1";
String str2 = new String("string2");

以上两种定义方式的区别:
str1 会先在常量池里查找有没有内容是“string1”的常量,有的话那么str1就指向这个常量;如果没有,则会在常量池中new一个string1为内容的对象。
str2会直接先创建一个对象(常量池中已存在,则只需在堆中创建)或者两个对象(常量池中没有,所以堆和常量池中都要创建)。
实例分析

public class App {
    public static void main(String[] args) throws Exception {
        String str1 = "abc";
        String str2 = "abc";
        String str3 = new String("abc");
        String str4 = new String("abc");
        System.out.println(str1 == str2);
        System.out.println(str3 == str4);
        System.out.println(str1 == str3);
        System.out.println(str1.equals(str3));
    }
}

在这里插入图片描述
因为创建str1和str2时,会先查看常量池里是否存在“abc”的常量,再将str1和str2指向该常量,所以str1和str2指向的是同一个对象,所以str1==str2为true。
而str3和str4分别创建了对象,他们指向的是不同的对象,所以str3==str4是false。
同理str1和str3也不可能是同一个对象,所以str1==str3
是false。
然后这四个内容都是“abc”,所以不管是哪个都是使用equals方法都是true。

3.String好像可以修改它的值

这种想法是错误的

public class App {
    public static void main(String[] args) throws Exception {
        String str1 = "abc";
        str1 = "change";
        System.out.println(str1);
    }
}

在这里插入图片描述
看上去就是str1被重新赋值了。其实只是str1从原来指向常量池里的“abc”对象,转而指向常量池里的“change”对象了。而不是str1的对象原本值为“abc”,被修改为“change”。

4.字符串相加

public class App {
    public static void main(String[] args)  {
        String str1 = "abc" + "d";
        String str2 = "abc";
        String str3 = "d";
        String str4 = str2 + str3;
        System.out.println(str1 == str4);
    }
}

在这里插入图片描述
str1在编译时,计算机会直接将“abc”和“d”连接起来,获得“abcd”,然后查看常量池里是否有“abcd”;而str4在编译时,他并不知道str2和str3里是什么,所以他会直接在常量池里创建一个对象。所以str1和str4指向的并不是同一个对象。

5.String类的方法——查找功能

5.1查找某一个子串在字符串中的索引

从前往后找第一次出现的索引 indexOf(“字符/字符串”)
从某个序列开始,子串第一次出现的索引 indexOf(“字符/字符串”,(int)从这里开始)

public class App {
    public static void main(String[] args)  {
        String str1 = "abcdc abc";
        System.out.println(str1.indexOf("c"));
        System.out.println(str1.indexOf("bc"));
        System.out.println(str1.indexOf("c",5));
        System.out.println(str1.indexOf("bc", 5));
    }
}

在这里插入图片描述

5.2从后往前查找某一子串在字符串中首次出现的索引

lastIndexOf(“字符/字符串”)
lastIndexOf(“字符/字符串”,(int)从这里开始从后往前找)

public class App {
    public static void main(String[] args)  {
        String str1 = "abcdc abc";
        System.out.println(str1.lastIndexOf("c"));
        System.out.println(str1.lastIndexOf("bc"));
        System.out.println(str1.lastIndexOf("c",5));
        System.out.println(str1.lastIndexOf("bc", 5));
    }
}

在这里插入图片描述

5.3返回字符串中索引位置处的字符

charAt((int)索引值)

public class App {
    public static void main(String[] args)  {
        String str1 = "abcdc abc";
        System.out.println(str1.charAt(7)); //b(最后一个b)
    }
}
5.4判断字符串中是否以某一子串开头

startsWIth(“字符/字符串”)
==startsWIth(“字符/字符串”,n)==从索引为n处开始,查看字符串是否以某一子串开头。

public class App {
    public static void main(String[] args)  {
        String str1 = "abcdc abc";
        System.out.println(str1.startsWith("a"));
        System.out.println(str1.startsWith("a",6));
        System.out.println(str1.startsWith("a",5));
    }
}

在这里插入图片描述

5.5判断字符串中是否以某一子串结尾

endsWIth(“字符/字符串”)

public class App {
    public static void main(String[] args)  {
        String str1 = "abcdc abc";
        System.out.println(str1.endsWith("c")); //true
    }
}
5.6判断字符串中是否包含某一子串

contains(“字符/字符串”)

public class App {
    public static void main(String[] args)  {
        String str1 = "abcdc abc";
        System.out.println(str1.contains("c")); //true
    }
}

6.String类的方法——比较功能

6.1判断字符串内容是否为空
str.isEmpty();
6.2判断字符串的内容是否相等
String str1 = "Abc";
String str2 = "abc";
String str3 = "Abc";
str1.equals(str2);	//false
str1.equals(str3);	//true
6.3不考虑大小写,判断字符串的内容是否相等
String str1 = "Abc";
String str2 = "abc";
str1.equals(str2);	//true
6.4字符串的升序比较结果

str1.compareTo(str2)
str1 == str2,输出0
str1 < str2,输出负数
str1 > str2,输出整数
其实就是str1-str2的结果,设计ASCII码的计算

public class App {
    public static void main(String[] args)  {
        String str1 ="a";
        String str2 = "c";
        System.out.println(str1.compareTo(str2)); //-2
        System.out.println(str2.compareTo(str1));   //2
    }
}

7.创建并返回一个新的String对象

7.1、连接两个字符串
str1.concat(str2);
7.2、替换字符串中的某一部分,一样的全给换了
public class App {
    public static void main(String[] args)  {
        String str1 ="我很衰,你很衰,他也很衰";
        System.out.println(str1.replace("衰","帅")); 
    }
}

在这里插入图片描述

7.3、字符串的截取

截取索引[a,b)的字符串

public class App {
    public static void main(String[] args)  {
        String str1 ="aabcd";
        System.out.println(str1.substring(0,3));//aab
    }
}
7.4、忽略字符串前后的空格,中间的不忽略
public class App {
    public static void main(String[] args)  {
        String str1 ="   hello java   ";
        System.out.println(str1.trim());//hello java
    }
}
7.5、大小写转换
public class App {
    public static void main(String[] args)  {
        String str1 ="hello JAVA";
        System.out.println(str1.toUpperCase());//HELLO JAVA
        System.out.println(str1.toLowerCase());//hello java
    }
}
7.6、按一定规则分割字符串并返回一个字符串数组

. 、 $、 | 和 * 等转义字符,必须得加 \
多个分隔符,可以用 | 作为连字符

public class App {
    public static void main(String[] args)  {
        String str1 ="hello-java-I-love-java";
        for ( String str: str1.split("-")) {
            System.out.println(str);
        }   
    }
}

在这里插入图片描述

7.7、将字符串转换成字符数组(char)
public class App {
    public static void main(String[] args)  {
        String str1 ="hello-java-I-love-java";
        System.out.println(str1.toCharArray());//hello-java-I-love-java
    }
}
7.8、将字符串转换成byte数组
public class App {
    public static void main(String[] args)  {
        String str1 ="hello-java-I-love-java";      
        System.out.println(str1.getBytes());
    }
}

二、StringBuilder类和StringBuffer

StringBuilder:可变字符序列、线程不安全,效率较高
StringBuffer可变字符序列、线程安全、做线程同步检查,效率较低
StringBuilder和StringBuffer的方法基本一致

1、和String类似的方法

str1.length();
str1.indexOf("n");
str1.lastIndexOf("n");
str1.charAt(i);
str1.substring(a,b);

2、常用的方法

str1.append(xxx);

往对象后面追加,不会生成新的对象

3、需要知道的方法

//在索引位置插入字符
StringBuffer str1 = new StringBuffer("蜜雪冰城");
str1.insert(0,"爱");		//爱蜜雪冰城
//删去字符串[a,b)
str1.delete(0.2);			//雪冰城
//删除字符串指定位置上的字符
StringBuffer str2 = new StringBuffer("我不爱你");
str2.deleteCharAt(1);	//我爱你
//将字符串逆序
str2.reverse();			//你爱我

java常用类(重点是Arrays,装箱以及拆箱,StringStringBuffer,StringBuilder等) 主要是java的一些常用类的使用方法,更具体的建议还是去看官方的文档。其中的重点的话,个人觉得第一个包装的拆箱和装箱,StringStringBUfferStringBuilder以及Arrays的一些常用方法。 阅读详情

相关推荐

Java常量类的几种实现方式

实现常量的三种方式接口常量直接在接口中定义常量接口中定义静态内部常量类枚举枚举列举常量在里面创建枚举 接口常量 直接在接口中定义常量 public interface Constants { /** * 中心 */ public static final int CENTER = 0; /** * 顶部 */ public static final int

czy的博客 1万+

java常用工具

【代码】java常用工具

FD_YOLO的博客 384

JAVA常用工具

因此,我们可以得出结论,在 Java 中无论使用何种方式进行字符串连接,实际上都使用的是 StringBuilder。因为String是无法改变的,所以在操作字符串的时候提供了StringBuilder,StringBuffer来进行操作。StringBuilder,StringBuffer 是可变的 里面的数组没有使用final修饰。String是不可变的 原因是内部的char数组使用了final修饰。里面包含了很多关于数学的一些操作,主要包含了一些静态的方法。系统,包含了一些跟程序相关的操作。

qq_53280238的博客 836

java 工具大全,JAVA工具例大全--字符工具

import cn.hutool.core.text.ASCIIStrCache;/*** 字符工具* 部分工具来自于Apache Commons系列** @author looly* @since 4.0.1*/public class CharUtil{/** 字符常量:空格符 ' ' */public static final char SPACE = ' ';/** 字符常量:制表符 \...

weixin_28889007的博客 658

Java 常用类库及String详解

Java常用类库不要求有很多思想上的东西,要求对其有很熟练的使用能力。常用类库就好比在生活中手艺人手中的工具,作为一个Java程序员我们也必须熟练掌握这些工具。 导航一、java.util.Objects二、java.lang.Math三、java.util.Arrays四、java.math.BigDecimal五、java.util.Date六、java.text.DateFormatjava.text.SimpleDateFormat七、java.util.Calendar八、java.lang.Sy

xxq010516的博客 506

7.Java中的String常用类及包装

但是当需要和其他对象结合使用,如存入集合中,就需要将基础数据型实例化为Java对象,为了面向对象的这一特性,基本数据型中的每一个型在java.lang包中都有一个包装,即将每个基本型都包装成了一个。包装中的equals方法和String一样,都是重写了Object中的equals方法,因此比较的是内容而不是地址,而“= =”比较的依然是引用变量的地址,只是当包装型和与之相对应的基本型进行“= =”比较时会先做自动拆箱处理。Math中提供的方法都是静态方法,可以通过名直接调用。

我有故人折剑去,斩尽春风不曾归 882

Java中的String、包装及API常用类详解

本文详细介绍了Java中的String、包装以及API常用类,并通过具体示例帮助读者更好地理解和掌握这些知识点。

m0_72103191的博客 360

java常用类String

一、String介绍 与JS中的String不同,java中的String型不属于基本数据型,而是属于引用数据型。java中的基本数据型有8种,byte,short,int ,long,float,double,char,boolean。引用型有,数组和接口,而javaString就属于字符串String继承了Object,Object中,输出对象名输出的是对象的地址,...

小白学编程 4423

Java常用类详解——String

String是保存字符串常量的。每次更新都需要重新开辟空间,效率较低,因此java设计者还提供了StringBuilder和StringBuffer两个来增强String的功能,并提高效率。但String在配置文件、表示一些常见的值等 还是很有用。

m0_75013084的博客 1612

Java 基础编程】Java 常用类速查:包装String/StringBuilder、Math、日期一篇搞定

Java常用类主要包括包装、字符串、数学和日期等。包装将基本型封装为对象,支持自动装箱拆箱;String是不可变字符串,拼接会创建新对象;StringBuffer和StringBuilder是可变字符串,前者线程安全,后者性能更高;Math提供静态数学方法;日期包括Date、Calendar和Java8的LocalDateTime。掌握这些的使用方法和特点,能提高开发效率和代码规范性。重点包括理解包装机制、String不可变性、字符串区别、数学运算和日期处理等。

懿轩的技术小窝 1877

JavaString常用类

Java 中的 String 是一个代表字符串的。它属于java.lang包,因此不需要导入就可以直接使用。String 被设计为不可变的,也就是说,一旦创建了 String 对象,它的值就不能被修改。String 被声明为final,这意味着它不能被继承。这是因为如果允许继承 String 并修改其行为,可能会破坏字符串不可变性的特性,从而引入潜在的安全风险和性能问题。因此,Java 设计者选择将 String 设计为不可变且不可继承的,以确保字符串操作的一致性和可靠性。

Z99263的博客 878

java day12 常用类(Object、包装String

1、Object 1.1 toString()方法 public String toString(){…} 返回该对象的字符串表示(表现形式)。 可以根据程序需求覆盖该方法,如:展示对象各个属性值。 2.2.4 equals()方法 public boolean equals(Object obj){…} 默认实现为(this == obj),比较两个对象地址是否相同。 可进行覆盖,比较两个对象的内容是否相同。 equals重写步骤: 比较两个引用是否指向同一个对象。 判断obj是否为

qq_43642864的博客 183

10.Java 常用类之普通常用类(包装StringStringBuffer、StringBuilder、Math、Arrays、System、大数据处理)

10.Java 常用类之普通常用类(包装StringStringBuffer、StringBuilder、Math、Arrays、System、大数据处理)

weixin_52173250的博客 1026

java-常用类String

java-常用类String

qq_46027570的博客 248

Java常用类-String

字符串相关的String String:代表字符串,Java 程序中的所有字符串字面值(如 "abc" )都作 为此的实例实现。 String是一个final,代表不可变的字符序列 当字符串重新赋值时,需要重新指定内存区域,不能使用原有的value进行赋值 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,也不能 在原有的value上进行赋值 当调用String的...

山丘i 108

Java常用类String全面解析

String(字符串) 1.String的构造方法 2.String在内存中的创建过程 3.String的成员变量以及特性 4.String的常用方法 5.String在面试中经常遇到的问题

qq_45980402的博客 232

Java基础 - 常用类(包装 String Date File 枚举)

第六章 常用类【这章中代码没有导入的使用CTRL+Shift+O】导入 6.1包装的使用 public class TestWrappedClass {//public final class Integer extends Number implements Comparable //基本数据型转成包装对象 public static void main(String[] args...

上山打卤面的博客 320

Java常用类String

Java常用类String 开发工具与关键技术:工具:myeclipse 技术: StringStringBuffer、StringBuilder 作者:吴东梅 撰写时间:2019-06-16 String StringJava最常用的之一。在Java中,通过程序中建立String可以轻松地管理字符串,字符串对象一旦被初始化就不会被改变。什么是字符串呢?简单的说,字符串...

weixin_44547708的博客 304
上一篇: JAVA常用类之包装类
下一篇: Java常用类——时间处理相关类
a__xuan
博客等级 码龄6年 12粉丝 · 17原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值