【JavaSE】String类的重点语法知识汇总

简介: 【JavaSE】String类的重点语法知识汇总

思维导图

 

1.String类和String常用方法

  1. String是引用类型,内部存放的是对象的地址,一般看到" "引起来的就是String类型的对象。
  2. String类的构造方式,常用三种:直接赋值、new String()、用字符数组构造

//String类的构建

String str1 = "goodboy";//直接赋值
String str2 = new String("goodboy!");//使用new String();
char[] ch = {'g','o','o','d','b','o','y'};//利用字符数组来帮助构建
String str3 = new String(ch);

//下图是不同创建方式在内存上存储的区别


  1. 得到字符串的长度是使用length (),例如:str1.length ();注意不能省略括号,求数组长度时使用array.length,注意二者区别!
  2. 比较俩个字符串类型的对象是否相同不能使用==,引用类型比较时用==的话比较的是地址;如果想比较俩个字符串内容是否相同需要使用equals方法,例如:str1.equals(str2)。比较俩个字符串类型的对象大小是可以使用compareTo方法,例如:str1.compareTo(str2);比较的是字符的ascii码值。
String str1 = "hahahaha";
String str2 = "HAHAHAHA";
System.out.println(str1.compareTo(str2));//32
//忽略大小写比较大小
System.out.println(str1.compareToIgnoreCase(str2));//0                                         
System.out.println("=====================");
System.out.println(str1.equals(str2));//false
//忽略大小写比较是否相同
System.out.println(str1.equalsIgnoreCase(str2));//true
  1. String类中可以使用charAt(index);来查找字符串中index下标的字符,注意首字符是0下标,index的下标注意不能越界,否则会报错。
String str1 = "holabce";
char ret = str1.charAt(3);
System.out.println(ret);//输出结果为:a
  1. 数字变字符串使用String.valueOf(数字);class student{
public int age;
    public student(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "student{" +
                "age=" + age +
                '}';
    }
}
//方法1,
String s1 = String.valueOf(123);
String s2 = String.valueOf(0.666);
方法2,
String s3 = String.valueOf(new student(16));
System.out.println(s3);
  1. 字符串转数字使用Integer.valueOf(字符串)或着Integer.parseInt(字符串)
int a = Integer.valueOf("66");
int b = Integer.parseInt("99");
1.

字符串的大小写转换,改变大小写不是把原来的值改变,是产生了新的对象,原来的值不会改变。

String s1 = "goodboy";
//不会改变字符串s1
String ret = s1.toUpperCase();
System.out.println(s1);//goodboy
System.out.println(ret);//GOODBOY
String s2 = "GOODBOY";
String ret2 = s2.toLowerCase();
//不会改变字符串s2
System.out.println(s2);//GOODBOY
System.out.println(ret2);//goodboy
1. 字符串转换成字符数组使用toCharArray();改变的不是原字符串。
String s1 = "goodboy";
char[] chars = s1.toCharArray();
for (char x: chars) {
    System.out.println(x);
}
System.out.println(s1);//goodboy

2.字符串常量池:

  1. 字符串常量池的存在为了使程序的运行速度更快更节省内存,字符串常量池存放在堆上双引号引起来的字符串都会存放在常量池中,当第二次存储这个字符串的时候就会先去常量池中查找如果有返回地址,如果没有则添加到常量池当中。
  2. s1.intern();的作用是检测s1所指的对象是否在常量池中存在,如果不存在就把当前对象入池;如果存在就返回常量池的对象的地址。该方法是手动将String对象添加到常量池中。
  3. 只要是new一个对象,这些对象都是唯一的,他们的地址都不一样
  4. 解释一下String类三种对象实例化的区别。

1.String str1 = "abcde";

只会开辟一块堆内存空间并存放在常量池中


2.String str2 = new String("abcde");

会开辟俩块堆内存空间,将字符串abcde到常量池中,还有一块存放:new一个String对象


3.char[] ch = {'a','b','c','d','e'};

String str3 = new String(ch);

会开辟三块堆内存空间,一块空间存放数组,另外一块存放拷贝后的数组,还有一块存放:new一个String对象

3.字符串的不可变性:

  1. string类在设计时就是不可以改变的,是private引起的和final无关
  2. 所有涉及到可能会修改字符串内容的操作都会创建一个新的对象,改变的是新的对象。
  3. final修饰类表明该类不想被继承,final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内容是可以修改的。因为引用类型存放的是地址,改变了内容,但是地址又不会发生变化。

1.

public final array[] = {1,2,3,4,5,6};

array[0] = 66;//不会报错

2.

array = new int[]{9,10,11,12};//array的引用都变了,报错

4.StringBuilder和StringBuffer:

  1. StringBuilder和StringBuffer的存在是为了解决字符串不方便修改的问题。
  2. append();在字符串的尾部追加内容。
  3. String和StringBuilder的最大区别就是String内容无法修改,而StringBuilder的内容可以修改。频繁的修改字符串可以使用StringBuilder
  4. String和StringBuilder不能直接相互转换。String变StringBuilder需要利用StringBuilder的构造方法和append方法;StringBuilder转String需要调用toString方法。
  5. String、StringBuilder和StringBuffer的区别:

1.String的内容不可以修改,StringBuilder和StringBuffer的内容可以修改

2.StringBuilder和StringBuffer的功能类似

3.StringBuffer属于线程安全操作

判断创建了多少个String对象

//hello String
String str1 = new String("hello");共创建了俩个对象
//a String b String StringBuffer toString
String str2 = new String("a")+new String("b");//

共创建了6个对象


如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

相关文章
|
1月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
34 0
java基础(13)String类
|
2月前
|
API 索引
String类下常用API
String类下常用API
39 1
|
6天前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
17 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
2天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
9 2
|
5天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
10 1
|
8天前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
25 4
|
29天前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①
|
13天前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
21 2
|
18天前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
31 4
|
18天前
|
存储 编译器 程序员
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
50 2