JavaSE学习值之--String类

 

  💕"不要同情自己,同情自己是卑劣懦夫的勾当!"💕

作者:Mylvzi 

 文章主要内容:JavaSE学习值之--String类 

目录

前言:

一.String类

1.String类的属性

2.字符串的构造

注意:

1.String类有求字符串长度的方法通过:str.length()   

2.isEmpty方法用于判断字符串的长度是否为0

3.被" "引起来的就是字符串,可直接调用方法 

3.String类对象的比较

1.==判断是否是同一引用(地址相同)

2.equals 方法

3.compareTo以及他的接口

4. 字符串查找

1.charAt方法--》返回对应索引上的字符

2.indexOf方法,lastIndexOf 方法--》不止一个,有多个,构成了方法的重载

1.单个字符(从前往后找)

 2.查找子字符串(从前往后找)

5.字符串的转化

1.数值和字符串之间的转化

2.大小写互换--》toUpperCase  toLowerCase

3.. 字符串转数组 

4. 格式化(以特定的格式输出字符串)

6.字符串替换

7.字符串的拆分

1.split方法--》返回值是String[],所以要用字符串数组接收

2.特殊字符的拆分

1.拆分IP地址

2.多次分割(开发常用)

7.字符串截取

8.其他操作方法

1.trim方法:

8.字符串的不可变性

1.这张图能反应很多信息:

2.所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象

二.StringBuilder和StringBuffer的介绍

一.StringBuilder

常见方法总结:

1.append--》字符串追加

2.setCharAt(int index, char ch)-->将index位置的字符重置为ch

3.insert(int offset, String str) -->在offset位置插入:八种基类类型 & String类型 & Object类型数据

 4.deleteCharAt(int index)--》删除index位置字符 

5.replace(int start, int end, String str)--》将指定区间的字符串设置为str

6.StringBuffer reverse()-->倒置字符串

7.toString方法-->以字符串(String)类型返回


 

前言:

  在C语言中我们已经接触过字符串,在C语言中不存在字符串类型,存储字符串往往是通过字符数组或字符指针,同时C语言的库中也提供了很多与字符串有关的函数,如strcpy,strcat,strstr等等,但是这种将数据和操作方法分割的做法不符合面向对象编程的思想,所以在Java中提供了字符串类型--》String

  String类本质上是class,含有属性和方法,方法之中存放了大量且实用的与字符串有关的方法

下面就为大家详细讲解String类

一.String类

1.String类的属性

注意:Java中的字符串区别于C语言,并不存在“字符串以\0结尾”这种说法 

2.字符串的构造

  下面介绍常见的三种字符串构造方法:

        /*** 字符串构造*/// 1.直接构造String str1 = "hello";System.out.println(str1);// 2.实例化一个String类对象String str2 = new String("hello");System.out.println(str2);// 3.通过字符数组的转化char[] arr = {'h','e','l','l','o'};String str3 = new String(arr);System.out.println(str3);

注意Java中String类是一种引用数据类型,存放的引用对象的地址,而不存储对象本身

        // String类是一种引用类型,存储的是对象的地址// s1和s2引用的是不同对象 s1和s3引用的是同一对象String s1 = new String("hello");String s2 = new String("world");String s3 = s1;System.out.println(s1.length()); // 获取字符串长度---输出5System.out.println(s1.isEmpty()); // 如果字符串长度为0,返回true,否则返回false

注意:

1.String类有求字符串长度的方法通过:str.length()   

 STtring类里面的length是一种方法,数组里面的是一种属性,方法有一个();

2.isEmpty方法用于判断字符串的长度是否为0

注意isEmpty判断的是字符串的长度,如果字符串是null,此时代表空引用,编译器会报错 

        String s1 = "";System.out.println(s1.length());// 输出0String s2 = null;System.out.println(s2.length());// 报错

3.被" "引起来的就是字符串,可直接调用方法 

        System.out.println("hello".length());// 输出5

3.String类对象的比较

1.==判断是否是同一引用(地址相同)

== 

左右两边都是基本数据类型,比较的是值的大小,根据值是否相等返回false/true

左右两边都是引用数据类型,比较的是引用对象的地址是否相同,也就是是否是同一引用

        // String类是一种引用类型,存储的是对象的地址// s1和s2引用的是不同对象 s1和s3引用的是同一对象String s1 = new String("hello");String s2 = new String("world");String s3 = s1;System.out.println(s1 == s2);// falseSystem.out.println(s2 == s3);// falseSystem.out.println(s1 == s3);// true

