【第5、6章】数组、字符串


一、数组

1、声明、创建数组

double []marks = new double[5];
Student[] s = new Student[10];		//对象数组,元素是对象(类型为引用数据类型)
//数组初始化
String[] words = new String[]{"a","b",}
	//初始化创建数组不能制定大小,new String[] 这一部分可以省略
	//最后一个元素后面加一个逗号,以方便扩充

增强的for循环遍历数组:

for(类型 自定义的变量名 : 数组名){	...		}	//只能按顺序
eg:
for(double m:marks){
	System.out.print(m+" ");	}

2、java.util.Arrays类

1、排序:Arrays.sort(数组名)、查找: Arrays.binarySearch(数组名,所查找的元素)

1、数组排序:sort(),默认升序
String []name={"cat","apple","dog"};
Arrays.sort(name);		//按照第一个字符的Unicode码的大小排序
2、在已排序的数组中查找:binarySearch(数组名,所查找的元素)
返回值:找到指定元素,返回下标(0开始);如果没有,返回(-插入点-1int n = Arrays.binarySearch(数组名,所查找的元素)

2、复制:copyOf(数组名,复制元素的个数)、copyOfRange(数组名,起始下标,结束下标)

方法一:copyOf(原数组名,复制元素的个数)
int []a={1,3,5,6,7};
int []b = Arrays.copyOf(a,a.length);	//将a数组所有元素复制到b数组
方法二:copyOfRange(原数组名,起始下标,结束下标)
int []c = Arrays.copyOfRange(a,1,4);	//将a数组下标1~3复制到c数组,注意不包括结束下标

3、填充数组元素:Arrays.fill(数组名,…,填充的值)
Arrays.fill(数组名,填充的值) //填充所有
Arrays.fill(数组名,起始下标,结束下标,填充的值) //也不包含结束下标

//数组逐个填充随机两位数
for(int i=0;i<a.length;i++){
	int num = (int))Math.random()*90+10;	//随机产生两位整数
	Arrays.fill(a,i,i+1,num);
	}

4、数组的比较:Arrays.equals(数组名1,数组名2)
boolean r = Arrays.equals(数组名1,数组名2);

二、字符串

1.String类

(1)创建字符串对象

法一:String str = " ";
法二:String类的构造方法创建字符串对象
String s = new String("")
	字符数组+String构造方法
char[] chars={'',''}
String s2 = new String(chars)

(2)字符串操作

String str = new String("")
//下标从0开始
1、字符串长度:str.length()
2、返回指定下标的字符:str.charAt(下标)
	str.charAt(str.length()-1);		//返回最后一个字符
3、取子串:str.substring(起始下标,结束下标)//注意不包含结束下标;可以没有结束下标,默认到最后
4、转大写:str.toUpperCase()
   转小写:str.toLowerCase()
5、字符串后面连接:str.concat("Hello")
6、替换字符:str.replace('原来的字符''替换的')
7、字符或字符串查找,字符是'',字符串是""
	str.indexOf(""):查找位置,成功返回下标,不成功返回-1
	str.lastIndexOf(""):查找最后一次出现的位置
8、字符串转数组
	str.toCharArray():将字符串中的字符转换成字符数组
	str.getChars(起始位置,结束位置,目标数组名,目标数组起始位置):将str中选中的字符复制到字符数组的指定位置
	str.getBytes():将字符串中的字节转换成字节数组
	char[] s = str.toCharArray();
	byte[] b = str.getBytes();
9、字符串内容比较
	str.equals(""):boolean类型,比较两个字符串内容是否相等
	str.equalsIgnoreCase(""):boolean类型,比较两个字符串内容是否相等,不区分大小写
10、字符串大小比较
	str.compareTo("str2"):str<str2,返回值小于0;等于则返回0;大于返回值大于0
	str.compareToIgnoreCase(""):忽视大小写
