java-StringBuffer,数组高级,Integer,Character

StringBuffer

构造方法

public StringBuffer()
// 无参构造方法
public StringBuffer(int capacity)
// 指定容量的字符串缓冲区对象
public StringBuffer(String str)
// 指定字符串内容的字符串缓冲区对象

方法

public int capacity()
// 返回当前容量
public int length()
// 返回长度(字符数),实际值
  • 添加功能
public StringBuffer append(String str)
// 把str添加到字符串缓冲区里面,并返回字符串缓冲区本身
// append有很多重载方法,可以把任意类型的数据插入到字符串缓冲区里面
public StringBuffer insert(int offset,String str)
// 在指定位置把任意类型的数据插入到字符串缓冲区里面
// 并返回字符串缓冲区本身
  • 删除功能
public StringBuffer deleteCharAt(int index)
// 删除指定位置的字符,并返回本身
public StringBuffer delete(int start,int end)
// 删除从指定位置开始到指定位置结束的内容并返回本身
// 包左不包右
  • 替换功能
public StringBuffer replace(int start,int end,String str)
// 从start开始到end,用str替换
  • 反转功能
public StringBuffer reverse()
  • 截取功能
    注意返回值类型是String,StringBuffer本身不变
public String substring(int start)
// 截取从start到最后
public String substring(int start,int end)
// 截取从start开始到end结束,包左不包右

StringBuffer和String

  • StringBuffer和String的区别
    • 前者长度和内容可变,后者不可变
    • 如果使用前者做字符串的拼接,不会浪费太多的资源
  • String和StringBuffer的转换
    • String转换成StringBuffer
    1. 通过构造方法
    String s = "hello";
    StringBuffer sb = new StringBuffer(s);
    // 常用
    
    1. 通过append方法
    String s = "hello";
    StringBuffer sb2 = new StringBuffer();
    sb2.append(s);
    
    1. 不能把字符串的值直接赋值给StringBuffer
    String s = "hello";
    // StringBuffer sb = s;
    // StringBuffer sb = "hello";
    // 这两种方法都是错误的
    
    • StringBuffer转换成String
    1. 通过构造方法
    StringBuffer buffer = new StringBuffer("java");
    String str = new String(buffer);
    
    1. toString()方法
    StringBuffer buffer = new StringBuffer("java");
    String str2 = buffer.toString();
    // 常用
    

面试题

  • String,StringBuffer,StringBuilder的区别
    • String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的;
    • StringBuffer是同步的,数据安全,效率低;
    • StringBuilder是不同步的,数据不安全,效率高
  • StringBuffer和数组的区别?
    • 两者都可以看成是一个容器,装其他的数据
    • 但是呢,StringBuffer的数据最终是一个字符串数据
    • 而数组可以放置多种数据,但必须是同一种数据类型
  • 形式参数问题
    • 形式参数
      • 基本类型: 形式参数的改变不影响实际参数
      • 引用类型: 形式参数的改变直接影响实际参数
    • String作为参数传递,效果和基本类型作为参数传递一样。
      StringBuffer作为参数传递,append函数可以改变实际参数值,直接赋值(sb1=sb2)不会改变实际参数值。

数组高级

排序

  • 冒泡排序: 相邻元素两两比较,大的往后放。第一次完毕后,最大值就出现在了最大索引处。同理,继续,即可得到一个排好序的数组。
    • 代码
public static void bubbleSort(int[] arr) {
	for (int x = 0; x < arr.length - 1; x++) {
		for (int y = 0; y < arr.length - 1 - x; y++) {
			if (arr[y] > arr[y + 1]) {
				int temp = arr[y];
				arr[y] = arr[y + 1];
				arr[y + 1] = temp;
			}
		}
	}
}
  • 选择排序: 从索引0开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。
    • 代码
public static void selectSort(int[] arr) {
	for(int x=0; x<arr.length-1; x++) {
		for(int y=x+1; y<arr.length; y++) {
			if(arr[y]<arr[x]) {
				int temp = arr[x];
				arr[x] = arr[y];
				arr[y] = temp;
			}
		}
	}
}

查找

  • 折半查找(二分查找)
    • 代码
public static int getIndex(int[] arr, int value) {
	// arr必须是排好序的数组
	// 定义最大索引,最小索引
	int max = arr.length - 1;
	int min = 0;
	
	// 计算中间索引
	int mid = (max + min) / 2;
	while (arr[mid] != value) {
		if (arr[mid] > value) {
			max = mid - 1;
		} else {
			min = mid + 1;
		}
		// 加入判断
		if(min > max) {
			return -1;
		}
		mid = (min + max) / 2;
	}
	return mid;
}

Arrays类

  • 作用: 针对数组进行操作的工具类,比如排序和查找
  • 方法
public static String toString(int[] a)
// 把数组转成字符串
public static void sort(int[] a)
// 对数组进行排序
public static int binarySearch(int[] a,int key)
// 二分查找

注: 可以是任意类型的数组,这里举例用的int类型数组

Integer

类类型

java针对每一种基本数据类型提供了对应的类类型

  • byte-------------------Byte
  • short------------------Short
  • int----------------------Integer
  • long-------------------Long
  • float-------------------Float
  • double----------------Double
  • char-------------------Character
  • boolean--------------Boolean

Integer类

成员变量

public static final int MAX_VALUE
// int类型能表示的最大数: 2147483647
public static final int MIN_VALUE
// int类型能表示的最小数:-2147483648

构造方法

public Integer(int value)
public Integer(String s) // 这个字符串必须是由数字字符组成

方法

public static String toBinaryString(int i)
// 把十进制数转换成二进制数字符串
public static String toOctalString(int i)
// 把十进制数转换成八进制数字符串
public static String toHexString(int i)
// 把十进制数转换成十六进制数字符串
public static String toString(int i, int radix)
// 把十进制转到其他进制,进制的范围2-36
public static int parseInt(String s,int radix)
// 把其他进制转换成10进制
// Integer.parseInt("123",2)会报错: NumberFormatException
// 二进制数字只有0和1

注: 下面int类型和String类型的相互转换中也有一些Integer的函数

int和String的转换

  • int – String
int number = 100;
String s1 = "" + number;
System.out.println("s1:"+s1);
int number = 100;
String s2= String.valueOf(number);
System.out.println("s2:"+s2);
// 常用
int number = 100;
Integer i = new Integer(number);
String s3 = i.toString();
System.out.println("s3:"+s3);
// int -- Integer -- String
int number = 100;
String s4 = Integer.toString(number);
System.out.println("s4:"+s4);
  • String – int
String s = "100";
Integer ii = new Integer(s);
int x = ii.intValue();
System.out.println("x:"+x);
//String -- Integer -- int
String s = "100";
int y = Integer.parseInt(s);
System.out.println("y:"+y);
// 常用。这里举例是转成int类型,如果String转成其他类型也可以用其他类型对应的类类型的对应方法

面试题

  • JDK5的新特性
    • 自动装箱: 把基本类型转换为包装类类型
    • 自动拆箱: 把包装类类型转换为基本类型
    • 举例
      • Integer i = 100;//自动装箱
      • ii+=200;//自动拆箱,再自动装箱
  • Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里获取数据,例如Integer i1 = 127; Integer i2 = 127; System.out.println(i1==i2);//地址相同,结果是true。

Character

概述

Character类在此对象中包装一个基本类型char的值,此外,该类提供了几种方法,以确定字符的类别(小写字母,数字等等),并将字符从大写转换成小写,反之亦然

构造方法

public Character(char value)

成员方法

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)
// 把给定的字符转换为小写字符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值