来看一种特殊情况:

  当我们直接引用字符串”hello“ 时,str1和str2却相等了?这是为什么?引用类型比较的不是地址吗?是的,比较的是地址。但对于"hello"这样的字符串来说,他是存储在堆区之中的”常量池“上,地址是固定的。也就是说,当第一次使用hello给str1赋值后,常量区上就已经存放了hello这个字符串,再次赋值是会先从常量池中的"hello"获取,获取的和str1是一样的"hello"(地址和值都是一样的)

2.equals 方法

  ==只能用来比较两个引用对象的地址是否相同,而大多数情况下我们是通过引用类型的内容来判断是否相等的,对于String类来说也是这样的,我们要比较的是字符串的具体内容,而String类中有一个自带的比较内容的方法-->equals(本质还是继承于Object类的

)

        String str1 = "hello";String str2 = "hello";String str3 = "world";System.out.println(str1.equals(str2));// trueSystem.out.println(str1.equals(str3));// false

总结:
  equals方法用来判断两个字符串的内容是否相同 

3.compareTo以及他的接口

再来看String类的定义:

可以看见String类实现了Comparable接口,所以就要重写接口中的compareTo方法

 

比较思路: 

如果两个字符串的长度不一样,先比较长度相同的部分,如果长度相同部分完全相同,则直接返回长度的差值(共同长度是最短字符串的长度) 

代码示例: 

        String str1 = "hello";String str2 = "hello";String str3 = "world";String str4 = "helloworld";System.out.println(str3.compareTo(str1));// 15System.out.println(str1.compareTo(str2));// 0System.out.println(str4.compareTo(str1));// 输出5System.out.println("====================");String str5 = "abc";String str6 = "acc";System.out.println(str5.compareTo(str6));// 输出-1
compareToIgnoreCase方法

  在一些情况下,我们认为大写和小写只是形式上的不同,内容却是相同的,比如"hello"=="HELLO",在不考虑大小写的情况下进行比较,就可以利用方法

compareToIgnoreCase
        String str1 = "hello";String str2 = "HELLO";String str3 = "HEllo";System.out.println(str1.compareToIgnoreCase(str2));// 0System.out.println(str1.compareToIgnoreCase(str3));// 0

总结:
1.compareTo方法返回的Int类型的数据,本质上是对应字符串在字典上的顺序(字典中,前面的字母是小的,后面的字母大,小写比所有大写大) 

2.忽略大小写带来的形式上的不同,我们可以利用compareToIgnoreCase方法

3.自定义类型一定要重写equals方法和hashcode方法,因为你的逻辑是根据自定义类型的内容进行比较的

4. 字符串查找

  字符串查找也是字符串中非常常见的用法,String类中也提供了很多字符串查找的方法

1.charAt方法--》返回对应索引上的字符

        String str1 = "abcdef";System.out.println(str1.charAt(0));// 输出aSystem.out.println(str1.charAt(1));// 输出bSystem.out.println(str1.charAt(2));// 输出cSystem.out.println(str1.charAt(-1));// 异常System.out.println(str1.charAt(100));// 异常

2.indexOf方法,lastIndexOf 方法--》不止一个,有多个,构成了方法的重载

1.单个字符(从前往后找)
            String str1 = "abcdefghcde";System.out.println(str1.indexOf('a'));// 0System.out.println(str1.indexOf('b'));// 1System.out.println(str1.indexOf('c'));// 2System.out.println("==================");System.out.println("从指定index开始访问");System.out.println(str1.indexOf('c', 3));// 8  返回的是第二个c出现的位置System.out.println(str1.indexOf('a', 1));// -1  1代表从b开始,后面不含有aSystem.out.println("==================");System.out.println("从后往前找");System.out.println(str1.lastIndexOf('c'));// 8System.out.println(str1.lastIndexOf('e'));// 10System.out.println(str1.lastIndexOf('c', 4));// 2

 

注意:indexOf方法只返回第一次出现的下标(从左往右)

 2.查找子字符串(从前往后找)
        String str1 = "abcdefghcde";// 返回子字符串第一次出现位置的下标System.out.println(str1.indexOf("ab"));System.out.println(str1.indexOf("cd"));System.out.println(str1.indexOf("de"));System.out.println("===================");System.out.println("从指定索引位置之后返回子字符串出现的位置");System.out.println(str1.indexOf("cd", 4));// 8System.out.println(str1.indexOf("de",6));// 9System.out.println("===================");System.out.println("从后往前查找");/*** 注意返回都是第一个字符的下标*/System.out.println(str1.lastIndexOf("cd"));// 8System.out.println(str1.lastIndexOf("de"));// 9System.out.println(str1.lastIndexOf("cd", 5));// 2

