Java | 字符串

news2024/12/23 13:44:53

目录

一、String类

1.1 声明字符串

1.2 创建字符串

二、连接字符串

2.1 连接多个字符串

2.2  连接其他数据类型

三、获取字符串信息

3.1 获取字符串长度

3.2 字符串查找

3.3 获取指定索引位置的字符

四、字符串操作

4.1 获取字符串

4.2 去除空格

4.3 字符串替换

4.4 判断字符串的开始与结尾

4.5 判断字符串是否相等

4.6 按字典顺序比较两个字符串

4.7 字母大小写转换

4.8 字符串分割

五、格式化字符串

5.1 日期和时间字符串格式化

5.1.1 日期格式化

5.1.2 时间格式化

5.1.3 格式化常见的日期时间组合

5.2 常规类型格式化

六、使用正则表达式

七、字符串生成器


一、String类

单个字符可以用char类型保存,多个字符组成的文本需要保存在String对象中。String通常被称为字符串,一个String对象最多可以保存(2^{32}-1)个字节(占用4GB空间大小)的文本内容。

1.1 声明字符串

在Java语言中,字符串必须包含在一对双引号("")之内。例如:

"23.23"、"ABCDE"、"你好"

以上这些都是字符串常量,字符串常量可以是系统能够显示的任何文字信息,甚至可以是单个字符。

在Java中由双引号("")包围的都是字符串,不能作为其他数据类型来使用,如“1+2”的输出结果不可能是3。

可以通过以下语法格式来声明字符串变量:

String str;

声明的字符串变量必须经过初始化才能使用,否则编译器会报出“变量未被初始化错误”。

1.2 创建字符串

在Java语言中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用构造方法如下:

1.String(char a[])

该方法用一个字符数组a创建String对象,代码如下:

char a[]={'g','o','o','d'};
String s=new String(a);

等价于:

String s=new String("good");

2.String(char a[],int offset,int length)

该方法提取字符数组a中的一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度,代码如下:

char a[]={'s','t','u','d','e','n','t'};
String s =new String(a,2,4);

等价于:

String s=new String("uden");

3.String(char[] value)

该构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果,代码如下:

char a[]={'s','t','u','d','e','n','t'};
String s=new String(a);

等价于:

String s=new String("student");

除通过以上几种使用String类的构造方法来创建字符串变量之外,还可以通过字符串常量的引用赋值给一个字符串变量来创建字符串。代码如下:

String str1,str2;
str1="We are students";
str2="We sre students";

二、连接字符串

对于已声明的字符串,可以对多个字符串进行连接,也可使字符串与其他数据类型进行连接。

2.1 连接多个字符串

使用“+”运算符可以实现连接多个字符串的功能。“+”运算符可以连接多个String对象并产生一个新的Srting对象。

package haha;
public class computer{
	public static void main(String[] args) {
		String s1=new String("春色绿千里");
		String s2=new String("马蹄香万家");
		String s=s1+"\n"+s2;
		System.out.println(s);
	}
}

2.2  连接其他数据类型

字符串也可同其他数据类型进行连接。如果将字符串同其他数据类型数据进行连接,会将其他数据类型的数据直接转换成字符串。

package haha;
public class computer{
	public static void main(String[] args) {
		int booktime=4;
		float practice=2.5f;
		System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");
	}
}

package haha;
public class computer{
	public static void main(String[] args) {
		int booktime=4;
		float practice=2.5f;
		System.out.println("我每天花费"+booktime+"小时看书;"+(practice+booktime)+"小时上机练习");
	}
}

圆括号的优先级最高,所以先被执行。

三、获取字符串信息

3.1 获取字符串长度

使用String类的length()方法可以获取声明的字符串对象的长度(包括字符串中的空格),语法如下:

str.length();

获取字符串长度,代码如下:

String srt="We are students";
int size=str.length();

3.2 字符串查找

