java中认识String类(字符串)

java中认识String类(字符串)

在C语言中是没有字符串(String)这种数据类型的,有的只有字符类型(char),但是在java中有String类型
在java中并没有字符串以“\0”结尾这种说法,
比如说:String str = “hello world”; 结尾就是d,后面没有“\0”。

什么是字符串 类型:就是双引号引起的中间的字符串也可以是一个字符;
比如说:String str = “hello world”
String str = “h”
String str = “阮” 这些都是字符串类型

什么是字符类型: 就是用单引号引起的一个字符;
比如说:char ch = ‘A’;
char ch = ‘阮’;这些都是字符类型

1、创建字符串

public class TestDome {
    public static void main(String[] args) {
        //方式1
        String str1 = "abcdef";
        //方式2
        String str2 = new String("haha");
        //方式3
        char[] array = {'w','w','w'};
        String str3 = new String(array);
    }
}

java中认识String类(字符串)_第1张图片

在官方文档上 (https://docs.oracle.com/javase/8/docs/api/index.html) 我们可以看到 String 还支持很多其他的构造方式, 我们用到的时候去查就可以了

2、理解String底层
“hello” 这样的字符串字面值常量, 类型也是 String
String 也是引用类型 String str1 = “hello”;这样的代码在内存中的布局如下:

str1这个引用在栈上占用一块内存,存的是hello这个对象的地址
hello这个对象在堆上占用一块内存,他的地址就存在str1这个引用里
java中认识String类(字符串)_第2张图片
我们看下个个代码在内存中的布局:

public class TestDome {
    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = str1;
        System.out.println(str1);
        System.out.println(str2);
    }
}

str1这个引用在栈上占用一块内存,存的是hello这个对象的地址;
hello这个对象在堆上占用一块内存,他的地址就存在str1这个引用里;
str2这个引用在栈上占用一块内存,存的是str1这个引用存的地址
str2这个引用存的也是hello这个的地址,那也可以说str2和str1指向的对象都是hello;
java中认识String类(字符串)_第3张图片
比较String类型,以及字符串拼接 的底层原理

比较字符串内容是否相等
java中认识String类(字符串)_第4张图片
数组的整体赋值只有一次机会
java中认识String类(字符串)_第5张图片
将字符数组转换成字符串
java中认识String类(字符串)_第6张图片

java中认识String类(字符串)_第7张图片

获取字符串 从哪个位置 得到几个元素
java中认识String类(字符串)_第8张图片

获取下标为几的元素
java中认识String类(字符串)_第9张图片

将字符串 转换 成字符数组
java中认识String类(字符串)_第10张图片

字节与字符串
java中认识String类(字符串)_第11张图片

java中认识String类(字符串)_第12张图片
字符串的比较
java中认识String类(字符串)_第13张图片

java中认识String类(字符串)_第14张图片
字符串的查找
java中认识String类(字符串)_第15张图片

java中认识String类(字符串)_第16张图片

**String ,StringBuffer StringBuilder 的区别 **
java中认识String类(字符串)_第17张图片

你可能感兴趣的:(javaSE,java)