数组与字符串

通过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);




































阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页