【Java】字符串的声明,特点及相关方法

字符串声明及特点

/*
字符串的特点:
 1.字符串的内容用不可变
 2.因为不可改变,所以可以共享使用
 3.字符串效果上相当于char[]字符数组,但底层原理是byte[]字节数组。

创建字符串的常见方式:
三种构造方法:
	1.public String(); 创建一个空白字符串,不含有任何内容。
	2.public String(char[] array); 根据字符数组的内容
	3.public String(byte[] arrary); 根据字节数组的内容
一种直接创建:
	String str = "hello";
*/

public class Main{
	public static void main(String[] args){
		//使用空参构造
		String str = new String();

		//根据字符数组创建
		char[] arr = {'a','b','c'};
		String str2 = new String(arr);
		
		//根据字节数组创建
		byte[] barr = {97,98,99};
		String str3 = new String(barr);
		
		//直接创建
		String str4 = "hello java";
		
	}
}

字符串比较相关方法

/*
字符串比较:
 == 是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法:
public boolean equals(Object obj); 参数可以是任何对象,只有参数是一个字符串并且内容相同才会给 true 否则 false;
 	注意:
 	1.任何对象都可用Object进行接收;
	2.equals方法具有对称性,a.equals(b)和b.equals(a)一样
	3.如果一个常量和一个变量比较,推荐把常量写在前面

public boolean equalsIgnoreCase(String str); 忽略大小写,进行内容比较
*/
public class Main{
	public static void main(String[] args){
		String str = "1234";
		String str2 = "1234";
		char[] arr = {'1','2','3','4'};
		String str3 = new String(arr);
				
		System.out.println(str.equals(str2));//true
		System.out.println(str.equals(str3));//true
		System.out.println(str==str3);//false 比较的是地址	
		System.out.println(str3.equals("1234"))//true
		
		//3.如果一个常量和一个变量比较,推荐把常量写在前面
		String str4 = null;
		System.out.println("abc".equals(str4));//推荐 false
		System.out.println(str4.equals("abc"));//不推荐 报错:空指针异常

		String stra = "java";
		String strb = "Java";
		System.out.println(stra.equals(strb));//false 区分大小写
		System.out.println(stra.equalsIgnoreCase(strb));//true 不区分大小写
		
	}
}

字符串获取相关方法

/*
String 当与获取相关的常用方法:

public int length(); 获取字符串长度
public String concat(String str); 将当前字符串和参数字符串拼接返回新的字符串
public char charAt(int index); 获取指定索引位置的单个字符
public int indexOf(String str); 查找参数字符串在本串中首次出现的索引位置,没有返回-1
*/
public class Main{
	public static void main(String[] args){
		//获取字符串长度
		int length = "abcd".length();
		System.out.println("字符串长度:"+length); // 4
		
		//字符串拼接
		String str = "hello";
		String str2 = "java";
		String str3 = str.concat(str2);
		System.out.println("新字符串:"+str3); // hellojava

		//获取指定索引的单个字符
		char ch = str.charAt(1);
		System.out.println("下标为1的字符:"+ch); //e

		//查找参数字符串在本来字符串当中第一次出现的位置
		//没有返回-1
		int index = str.indexOf("ll"); 
		System.out.println(index); // 2
		int index2 = str.indexOf("123"); 
		System.out.println(index2); // -1

	}
}

字符串的截取方法

/*
字符串截取方法:
public String substring(int index); 从index一直到结尾,返回新的字符串
public String substring(int begin, int end); 包含begin不包含end
*/

public class Main{
	public static void main(String[] args){
		String str = "HelloWorld";
		String str2 = str.substring(5);
		System.out.println(str2); // World
		
		String str3 = str.substring(4,7);
		System.out.println(str3); // oWo		
	}	
}

字符串中与转换相关的方法

/*
String 中与转换相关的常用方法:

public char[] toCharArray(); 将当前字符串拆分成字符数组返回
public byte[] getBytes(); 获得当前字符串底层的字节数组
public String replace(CharSequence, oldString, CharSequence newString); 将所有出现的老字符串替换为新字符串,返回替换后的新字符串
CharSequence : 可以接收字符串类型
*/


public class Main{
	public static void main(String[] args){
		// 转换成字符数组
		char[] chars = "Hello".toCharArray();
		System.out.println(chars[2]); // l
		System.out.println(chars[0]); // H
		
		// 转换成字节数组
		byte[] bytes = "abcd".getBytes();
		for(byte i:bytes){
			System.out.println(i);
		}
		
		// 替换
		String str = "123422289";
		String str2 = str.replace("2","*");
		System.out.println("str="+ str); //123422289
		System.out.println("str2="+str2); //1*34***89
	
	}
}

字符串的分割方法

/*
pulbic String[] split(String regex); 按照参数的规则,将字符串切分为若干份
注意: split方法的参数是一个正则表达式
      如果要用英文“.”切割必须 “\\.”
*/

public class Main{
	public static void main(String[] args){
		String str = "aa bb cc dd";
		String[] sarr = str.split(" ");
		for (String s : sarr){
			System.out.println(s); // aa  bb  cc
		}
		
		String str2 = "a.b.c".split("."); // 错误写法
		String str3 = "a.b.c".split("\\."); //正确切法
	}
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一些 Java 基础相关面试题: 1. Java 中的四种访问修饰符是什么?它们的作用分别是什么? 答:Java 中的四种访问修饰符包括 public、protected、default 和 private。它们的作用分别是: - public:可以被任何类访问。 - protected:可以被同一包内的类和不同包的子类访问。 - default:可以被同一包内的类访问。 - private:只能被同一类内部访问。 2. Java 中的基本数据类型有哪些? 答:Java 中的基本数据类型包括 byte、short、int、long、float、double、char 和 boolean。 3. Java 中的面向对象编程有哪些特点? 答:Java 中的面向对象编程有以下特点: - 封装性:将对象的属性和行为封装在一起,对外部隐藏对象的实现细节。 - 继承性:通过继承机制,可以定义新的类从已有的类中继承属性和行为。 - 多态性:同一种行为表现在不同的对象上可以有不同的表现形式。 - 抽象性:通过抽象类和接口,可以定义出一些规范,而无需考虑具体的实现方式。 4. Java 中的 final 关键字有哪些用途? 答:Java 中的 final 关键字有以下用途: - 定义不可变量:使用 final 关键字定义的变量,只能被赋值一次,之后就不能再被修改。 - 定义常量:使用 final 关键字定义的变量,可以在声明时或构造器中进行初始化,之后就不能再被修改。 - 防止继承和重写:使用 final 关键字修饰的类和方法,不能被继承和重写。 5. Java 中的 String 类型是如何实现不可变性的? 答:Java 中的 String 类型是通过将字符数组声明为 private final 的方式实现不可变性的。因为字符数组是 private 的,所以外部无法直接修改它,而因为它是 final 的,所以它的值也无法被修改。同时,String 类型还重写了 Object 类中的 equals() 和 hashCode() 方法,以确保字符串对象的唯一性和不可变性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值