11boolean类型
	str.startsWith(""):判断字符串是否以某个字符串开始
	str.endsWith(""):判断字符串是否以某个字符串结束
	str.contains("str2"):判断字符串是否包含子串str2
12、字符串拆分与组合
	str.split("正则表达式"):拆分字符串
	eg:
		String str="one two,three.four";
		String[] s = str.split("[ .,]") ;	//str按照空格点号逗号拆分成字符串数组
	str.matches("正则表达式"):boolean类型,判断str是否和正则表达式子一致
	String类的静态join()方法(用类名String调用):
	String.join('分隔符',各元素):使用指定的分隔符,将各元素组合成一个新字符串
	eg:
		String joined = String.join("\\","C:","javastudy","com");	
		//Java 代码中的反斜杠(\)是转义字符,因此需要表示字面意义上的\,就需要使用双反斜杠(\\)
			//输出结果		C:\javastudy\com
		String [] ss = {"A","B","C","D"}
		String s = String.join("-",ss);
			//输出结果		A-B-C-D

(3)对于一些细节的理解
①不能用"=="来比较字符串内容是否相等
因为双等号在比较引用类型的数据时,比较的是引用(地址)是否相等,两个引用指向同一对象(即用字符串常量创建对象的情况),结果才为true

//这里是用构造方法创造的不同对象,开辟了两块空间,所以s1和s2这两个引用指向不同对象
String s1 = new String("Hello");
String s2 = new String("Hello");
//用字符串常量创建对象,内容相同的字符串在常量池中只有一个副本,所以s1和s2指向同一对象
String s1 ="Hello";
String s2 ="Hello";

②String对象具有不变性,即对原字符串的修改操作都是产生了另一个字符串,原字符串永远不会改变
(4)命令行参数
main 方法的声明格式:public ststic void main(String []args) {}
其中 字符串数组 String []args 就是命令行参数,该参数在程序运行时通过命令行传递给main()方法。
(注意arg[0],arg[1]…程序声明了多少个,命令行就要输入多少个)
ps:留个印象,还未实践,以后再补充

2、格式化输出

printf(format,args)--->输出结果:输出流
format:格式符,以%开头,指定参数如何输出
	%d:整数		%nd:n宽度的整数
	%f:小数		%n.mf:n宽度,保留m位小数
	%e:科学计数法	%n.me:n宽度,保留m位小数
	%c:输出字符	
		eg: byte b=65;
			System.out.print("b=%c",b);		//输出 b=A
	%s:输出字符串
	%n:换行

3、StringBuilder类

简介:StringBuilder类表示可变字符串,比String类更灵活。StringBuilder类的实例不是线程安全的。
(1)创建StringBuilder对象

StringBuilder str = new StringBuilder("Hello")

特点:系统为字符串Hello分配空间外,还分配16个字符的缓冲区,方便StringBuilder对象的修改,如果修改后长度超过容量,则继续按倍扩充
(2)基本操作

1、包括String类的一些基本操作,如length(),charAt(),indexOf(),substring()
	复习一下:charAt(下标):返回指定下标的字符;
			indexOf("ss"):查找ss的位置
			substring(起始下标,结束下标):取子串
2、str.capacity():返回当前字符串缓冲区的总容量
3、str.setCharAt(下标,'ch'):用ch修改指定位置的字符
4、str.append(数据):在字符串末尾追加数据
5、str.insert(指定插入的起始位置,数据):向字符串中插入数据
6、str.deleteCharAt(下标):删除指定位置的字符
	str.delete(开始下标,结束下标):删除指定的一段字符,不包括结束下标的字符
7、str.replace(开始下标,结束下标,"s"):用字符串s替换指定的一段字符,不包括结束下标的字符
8、str.reverse():字符反转
9、str.setLength():设置字符序列的长度 

三、API文档

1、Java API 内容:可查看所有的包、类及其定义的构造方法、实例方法
2、在线API文档
Java API文档下载
下载之后打开index.html,点击Java SE API链接,就到了上面在线API文档的页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值