String类提供了两种查找字符串的方法,即indexOf()和lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首次出现的位置,lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。

1.indexOf(Srting s)

如果没有检索到字符串s,该方法的返回值是-1。语法如下:

str.indexOf(substr)
String str="We are students";
int size=str.indexOf("a");         //变量size的值是3

在Java语言中,String对象是用数组表示的,字符串下标是0~length()-1。

2.lastIndexOf(String str)

如果没有检索到字符串s,该方法的返回值是-1。语法如下:

str.lastIndexOf(substr)

如果lastIndexOf()方法中的参数是空字符串""(注意没有空格),则返回的结果与调用length()方法的返回结果相同。

package haha;
public class computer{
	public static void main(String[] args) {
		String str="We are students";
		int size=str.lastIndexOf("");
		System.out.println("空字符串在字符串str中的索引位置是:"+size);
		System.out.println("字符串str的长度是:"+str.length());
	}
}

3.3 获取指定索引位置的字符

使用charAt()方法可将指定索引处的字符返回,语法如下:

srt.charAt(int index)
package haha;
public class computer{
	public static void main(String[] args) {
		String str="hello world";
		char mychar=str.charAt(6);
		System.out.println("字符串str中索引位置是6的字符为:"+mychar);
	}
}

四、字符串操作

4.1 获取字符串

通过String类的substring()方法可以对字符串进行截取。

1.substring(int beginIndex)

该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。语法如下:

str.substring(int beginIndex)
String str="Hello world";
String substr=str.substring(3);     //获取字符串,此时substr值为lo World

在字符串中,空格占用一个索引位置。

2.substring(int beginIndex,int endIndex)

该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。语法如下:

substring(int beginIndex,int endIndex)
package haha;
public class computer{
	public static void main(String[] args) {
		String str="《将进酒》:李白(唐)";
		String substr=str.substring(6,8);
		System.out.println("《将进酒》的作者是"+substr);
	}
}

 4.2 去除空格

trim()方法返回字符串的副本,忽略前导空格和尾部空格,语法如下:

srt.trim()
package haha;
public class computer{
	public static void main(String[] args) {
		String str="  Java  class   ";
		System.out.println("字符串原来的长度:"+str.length());
		System.out.println("去掉空格后的长度:"+str.trim().length());
	}
}

4.3 字符串替换

 replace()方法可实现将指定的字符或字符串替换成新的字符或字符串,语法如下:

str.replace(CharAequence target,CharSequence replacement)

如果字符或字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。

package haha;
public class computer{
	public static void main(String[] args) {
		String str="address";
		String newstr=str.replace("a","A");
		System.out.println(newstr);
	}
}

如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。

要替换的字符oldChar的大小写要与原字符串中字符的大小写保持一致

4.4 判断字符串的开始与结尾

startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。

1.startsWith()方法

该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法如下:

str.startsWith(String prefix)

2.endsWith()方法

该方法用于判断当前字符串是否为以给定的子字符串结束,语法如下:

str.endsWith(String suffix)
package haha;
public class computer{
	public static void main(String[] args) {
		String num1="22045612";
		String num2="21304578";
		boolean b=num1.startsWith("22");
		boolean b2=num2.endsWith("78");
		System.out.println("字符串num1是以‘22’开始的吗?"+b);
		System.out.println("字符串num2是以‘78’结束的吗?"+b2);
	}
}

4.5 判断字符串是否相等

对字符串对象进行比较不能简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回false。使用比较运算符比较两个字符串,代码如下:

String tom=new String("I am a student");
String jerry=new String("I am a student");
boolean b=(tom==jerry);

布尔型变量b的值为false,因为字符串是对象,tom、jerry是引用。

要比较两个字符串内容是否相等,应使用equals()方法和equalsIgnoreCase()方法。

1.equals()方法

如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。否则,返回false,语法如下:

str.equals(String otherstr)

2.equalsIgnoreCase()方法