5.字符串的转化

1.数值和字符串之间的转化

class Student {String name;int age;public Student(String name, int age) {this.name = name;this.age = age;}
}
public class Test1 {public static void main(String[] args) {/*** 其他类型转字符串(布尔类型和引用类型也能转化)* String.valueOf方法*/String s1 = String.valueOf(1234);String s2 = String.valueOf(12.34);String s3 = String.valueOf(true);String s4 = String.valueOf(new Student("Hanmeimei", 18));System.out.println(s1);System.out.println(s2);System.out.println(s3);System.out.println(s4);System.out.println("=======================");/*** 字符串转其他类型* 通过其他类型的包装类中的parse方法*/int a = Integer.parseInt("12345");double b = Double.parseDouble("12.20");boolean c = Boolean.parseBoolean("true");System.out.println(a);System.out.println(b);System.out.println(c);

2.大小写互换--》toUpperCase  toLowerCase

        String str1 = "hello";String str2 = "WROLD";String str3 = "Hello";// 小写转大写System.out.println(str1.toUpperCase());// 大写转小写System.out.println(str2.toLowerCase());System.out.println(str3.toLowerCase());

3.. 字符串转数组 

        String str1 = "hello";char[] value = str1.toCharArray();for (int i = 0; i < value.length ; i++) {System.out.print(value[i] + " ");}System.out.println();System.out.println("====================");// 字符数组转字符串(字符串的构造)char[] value2 = {'h','e','l','l','o'};String str2 = new String(value2);System.out.println(str2);

 

4. 格式化(以特定的格式输出字符串)

        String s = String.format("%d-%d-%d", 2019, 9,14);System.out.println(s);// 输出2019-9-14

6.字符串替换

  用另一个字符串代替当前字符串中的某些内容

        String str1 = "hello world";// 单个字符替换System.out.println(str1.replace('o', 'x'));// hellx wxrld 两个o都被替换了// 字符串替换System.out.println(str1.replace("hello", "xxxxxxx"));// 替换首个位置// replaceFirst的参数只能是字符串System.out.println(str1.replaceFirst("o","x"));// hellx world  只替换第一个o// replaceAll 用于基于正则表达式的文本替换System.out.println(str1.replaceAll("o", "x"));// replace的返回值是一个新的字符串,不是对原字符串进行修改// java中字符串是常量,无法被修改String str2 = str1.replace('e','d');

7.字符串的拆分

1.split方法--》返回值是String[],所以要用字符串数组接收

        String str1 = "how are you man?";String[] value = str1.split(" ");for (String s:value) {System.out.println(s);}System.out.println("===================");// 就分两组String[] value2 = str1.split(" ",2);for (String s:value2) {System.out.println(s);}

  

2.特殊字符的拆分

  在使用split方法时,传递的参数是字符,但是有些字符本身就有特定的作用(+-*\等等),需要使用转义字符进行转义

1.拆分IP地址
        String str = "192.168.1.1" ;String[] result = str.split("\\.") ;for(String s: result) {System.out.println(s);}

1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" .

2. 而如果是 "\" ,那么就得写成 "\\\\" .

3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符 

        String str = "192\\168\\1\\1" ;// 在字符串中使用\需要先进行转义String[] result = str.split("\\\\") ;for(String s: result) {System.out.println(s);
}
2.多次分割(开发常用)

   在进行分割时,一个字符串内往往含有多个不同的符号,一次split只能以一个符号进行分割,如果想实现多次分割,可以利用嵌套的for循环进行多次分割

    public static void main(String[] args) {String str = "name=李四&age=17";String[] arr1 = str.split("&");for (int i = 0; i <arr1.length ; i++) {String[] tmp = arr1[i].split("=");System.out.println(tmp[0]+" = "+ tmp[1]);}}

7.字符串截取

从当前字符串某个索引位置处进行截取

        String str = "helloworld";System.out.println(str.substring(5));// 输出worldSystem.out.println(str.substring(0, 5));// 输出hello java中的区间都是左闭右开的

注意事项:

1. 索引从0开始

2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标 

8.其他操作方法

1.trim方法:

代码示例: 

