day13_StringBuffer&排序&查找&Arrays

今天听了刘意老师JavaSE第13天的前半部分(1-17),归纳如下

一、StringBuffer&StringBuilder

  • 1:String,StringBuffer,StringBuilder的区别?

  • A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。

  • B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高

  • 2:StringBuffer和数组的区别?

  • 二者都可以看出是一个容器,装其他的数据。

  • 但是呢,StringBuffer的数据最终是一个字符串数据。

  • 而数组可以放置多种数据,但必须是同一种数据类型的。

  • 3:形式参数问题

  • String作为参数传递

  • StringBuffer作为参数传递

  • 形式参数:

  •  基本类型:形式参数的改变不影响实际参数
    
  •  引用类型:形式参数的改变直接影响实际参数
    
  • 注意:

  •  String作为参数传递,效果和基本类型作为参数传递是一样的,当通过方法被赋值以后,main方法里的值不会改变。
    

4:StringBuffer的构造方法

  • public StringBuffer():无参构造方法
  •  public StringBuffer(int capacity):指定容量的字符串缓冲区对象
    
  •  public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
    
  • StringBuffer的方法:
  •  public int capacity():返回当前容量。	理论值
    
  •  public int length():返回长度(字符数)。 实际值
    

5:StringBuffer的添加功能

  • public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

  • public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

6: StringBuffer的删除功能

  • public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
  • public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身

7: StringBuffer的替换功能:

  • public StringBuffer replace(int start,int end,String str):从start开始到end用str替换

8:StringBuffer的反转功能:

  • public StringBuffer reverse()

9: StringBuffer的截取功能:
(注意返回值类型不再是StringBuffer本身了)

  • public String substring(int start)
  • public String substring(int start,int end)

二、排序
1、冒泡排序
①原理:从索引0处开始两两比较,比到末位算一轮,共比较length-1轮。
②代码:

 `public static void bubbleSort (int [] arr){
 for (int x = 0; x < arr.length ; x++)  {
			for (int y = 0; y < arr.length  - x; y++) {
				if (arr[y] > arr[y + 1]) {
					int temp = arr[y];
					arr[y] = arr[y + 1];
					arr[y + 1] = temp;
				}
			}
		}`

2、选择排序
①原理:从索引0处开始两两比较,小的成为新的索引0处元素,再和第三个比较,二者中小的成为新的索引0处元素,不断更新的索引0处元素和末位比完算一轮,共比较length-1轮。
②代码:

public static void selectSort(int[]arr){
	for (int x=0;x<arr.length-1;x++){
	for(int y=x+1;y<length;y++){
	if(arr[x]>arr[y]){
		int temp=arr[x];
		arr[x]=arr[y];
		arr[y]=int temp;
		}
	}
}
	

三、查找
1、二分查找
前提:有序数列
在这里插入图片描述
代码:

public static int binarySearch (int []arr, int value){
	int max=arr.length-1;
	int min=0;
	int mid=(max+min)/2;

	while(arr[mid]!=value){
		if(value<arr[mid]){
			max=mid-1;}
		else if(value>arr[mid]){
				min=mid+1;}
		if(min>max){
		return -1;}//判断所给值是否在数列内
		mid=(max+min)/2; } //这步保证循环能进行下去
			return mid;} //最终需要让被查找索引等于中间值

(注意:如果给了一个无序数组,不能先排序再查找,因为排序已经把它的索引值改变了)

2、基本查找
代码

public static int basicSearch (int []arr,int value){
	int index=-1;
	for(int i=0;i<arr.length;i++){
	if(arr[i]==int value){
		index=i;
		break;}
		return index;}
		}

四、Arrays工具类
(无构造方法–>所有成员方法都是静态的–>可以通过类名Arrays直接调用)
(1)定义:针对数组进行操作的工具类(如排序、查找)
(2)成员方法:
public static String toString (int []a) 把数组转换成字符串
public static void sort (int []a) 排序(底层是快排,源码没看)
public static int binarySearch (int []a, int key) 二分查找

五、Integer
(1)定义:为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型。
(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer(“100”);
注意:这里的字符串必须是由数字字符组成
(3)String和int的相互转换
A:String – int
Integer.parseInt(“100”);
B:int – String
String.valueOf(100);
(4)其他的功能(了解)
进制转换
(5)JDK5的新特性
自动装箱 基本类型–引用类型
自动拆箱 引用类型–基本类型

	把下面的这个代码理解即可:
		Integer i = 100;
		i += 200;

六、Character
(1)构造方法:

  •  Character(char value)
    

(2)成员方法:

  • public static boolean isUpperCase(char ch):判断给定的字符是否是大写字符
  • public static boolean isLowerCase(char ch):判断给定的字符是否是小写字符
  • public static boolean isDigit(char ch):判断给定的字符是否是数字字符
  • public static char toUpperCase(char ch):把给定的字符转换为大写字符
  • public static char toLowerCase(char ch):把给定的字符转换为小写字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值