使用equals()方法对字符串进行比较时是区分大小写的,而使用equalsIgnoreCase()方法是在忽略大小写的情况下比较两个字符串是否相等,返回结果仍为boolean类型,语法如下:

str.equalsIgnoreCase(String otherstr)
package haha;
public class computer{
	public static void main(String[] args) {
		String s1=new String("abc");
		String s2=new String("ABC");
		boolean b=s1.equals(s2);
		boolean b2=s1.equalsIgnoreCase(s2);
		System.out.println(s1+" equals "+s2+":"+b);
		System.out.println(s1+" equalsIgnoreCase "+s2+":"+b2);
	}
}

4.6 按字典顺序比较两个字符串

compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果两个字符串相等,则结果为0。语法如下:

str.compareTo(String otherstr)

compareTo()方法只有在equals(Object)方法返回true时才返回0。

package haha;
public class computer{
	public static void main(String[] args) {
		String str=new String("b");
		String str2=new String("a");
		String str3=new String("c");
		System.out.println(str+" compareTo "+str2+":"+str.compareTo(str2));
		System.out.println(str+" compareTo "+str3+":"+str.compareTo(str3));
	}
}

4.7 字母大小写转换

String类的toLowerCase()方法可将字符串中的所有大写字母改写为小写字母,而toUpperCase()方法可将字符串中的所有小写字母改写为大写字母。如果字符串中没有应该被转换的字符,则将原字符串返回。

str.toLowerCase()
str.toUpperCase()
package haha;
public class computer{
	public static void main(String[] args) {
		String str=new String("Oh My God");
		String newstr=str.toLowerCase();
		String newstr2=str.toUpperCase();
		System.out.println(newstr);
		System.out.println(newstr2);
	}
}

4.8 字符串分割

使用split()方法可以使字符串按指定的分割字符或字符串进行分割,并将分割后的结果存放在字符串数组中。split()方法提供了以下两种字符串分割形式。

1.split(String sign)

 该方法可根据给定的分割符对字符串进行拆分。代码如下:

str.split(String sign)

没有统一的对字符进行分割的符号。如果想定义多个分割符,可使用符号“|”。例如,“,|=”表示分割符分别为“,”和“=”。

2.split(String sign,int limit)

该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。语法如下:

str.split(String sign,int limit)
package haha;
public class computer{
	public static void main(String[] args) {
		String str="192.168.0.1";
		String[] firstArray=str.split("\\.");
		String[] secondArray=str.split("\\.",2);
		System.out.println("str的原值为:["+str+"]");
		System.out.print("全部分割的结果:");
		for (String a:firstArray) {
			System.out.print("["+a+"]");
		}
		System.out.println();
		for (String a:secondArray) {
			System.out.print("["+a+"]");
		}
		System.out.println();
	}
}

五、格式化字符串

String类的静态format()方法用于创建格式化的字符串。format()方法有两种重载形式。

1.format(String format.Object...args)

该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境,语法如下:

str.format(String format,Object...args)

2.format(Local I,String format,Object...args)

该方法使用指定的语言环境,格式化字符串和参数返回一个格式化字符串,格式化后的新字符串使用其指定的语言环境。语法如下:

str.format(Local I,String format,Object...args)

5.1 日期和时间字符串格式化

5.1.1 日期格式化

先看一个例子,返回一个月中的天数,代码如下:

Date date=new Date();
String s=String.format("%te",date);

package haha;
import java.util.Date;
public class computer{
	public static void main(String[] args) {
		Date date=new Date();
		String year=String.format("%tY", date);
		String month=String.format("%tB", date);
		String day=String.format("%td", date);
		System.out.println("今年是:"+year+"年");
		System.out.println("现在是:"+month);
		System.out.println("今天是:"+day+"号");
	}
}

5.1.2 时间格式化

 

 

