数组与字符串
通过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);
上一篇: 1102:与指定数字相同的数的个数
下一篇: java使用swt显示图片示例分享