标签:
B:StringBuffer和String的区别
StringBuffer是一个可变的字符序列
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
System.out.println(sb.length()); //0,容器的字符个数
System.out.println(sb.capacity()); //16,容器的初始容量
StringBuffer sb1 = new StringBuffer(10);
System.out.println(sb1.length()); //0,容器的字符个数
System.out.println(sb1.capacity()); //10,可设置容器的初始容量
StringBuffer sb2 = new StringBuffer("hongwei");
System.out.println(sb2.length()); //7,容器的字符个数
System.out.println(sb2.capacity()); //23,字符个数+容器的初始容量
}
StringBuffer sb_1 = new StringBuffer("abc");
StringBuffer sb_2 = sb_1.append(100);
System.out.println(sb_1.toString()); //"abc100"
System.out.println(sb_2.toString()); //"abc100"
String s = "abc";
String s1 = s.substring(1);
System.out.println(s); //“abc”
System.out.println(s1); //"ab"
* public StringBuffer **insert**(int offset,String str):
* 在offset位置把任意类型的数据str插入到字符串缓冲区里面,并返回字符串缓冲区本身.如果不存在offset位置,报索引越界异常错误。
StringBuffer sb = new StringBuffer("1234");
sb.append(567);
System.out.println(sb); //1234567
sb.insert(3,"hong");
System.out.println(sb); //123hong4567
sb.deleteCharAt(3);
System.out.println(3); //123ong4567
sb.delete(3,6);
System.out.println(sb);//1234567,删除包括start,不包括尾
//sb.delete(0,sb.length()); //清空缓冲区
sb.replace(3, 5, "hong");//包含头,不包含尾
System.out.println(sb);//123hong67
sb.reverse();
System.out.println(sb); //76gnoh321
sb.reverse();
String s = sb.substring(3, 7);
System.out.println(sb); //123hong67,注意:返回值不再是本身,包含头,不包含尾
System.out.println(s); //hong
A:案例演示
举例:
int[] arr = {1,2,3};
输出结果:
"[1, 2, 3]"
用StringBuffer的功能实现
private static void formatPrint() {
//sb.append(arr[i]+"]"); //要再创建一个StringBuffer对象,浪费资源
//这里使用StringBuffer,只需要创建一次对象。要是使用String对象,后面每次更改值,之前的都变为垃圾,浪费资源。
StringBuffer sb = new StringBuffer();
int arr[] ={1,2,3};
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i == arr.length-1){
sb.append(arr[i]).append("]");
}else{
sb.append(arr[i]).append(",");
}
}
System.out.println(sb);
}
需求:把字符串反转
举例:键盘录入"abc"
输出结果:"cba"
用StringBuffer的功能实现
public static void main(String[] args) {
//formatPrint();
Scanner sc = new Scanner(System.in);
StringBuffer sb = new StringBuffer(sc.nextLine());
sb.reverse();
System.out.println(sb);
}
B:面试题
StringBuilder是jdk1.5版本的,是线程不安全的,效率高
String和StringBuffer,StringBuilder的区别
1.StringBuffer和String的区别**
* String是一个不可变的字符序列
* StringBuffer是一个可变的字符序列
2.常见对象(String和StringBuffer分别作为参数传递)
* A:形式参数问题
* String作为参数传递,虽然是引用数据类型,但是当做参数传递时和基本数据类型是一样的
* StringBuffer作为参数传递
public class Demo4_String_StringBuffer {
public static void main(String[] args) {
//String虽然是引用数据类型,但是当做参数传递时和基本数据类型是一样的
String s = "123";
change(s);
System.out.println(s); //123
StringBuffer sb = new StringBuffer("123");
change(sb);
System.out.println(sb); //123hongwei
}
private static void change(StringBuffer sb) {
sb.append("hongwei");
}
private static void change(String s) {
s+="hongwei";
}
}
需求:
数组元素:{24, 69, 80, 57, 13}
请对数组元素进行排序。
冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
private static void sort(int[] arr) {
for(int i=0;i<arr.length-1;i++)
for(int j=0;j<arr.length-1-i;j++){
if(arr[j+1]<arr[j]){
int temp = arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
for (int i : arr) {
System.out.print(i+" ");
}
}
A:画图演示
需求:
请对数组元素进行排序。
选择排序
public static void selectSort(int[] arr) {
for(int i=0;i<arr.length;i++){
int k=i;
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[i]){
if(arr[j]<arr[k]){
k=j;
}
}
}
int temp =arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
或者
public static void selectSort1(int[] arr) {
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[i]){
int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
public static void main(String[] args) {
int[] arr ={1,5,8,13,59};
System.out.println(binaryFind(arr,8));
}
public static int binaryFind(int[] arr,int value) {
int min=0;
int max=arr.length-1;
int mid = (min+max)/2;
while(arr[mid]!=value){
if(arr[mid]<value){
min = min+1;
}else if(arr[mid]>value){
max=max-1;
}
mid = (min+max)/2;
if(min>max){
return -1;
}
}
return mid;
}
A:Integer类概述
通过JDK提供的API,查看Integer类的说明
Integer 类在对象中包装了一个基本类型 int 的值,
String s = String.valueOf(i);
Integer i1 = new Integer("100");
int i2=i1.intValue();
* public static int **parseInt**(String s)
基本数据类型包装类有八中,其中有七个有parseXxx(),可以将这其中的字符串表现形式转化为基本数据类型
char没哟,字符串转为字符数组,用toCharArray()
B:案例演示
JDK5的新特性自动装箱和拆箱
Integer ii = 100; //自动装箱
看程序写结果
Integer i1 = new Integer(97);
Integer i2 = new Integer(97);
System.out.println(i1 == i2);//false
System.out.println(i1.equals(i2));//true
System.out.println("-----------");
Integer i3 = new Integer(197);
Integer i4 = new Integer(197);
System.out.println(i3 == i4);//false
System.out.println(i3.equals(i4));
System.out.println("-----------");
Integer i5 = 97;
Integer i6 = 97;
System.out.println(i5 == i6);//true
System.out.println(i5.equals(i6));
System.out.println("-----------");
Integer i7 = 197;
Integer i8 = 197;
System.out.println(i7 == i8);//false
System.out.println(i7.equals(i8));
-128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会创建新的对象,直接在常量池中获取;
如果超过byte的取值范围,就会再新创建对象
StringBuffer(StringBuilder)_sort()_Arrays
标签:
原文地址:http://blog.csdn.net/u013217071/article/details/51595240