package haha;
import java.util.Date;
public class computer{
	public static void main(String[] args) {
		Date date=new Date();
		String hour=String.format("%tH",date);
		String minute=String.format("%tM", date);
		String second=String.format("%tS",date);
		System.out.println("现在是:"+hour+"时"+minute+"分"+second+"秒");
	}
}

 

5.1.3 格式化常见的日期时间组合

 

package haha;
import java.util.Date;
public class computer{
	public static void main(String[] args) {
		Date date=new Date();
		String time=String.format("%tc", date);
		String form=String.format("%tF", date);
		System.out.println("全部的时间信息是:"+time);
		System.out.println("年-月-日格式:"+form);
	}
}

 

5.2 常规类型格式化

 常规类型格式化可应用于任何参数类型。

package haha;
import java.util.Date;
public class computer{
	public static void main(String[] args) {
		String str=String.format("%d", 400/2);
		String str2=String.format("%b", 3>5);
		String str3=String.format("%x", 200);
		System.out.println("400的一半是:"+str);
		System.out.println("3>5正确吗:"+str2);
		System.out.println("200的十六进制数是:"+str3);
	}
}

 

六、使用正则表达式

 正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,"//d"表示数字0~9中的任何一个,"/d"就是元字符。

在正则表达式中,"."代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符".",必须使用转义字符"\"。

在正则表达式中,可以使用方括号括起若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。例如,reg="[abc]4",这样字符串a4、b4、c4都是和正则表达式匹配的字符串。方括号元字符还可以为其他格式。如:

  • [^456]:代表4、5、6之外的任何字符。
  • [a-r]:代表a~r中的任何一个字母。
  • [a-zA-Z]:可表示任意一个英文字母。
  • [a-e[g-z]]:代表a~e或g~z中的任何一个字母(并运算)。
  • [a-o&&[def]]:代表字母d、e、f(交运算)。
  • [a-d&&[^bc]]:代表字母a、d(差运算)。

在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如,"A*"代表A可在字符串中出现0次或多次。

例:验证E-mail地址是否“合法”

package haha;
public class computer{
	public static void main(String[] args) {
		String regex="\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
		String str1="aaa@";
		String str2="aaaaa";
		String str3="1111@111ffyu.dfg.com";
		if(str1.matches(regex)) {
			System.out.println(str1+"是一个合法的E-mail地址格式");
		}
		if(str2.matches(regex)) {
			System.out.println(str2+"是一个合法的E-mail地址格式");
		}
		if(str3.matches(regex)) {
			System.out.println(str3+"是一个合法的E-mail地址格式");
		}
	}
}

七、字符串生成器

创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用"+"可以达到附加新字符或字符串的目的,但"+"会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。而JDK新增了可变的字符序列StringBulider类,大大提高了频繁增加字符串的效率。

package haha;
public class computer{
	public static void main(String[] args) {
		String str="";
		long startTime=System.currentTimeMillis();
		for(int i=0;i<10000;i++) {
			str=str+1;
		}
		long endTime=System.currentTimeMillis();
		long time=endTime-startTime;
		System.out.println("String消耗时间:"+time);
		StringBuilder builder=new StringBuilder();
		startTime=System.currentTimeMillis();
		for(int j=0;j<10000;j++) {
			builder.append(j);
		}
		endTime=System.currentTimeMillis();
		time=endTime-startTime;
		System.out.println("StringBuilder消耗时间:"+time);
	}
}

通过上面的例子可以看出,两种操作执行的时间差距很大。

如果在程序中频繁地附加字符串,建议使用StringBuilder类。新创建的StringBuilder对象初始容量是16个字符,可以自行指定初始长度。如果附加的字符超过可容纳的长度,则StringBuilder对象将自动增加长度以容纳被附加的字符。若要使用StringBuilder类最后输出字符串结果,可使用toString()方法。利用StringBuilder类中的方法可动态地执行添加、删除和插入等字符串中的编辑操作。

1.append()方法