        String str = "            hello            world               !!!!!!!!!";System.out.println(str.trim());

注意:

1.trim方法只能去除字符串左右两边的空格,中间的空格无法删除

2.trim方法其实在搜索引擎中经常出现,比如你故意在搜索时在前面添加了一大堆的空格,而你在搜索的时候,浏览器会自动把字符前面的所有空格进行删除,这就是调用了trim方法

8.字符串的不可变性

  String类型的数据是一种不可改变的数据类型,来看她的定义

1.这张图能反应很多信息:

1.String类被final修饰,代表不能被其他类继承

2.字符串实际上是存储在Value数组之中的,value也是一种引用类型

3.value数组被private修饰,代表无法在类外使用该数组,也就证明该数组的内容无法改变,也就是字符串的内容无法改变

一个误区:

  很多人说String类无法改变是因为value数组被final修饰,这是错误的,因为value数组被final修饰,只能说明value不能指向其他的引用,但是其所指向的对象是可以改变的(类似于const char*) 

        final int[] arr = {1,2,3,4,5};arr[0] = 10000;System.out.println(Arrays.toString(arr));

2.所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象

StringBuilder也是与字符串相关的一个类,其中有一个append方法,用于字符串的追加

可以发现,在对字符串s进行追加时,实际上是又重新创建了一个字符串,使这个字符串为两个字符串append之后的结果,最后再将这个字符串重新赋值给s 

二.StringBuilder和StringBuffer的介绍

前言:

  由于stirng的不可改变性,对于字符串的操作有了一定的限制,为了更加方便地操作字符串,引入两个新的类:StringBuilder和StringBuffer,这两个类的基本用法一致

一.StringBuilder

常见方法总结:

1.append--》字符串追加
        //StringBuilder是一个类,必须先进行实例化对象StringBuilder str = new StringBuilder("hello");StringBuilder str2 = str;// 利用append进行追加  可追加字符,数字,字符串str.append(' ');str.append(123);str.append("world");str.append('!');System.out.println(str);

注意:

1.append方法的存在大大提高了新建字符串的效率,因为append方法在执行的时候是直接在位于缓冲区的字符数组之后添加字符的,并没有新建临时对象,减少了内存的不必要开辟和释放

2.可直接打印StringBuilder类的对象,因为其内部重写了toString方法

 

2.setCharAt(int index, char ch)-->将index位置的字符重置为ch
        StringBuilder str = new StringBuilder("hello");str.setCharAt(0,'!');str.setCharAt(1,'!');str.setCharAt(2,'!');System.out.println(str);

3.insert(int offset, String str) -->在offset位置插入:八种基类类型 & String类型 & Object类型数据
        StringBuilder str = new StringBuilder("hello");// insert方法// 并没有删除原位置的字符,而是在其之前插入另一个数据str.insert(0,'!');System.out.println(str);// !hellostr.insert(6,"world");System.out.println(str);// !helloworldstr.insert(0,123456);System.out.println(str);// 123456!helloworld

注意: insert方法并没有删除原位置的字符,而是在其之前插入另一个数据

 4.deleteCharAt(int index)--》删除index位置字符 
        StringBuilder str = new StringBuilder("hello");System.out.println(str.deleteCharAt(0));// elloSystem.out.println(str.deleteCharAt(0));// llo// delete 删除指定区间内的所有字符StringBuilder str2 = new StringBuilder("hello");System.out.println(str2.delete(0, 2));// llo
5.replace(int start, int end, String str)--》将指定区间的字符串设置为str
        StringBuilder str = new StringBuilder("hello!!!!");str.replace(1,6,"world");System.out.println(str);// hworld!!!
6.StringBuffer reverse()-->倒置字符串
        StringBuilder str = new StringBuilder("hello!!!!world");System.out.println(str.reverse());// dlrow!!!!olleh

这是一个非常有用 的方法,在很多刷题网站中都有倒置字符串的实现,通过S听Builder自带的reverse方法可以快速实现!!! 

源码:

public AbstractStringBuilder reverse() {boolean hasSurrogates = false;int n = count - 1;for (int j = (n-1) >> 1; j >= 0; j--) {int k = n - j;char cj = value[j];char ck = value[k];value[j] = ck;value[k] = cj;if (Character.isSurrogate(cj) ||Character.isSurrogate(ck)) {hasSurrogates = true;}}if (hasSurrogates) {reverseAllValidSurrogatePairs();}return this;}

 

7.toString方法-->以字符串(String)类型返回

