欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组与字符串

程序员文章站 2024-02-24 22:21:49
...

通过new建出来的都在堆里面

一般用length遍历打印

java字符串就是Unicode字符序列,java类库中提供一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例

final char []value,final修饰的只能赋值一次之后不可变

String类是不可变序列,string前加了final和private
public可以挎包使用,default只有同个包使用


数组

    1.

数组和字符串是作为一种类的形式来应用的

        String类用于存储和处理字符串常量,创建以后不需改变;StringBuffer类用于存储和操作字符串变量,可对其进行改变

        数组中的变量被称作数组的元素

        数组是同一类型数据元素(数据类型为任意类型)的有限有序集合

        数组也是对象,数组元素相当于对象的成员变量

        数组长度是确定的,不可变的;如果越界,则报:ArrayIndexOutofBoundsException

        数组元素可通过下标来访问它们

    2.

        数组创建:数组名 = new 数组元素类型[数组元素个数]

//数组元素个数可以是常量,也可以是变量
s = new char [20]
//或
int n = 20;
s = new char[n];

//声明和创建可合并
char s = new char[20];

        数组属引用类型

        -Members:length,elements of the array

    3.基本语法

//声明
int[] a;
int b[];
//创建数组对象
		a = new int[4];
		b = new int[6];
//初始化(对数据元素的初始化)
/* 1。默认初始化:数组元素相当于对象的成员变量,默认值跟成员变量规则一样
* 数字0,布尔false,char\u0000,引用:null
*/

//2.动态初始化
		for(int i=0;i<a.length;i++) {
			a[i] = i*12;
			System.out.println(a[i]);
		}

//3.静态初始化
		int[] c= {12,24,36,78};	//长度4,索引范围:[0,3]
		Car[] cars = {
				new Car("bmw"),
				new Car("byd"),
				new Car("X6")
			      };
	}
}

        

字符串

        字符串指的是字符的序列,有两种类型的字符串:一种是创建以后不需要改变的,称为字符串常量String类用于存储和处理字符串常量;另外一种字符串是创建以后,需要对其进行改变的,称为字符串变量StringBuffer类用于存储和操作字符串变量

    1.String类构造函数

① public String():该构造函数用于创建一个空的字符串常量

    String empty = new String();等价于

    String empty = "";

② public String(String value):用于根据一个已存在的字符串常量来创建一个新的字符串常量,该字符串的内容和已经存在的字符串常量一致

③ public String(char a[])或String(char [],int starIndex,int numChars):用于根据一个已经存在的字符数组来创建一个新的字符串常量

			char[] ch = {'H','e','l','l','o'};
			String helloString = new String(ch);
			String heString = new String(ch,0,3);
			System.out.println(helloString);
			System.out.println(heString);

显示结果:Hello
         Hel
④ public String(StringBuffer buffer):用于根据一个已经存在的StringBuffer对象来创建一个新的字符串常量


    2.String类常用方法

//获取字符串的长度

	String s1 ="Hello";
	int n = s1.length();	//5
	System.out.println(n);
	String s2 ="  "; 
	int n1= s2.length();
	System.out.println("n1的值为"+n1);	//2

//判断字符串前缀或后缀与一直字符串是否相同
	String s="Hello";
	s.startsWith("he");		//false,java区分大小写
	s.endsWith("lo");		//true
	
//比较字符串
	s="Hello";
	s.equals("Hello");	//true
	s.equals("Hello");	//false,java区分大小写
	
//把字符串转换为数值
	Integer.parseInt("4567");	//结果为int型整数4567
	Integer.parseInt("123");	//Long型整数123
	Float.valueOf("12.3").floatValue();	//Float型实数12.3
	Double.valueOf("12.3").doubleValue();	//double性实数12.3
	
//替换字符,去掉字符串前后空格
	s="Hello";
	s = s.replace('l', 'm');	//l被m替换,变为hemmo

//空格
String s11 = "  aa  bb  ";
s11 = s11.trim();    //去掉字符串s前后空格
System.out.println(s11);
System.out.println(s11.length());    //6,去除的是前后空格

//字符串检索
String s4 = "Hello";
System.out.println(s4.indexOf("l"));
int s5 = s4.indexOf("o");
System.out.println(s5);
System.out.println(s4.indexOf("w",2));    //从第2位置开始,没有为-1

//求字符串的子串
String s6 = "happy";
System.out.println(s6.substring(2));
String s7 = "harry";
System.out.println(s7.substring(0));//空串,超出范围
	
//返回从索引start的字符到end之间的子串
String s8 = "harrypotter";
System.out.println(s8.substring(5,10));
	
//字符串连接
String s9 = "Hello";
String t = s9.concat("World");
System.out.println(t);
	
//切割
String s10 = "aass,bb,cc,ddee";
String[] strArray = s10.split(",");
for(int i = 0;i<strArray.length;i++) {
System.out.println(i+strArray[i]);}


//忽略大小写
System.out.println("abc".equalsIgnoreCase("ABC"));//true


//*************
System.out.println("Abcdbe".indexOf('b'));//左往右,1
System.out.println("Abcdbe".lastIndexOf('b'));	//右往左,4
	
//转换大小写
System.out.println("ABCDe".toLowerCase());
System.out.println("abcdE".toUpperCase());

StringBuilder类和StringBuffer类

/*
 * 测试可变字符序列
 * StringBuilder(线程不安全,效率高),StringBuffer(线程安全,效率低)
 */

	StringBuilder sb = new StringBuilder(); 	//字符数组长度初始为16
	StringBuilder sb1 = new StringBuilder(32); 	//字符数组长度初始为32
	
	StringBuilder sb2 = new StringBuilder("1234"); 	//长度32,value[]={'1','2','3','4','/u0000',...}
	sb2.append("567");
	System.out.println(sb2);        //1234567
	sb2.append(true);
	System.out.println(sb2);        //1234567true
	sb2.append(true).append(321).append("random");	//通过return.this实现方法链
	System.out.println(sb2);        //1234567true321random

//数组
System.out.println("#################################");
	StringBuilder sb3= new StringBuilder("a");
	for (int i = 0; i <10; i++) {
		sb3.append(i);
	}
	System.out.println(sb3);    

		StringBuilder sb = new StringBuilder("abcdefghijklmnopqrstuvwxyz");
//删除
		sb.delete(3, 5);	//包头不包尾
		System.out.println(sb);
//还可以再删,连续删
		sb.delete(3, 5).delete(3, 5);
		System.out.println(sb);
		
//翻转
		sb.reverse();
		System.out.println(sb);