该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器。语法如下:

append(content)

2.insert(int offset,arg)方法

该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入int、float、char和boolean等基本数据类型的数据或其他对象。语法如下:

insert(int offset,arg)
SrtingBuilder bf=new StringBuilder("hello");
bf.insert(5,"world");
System.out.println(bf.toString());      //输出信息为helloworld

3.delete(int start,int end)方法

移除此序列的子字符串中的字符。该子字符串从指定的start处开始,一直到索引end-1处的字符。如果不存在这种字符,则一直到序列尾部。如果start等于end,则不发生任何更改。语法如下:

delete(int start,int end)
StringBuilder bf=new StringBuilder("StringBuilder");
bf.delete(5,10);
System.out.println(bf.toString());               //输出的信息为Strinder

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android JNI开发从0到1,java调C,C调Java,保姆级教程详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 第一步首先配置Android studio的NDK开发环境&#xff0c;首先在Android studio中下载NDK…

QT-基于Buildroot构建系统镜像下实现QT开发

QT-基于Buildroot构建系统镜像下实现QT开发 BuildRootUboot的仓库地址和commit idKernel 的仓库地址和commit id BuildRoot已编译库在Windows上的Create上创建项目编译QT项目 BuildRoot 这部分按照100ask官网的教程走即可: Uboot的仓库地址和commit id https://e.coding.net/…

如何使用ChatGPT设计LOGO,只需知道品牌名字就能完成傻瓜式操作

​独特且引人注目的LOGO对于引导用户/消费者快速识别并与你建立联系至关重要。然而&#xff0c;聘请专业的设计师来创建个性化LOGO可能非常昂贵。这里可以使用使用ChatGPT。[1] 你只需要&#xff1a; 准备好公司名称&#xff1b; 能用ChatGPT&#xff0c;用来给BingChat喂log…

WebAPIs 第一天

1.声明变量const优先&#xff08;补充&#xff09; 2.WebAPI基本认知 作用和分类 DOM树和DOM对象 3.获取DOM元素 4.DOM修改元素内容 5.操作元素属性 6.定时器-间歇函数 一.声明变量const优先 ① 变量声明有var let const ② 建议const优先&#xff0c;尽量使用const…

【枚举+推式子】牛客小白月赛 63 E

登录—专业IT笔试面试备考平台_牛客网 题意&#xff1a; 思路&#xff1a; 首先是个计数问题&#xff0c;考虑组合数学 组合数学就是在考虑枚举所有包含1和n的区间 这个典中典就是枚举1和n的位置然后算贡献 双指针超时&#xff0c;考虑推式子&#xff1a; Code&#xff1a…

分类过程中的一种遮挡现象

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由6张二值化的图片组成&#xff0c;让A&#xff0c;B中各有3个点&#xff0c;且不重合&#xff0c;统计迭代次数并排序。 其中有10组数据 差值结构 迭代次数 构造平均列A 构造平均列AB…

C++笔记之函数参数列表中设置默认值

C笔记之函数参数列表中设置默认值 code review! 代码 #include <iostream>// 函数声明时设置默认值 void printInfo(std::string name "Unknown", int age 0);int main() {printInfo(); // 使用默认参数值printInfo("Alice", 25);…

Scractch3.0_Arduino_ESP32_学习随记_蓝牙鼠标(四)

蓝牙鼠标 目的器材程序联系我们 目的 通过C02实现蓝牙鼠标。 器材 硬件: 齐护机器人C02 购买地址 软件:scratch3.0 下载地址:官网下载 程序 蓝牙鼠标使用使用ESP32自带的BLE蓝牙&#xff0c;不需要再外接模块。可以实现鼠标移动&#xff0c;左右键的点击动作。 联系我们…

C++进阶 智能指针