 String和StringBuffer不能直接赋值,必须通过StringBuffer的toString方法才能转换

        StringBuilder str = new StringBuilder("hello!!!!world");
//        String str2 = str;// errString newstr = str.toString();System.out.println(newstr);// hello!!!!world

StringBuilder和StringBuffer也包含String类型中常见的方法,如indexOf,charAt,substring,length等方法,其用法和String类基本一致,此处不再详细阐述

总结:

String类是一个非常常用的类,要掌握其包含的常见方法的使用,深入理解String不能被改变和继承的原因;同时为了解决String类的一些缺陷,引入了两个新的类 StringBuilder和StringBuffer,这两个类可以看作String类的更高效的版本,其中有很多方法与String类重合,但也有很多自己独有的,非常有效的方法,了解这些方法会大大提高我们的开发效率!!!

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

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

相关文章

数据仓库的基本概述之扫盲系列

数据仓库的诞生原因 随着互联网的普及&#xff0c;信息技术已经深入到各行各业&#xff0c;并逐步融入到企业的日常运营中。然而&#xff0c;当前企业在信息化建设过程中遇到了一些困境与挑战。 1、历史数据积存。 过去企业的业务系统往往是在较长时间内建设的&#xff0c;很…

[开源]基于流程编排的自动化测试工具,插件驱动,测试无限可能

一、开源项目简介 流程编排&#xff0c;插件驱动&#xff0c;测试无限可能 一款基于流程编排的自动化测试工具 二、开源协议 使用Apache-2.0开源协议 三、界面展示 四、功能概述 在软件开发旅程中&#xff0c;测试流程的管理和执行常常是复杂且耗时的挑战。传统测试工具主…

iMovie for Mac:专业级的视频剪辑体验!

如果你是一位视频爱好者&#xff0c;那么你一定不能错过iMovie for Mac这款专业视频剪辑工具。它不仅拥有简单易用的界面&#xff0c;而且功能强大&#xff0c;可以让你轻松完成复杂的视频剪辑任务。 一、界面友好&#xff0c;上手容易 iMovie for Mac的界面设计简洁明了&…

基于轩禹秒杀ctfshow-RSA

目录 babyrsa easyrsa1 easyrsa2 easyrsa3 easyrsa4 easyrsa5 easyrsa6 RSA算法是一种非对称加密算法&#xff0c;与对称加密算法不同的是&#xff0c;RSA算法有两个不同的密钥&#xff0c;一个是公钥&#xff0c;一个是私钥。 CTF中常见的有&#xff1a;广播攻击、共…

前端 | 前端工程化

文章目录 前端工程化1. Vue项目创建2. Vue项目目录结构3. vue项目开发 前端工程化 1. Vue项目创建 安装插件vue-cli npm install -g vue/cli命令行创建 Vue 项目 vue create vue-project(项目名称)图形化界面创建 VUe 项目 vue ui图形化界面如下&#xff1a; 选择功能&…

【excel技巧】如何在Excel表格中添加选项按钮?

不知道大家是否会9遇到需要勾中选项的情况&#xff0c;我们可以在电子表格中制作出可以勾选、选中的选项按钮&#xff0c;今天我们一起学习一下设置方法。 首先&#xff0c;我们需要先在excel工具栏中添加一个功能模块&#xff1a;开发工具 依次点击excel中的文件 – 选项 –…

使用IDEA自带功能将WSDL转java

好像IDEA2018版本之后不再支持webservice转java&#xff0c;可以下载2018.3.6版本的IDEA&#xff08;直接IDEA官网下载即可&#xff09;&#xff0c;然后打开一个项目&#xff0c;在根目录处单击右键 选择Generate Java Code From Wsdl...&#xff0c; 选择OK&#xff0c;即可…

Tomcat项目启动报错

java.io.IOException: java.lang.ClassCastException: Cannot cast org.springframework.web.SpringServletContainerInitializer to javax.servlet.ServletContainerInitializer解决办法&#xff1a;可能Tomcat版本不对&#xff0c;使用7.0.90版本启动报错&#xff0c;使用8.0…

机器人控制算法——移动机器人横向控制最优控制LQR算法

1.Introduction LQR (外文名linear quadratic regulator)即线性二次型调节器,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。LQR最优控制利用廉价成本可以使原系统达到较好的性能指标(事实也可以对不稳定的系统进行整定) ,而且方法简单便于实现 ,同时利用 Ma…

运维大数据平台的建设与实践探索

随着企业数字化转型的推进&#xff0c;运维管理面临着前所未有的挑战和机遇。为应对日益复杂且严峻的挑战&#xff0c;数字免疫系统和智能运维等概念应运而生。数字免疫系统和智能运维作为新兴技术&#xff0c;正引领着运维管理的新趋势。数字免疫系统和智能运维都借助大数据运…

语音芯片基础知识 什么是语音芯 他有什么作用 发展趋势是什么

目录 一、语音芯片的简介 常见的语音芯片有哪些&#xff1f; 语音芯片的种类有很多&#xff0c;大体区分下来也就4个类别而已&#xff1a; 选型的经验说明如下&#xff1a; 推荐使用flash型语音芯片 一、语音芯片的简介 语音芯片基础知识&#xff1a; 什么是语音芯片&…

winscope使用方法

Ubuntu下Android T的winscope工具使用方法 1. 在Android的项目源码中&#xff0c;prebuilts/misc/common/winscope目录下 直接使用chrome浏览器打开文件winscope.html 2. 可能会提示adb问题 进入目录development/tools/winscope/adb_proxy&#xff0c;有文件winscope_proxy.…

【Python】QTreeWidget树形结构添加

源码&#xff1a; # 参考网址&#xff1a; https://blog.csdn.net/weixin_42286052/article/details/129532631 import os.path import sys from PySide6.QtWidgets import QApplication,QMainWindow,QHBoxLayout,QVBoxLayout,QPushButton,QTreeWidget,QTreeWidgetItem,QTreeW…

【编程必备知识】文件内容的读写

文章目录 前言1. 数据流2. Java IO 流3. InputStream 概述3.1 FileInputStream 概述3.1.1 代码示例 3.2 利用 Scanner 进行字符读取 4. OutputStream 概述4.1 利用 OutputStreamWriter 进行字符写入 总结 前言 书接上回, 本文继续讲解关于文件的知识, 上文讲了如何对文件系统进…

微信小程序wxml使用过滤器

微信小程序wxml使用过滤器 1. 新建wxs2. 引用和使用 如何在微信小程序wxml使用过滤器&#xff1f; 犹如Angular使用pipe管道这样子方便&#xff0c;用的最多就是时间格式化。 下面是实现时间格式化的方法和步骤&#xff1a; 1. 新建wxs 插入代码&#xff1a; /*** 管道过滤工…

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候&#xff0c;我们在谈论什么 js渲染网页&#xff0c;从某种程度来说&#xff0c;是指单纯的http请求&#xff0c;返回的文本数据&#xff0c;与我们在浏览器看到的内容&#xff0c;相距甚远.其可包括为以下几点&…

day27--AJAX(bootstrap之modal,toast;接口文档的一些用法)

目录 Bootstrap之Modal&#xff1a; 显示和隐藏方法 通过自定义属性&#xff1a; 使用JS来控制弹框&#xff1a; Bootstrap之Toast&#xff1a; 接口文档一些用法&#xff1a; 删除图书&#xff1a; 图片上传&#xff1a; 图片上传步骤&#xff1a; 修改头像&#xff…

vue3知识点学习

vue3知识点学习 脚手架安装与运行知识点条件渲染列表循环&#xff0c;key状态管理事件处理内联事件处理方法事件处理 事件修饰符数组变化侦听计算属性class绑定style绑定侦听器表单输入绑定 v-model指令$refs 获取dom元素组件的使用三个步骤引用组件 $组件嵌套组件局部注册组件…

【Mysql】重新认识mysql(一)

参考Mysql是怎么运行的&#xff0c;并结合实际的工作经验对mysql的知识进行总结。 Mysql架构 从大体上来说&#xff0c;Mysql是C/S架构。以我们平时使用的QQ为例&#xff0c;它其实是由两部分组成的&#xff0c;一部分是客户端程序,&#xff0c;一部分是服务器程序。客户端可…

【广州华锐互动】VR建筑施工事故体验:提高工人安全意识和责任感

VR建筑施工事故体验的意义在于通过模拟真实场景和情况&#xff0c;帮助人们更好地理解建筑施工中的安全问题&#xff0c;并提供一种安全、有效的方式来学习和掌握安全技能。 建筑施工是一项高风险的工作&#xff0c;涉及各种复杂的工作环境和操作过程。在现实中&#xff0c;建筑…