本篇博客简介&#xff1a;介绍C中的智能指针 智能指针 为什么会存在智能指针内存泄露内存泄漏定义内存泄漏的危害如何检测内存泄漏如何避免内存泄漏 智能指针的使用及其原理RAII设计一个智能指针C官方的智能指针 定制删除器智能指针总结 为什么会存在智能指针 我们首先来看下面…

消息队列(11) - 通信协议的设计

目录 通信协议设计代码实现 通信协议设计 对于我们客户端与服务器之间的通信协议我们约定如下&#xff1a; 具体的协议设计: 之后我们传递的参数也是这些 关于 type其实是在描述当前这个请求 、 响应是在调用那个API 约定如下 对于channel ,是tcp链接中的一个逻辑上的链接,…

Python实现图片文本支持中文,自定义字体

Python实现图片文本支持中文&#xff0c;自定义字体 # 支持中文 import matplotlib #用下载好的字体文件设置字体&#xff0c;从而正确显示中文 myfont matplotlib.font_manager.FontProperties(fnamer"./simsun.ttc") # 自定义的字体文件 plt.figure(figsize (1…

udp一般不会存在错数据

UDP在传输过程中会出现丢包的情况&#xff0c;但不会导致数据错乱的情况&#xff0c;这涉及到UDP协议的特性和工作原理。 无连接性&#xff1a;UDP是一种无连接的传输协议&#xff0c;每个UDP数据包都是独立的&#xff0c;没有依赖关系。因此&#xff0c;即使发生数据包丢失&am…

Golang 局部变量、全局变量 声明

文章目录 一、局部变量二、全局变量 一、局部变量 四种声明方式 多变量声明&#xff1a; package mainimport "fmt"//局部变量声明 func main() {//方法一: 声明一个变量和数据类型&#xff0c;不初始化值&#xff1b;默认值为0&#xff1b;var lvA intfmt.Printl…

圆圈中最后剩下的数字——剑指 Offer 62

文章目录 题目描述解法一题目描述 解法一 class Solution

Spring MVC静态资源映射

Spring MVC静态资源映射 静态资源映射。使用容器的默认Servletlocationmapping&#xff1a;cache-periodorder Spring MVC需要对RESTful风格的URL提供支持&#xff0c;而真正的RESTful风格的URL不应该带有任何后缀&#xff0c;因此将Spring MVC拦截的URL改为“/”&#xff08;正…

使用蓝牙外设却不小心把台式机电脑蓝牙关了

起因 今天犯了一个贼SB的错误&#xff0c;起因是蓝牙键盘突然就不能输入了&#xff08;虽然是连接状态&#xff0c;但是按什么键都没有反应&#xff09; 原来我的解决方法就是重启一下电脑&#xff0c;但是那会电脑开了贼多的软件。我就想重启也太麻烦了&#xff0c;既然重启…

Java之继承

继承 继承为什么使用继承继承是什么继承的语法访问父类成员访问父类成员变量访问父类成员方法 super关键字子类构造方法super和this异同分别的使用方法 继承的方式final关键字 作者简介&#xff1a; zoro-1&#xff0c;目前大一&#xff0c;正在学习Java&#xff0c;数据结构等…

【算法挨揍日记】day02——双指针算法_快乐数、盛最多水的容器

202. 快乐数 202. 快乐数https://leetcode.cn/problems/happy-number/ 题目&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个…

Python接口自动化之request请求封装

我们在做自动化测试的时候&#xff0c;大家都是希望自己写的代码越简洁越好&#xff0c;代码重复量越少越好。那么&#xff0c;我们可以考虑将request的请求类型&#xff08;如&#xff1a;Get、Post、Delect请求&#xff09;都封装起来。这样&#xff0c;我们在编写用例的时候…

OptaPlanner笔记2

1.5.3 使用maven 修改pom.xml 导入optaplanner-bom以避免为每一个依赖项重复添加版本号 <project>...<dependencyManagement><dependencies><dependency><groupId>org.optaplanner</groupId><artifactId>optaplanner-bom</art…