标签:
——Java培训、Android培训、iOS培训、UI培训、PHP培训、期待与您交流! ——
StringBuffer的构造方法:
StringBuffer的方法:
示例:构造方法和长度方法的使用
package com.geekds.stringbuffer;
public class StringBufferStructure {
/**
* StringBuffer的构造方法
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer sb = new StringBuffer();
System.out.println(sb.length());//sb.length()指的是容器里的字符个数,实际值
System.out.println(sb.capacity());//容器初始容量,理论值
StringBuffer s2b = new StringBuffer(100);
System.out.println(s2b.length());
System.out.println(s2b.capacity());
StringBuffer s3b = new StringBuffer("geekds");
System.out.println(s3b.length());//字符 实际个数
System.out.println(s3b.capacity());//字符串的length() + 初始容量 (即:6 + 16)
}
}
public StringBuffer append(String str):
public StringBuffer insert(int offset,String str):
StringBuffer的删除功能
代码演示:
package com.geekds.stringbuffer;
public class MethodAppendInsert {
public static void main(String[] args) {
//增加
methodAppend();
//插入
methodInsert();
//删除字符
StringBuffer sb = new StringBuffer();
/*sb.deleteCharAt(0); //当缓冲区这个索引上没有元素的时候会报索引越界异常StringIndexOutOfBoundsException
System.out.println(sb);*/
sb.append("geekds");
sb.deleteCharAt(3);//删除指定索引对应的字符
System.out.println(sb);
sb.delete(0,3);//包含头,不包含尾
System.out.println(sb);
sb.delete(0,sb.length());//清空缓冲区
System.out.println(sb);
}
private static void methodInsert() {
//在指定位置添加索引
/*如果没有指定位置的索引,就会报索引越界异常
* StringBuffer sb = new StringBuffer();
sb.insert(2, "dongshuai");
System.out.println(sb);*/
StringBuffer sb = new StringBuffer("chuchu");
sb.insert(2, "ds");
System.out.println(sb);
}
private static void methodAppend() {
//append()方法
/*
* 5个引用指向同一个对象
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append(18812300);
StringBuffer sb2 = sb.append(‘@‘);
StringBuffer sb3 = sb.append("geekds");
StringBuffer sb4 = sb.append(‘.‘);
StringBuffer sb5 = sb.append("com");
System.out.println(sb);
System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb3);
System.out.println(sb4);
System.out.println(sb5);*/
StringBuffer sb = new StringBuffer();
System.out.println(sb);
StringBuffer sb1 = sb.append(18812300);
System.out.println(sb1);
StringBuffer sb2 = sb.append(‘@‘);
System.out.println(sb2);
StringBuffer sb3 = sb.append("geekds");
System.out.println(sb3);
StringBuffer sb4 = sb.append(‘.‘);
System.out.println(sb4);
StringBuffer sb5 = sb.append("com");
System.out.println(sb5);
}
}
代码演示:
package com.geekds.stringbuffer;
public class Replace_Reverse {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//StringBuffer的替换和反转功能
StringBuffer sb = new StringBuffer("geekds");
sb.replace(1,3,"eeeee");
System.out.println(sb);
StringBuffer sb2 = new StringBuffer("雨滋春树碧连天,天连碧树春滋雨");
sb2.reverse();
System.out.println(sb2);
}
}
键盘录入反转示例:
package com.geekds.test;
import java.util.Scanner;
public class ReverseTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
String s = reverseString(line);
System.out.println(s);
}
//反转字符串的方法
public static String reverseString(String s) {
StringBuffer sb = new StringBuffer(s);
sb.reverse();
return sb.toString();
}
}
示例:
package com.geekds.stringbuffer;
public class MethodSubstring {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//截取功能
StringBuffer sb = new StringBuffer("上海自来水来自海上");
String s = sb.substring(2);
System.out.println(s);
String s2 = sb.substring(2,7);//包含头不包含尾
System.out.println(s2);
}
}
*通过构造方法
*通过toString()方法
*通过subString(0,length);
示例:
package com.geekds.stringbuffer;
public class StringBuffer_String {
/**
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
string_to_StringBuffer();
stringBuffer_to_String();
}
private static void stringBuffer_to_String() {
//StringBuffer到String的转换
StringBuffer sb = new StringBuffer("geekds");
//通过String的构造方法
String s1 = new String(sb);
System.out.println(s1);
//通过toString()方法,通常用这个
String s2 = sb.toString();
System.out.println(s2);
//通过substring()方法
String s3 = sb.substring(0,sb.length());
System.out.println(s3);
}
private static void string_to_StringBuffer() {
//String到StringBuffer的转换,通过构造方法
StringBuffer sb = new StringBuffer("geekds.com");
System.out.println(sb);
//String到StringBuffer的转换,通过append()方法
StringBuffer sb2 = new StringBuffer();
sb2.append("geekds.com");
System.out.println(sb2);
}
}
测试:把数组转成字符串
把数组中的数据按照指定个格式拼接成一个字符串
举例:
int[] arr = {1,2,3};
输出结果:
“[1, 2, 3]”
package com.geekds.test;
public class SplitJoint_StringBuilder {
/**
* 拼接字符串,即将数组转换为字符串
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1993,1994,1995,1996};
String s = array2String(arr);
System.out.println(s);
}
public static String array2String(int[] arr) {
StringBuilder sb = new StringBuilder();
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(", ");
}
}
return sb.toString();
}
}
面试题
StringBuffer和StringBuilder的区别
StringBuffer是jdk1.0版本的,是线程安全的,效率低
StringBuilder是jdk1.5版本的,是线程不安全的,效率高
String和StringBuffer,StringBuilder的区别
代码演示:
package com.geekds.stringbuffer;
public class StringBuffer_String_Parameter {
/**
* String和StringBuffer分别作为参数传递
* 基本数据类型的值传递,不改变其值
* 引用数据类型的值传递,改变其值
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "geekds";
System.out.println(s);
change(s);//String类虽然是引用数据类型,但是他当作参数传递时,和基本数据类型是一样的。方法一弹栈,里面的s就消失了
System.out.println(s);
StringBuffer sb = new StringBuffer();
sb.append("geekds");
System.out.println(sb);
change(sb);//此处为引用数据类型的值传递,两个引用指向的是同一个对象
System.out.println(sb);
}
private static void change(StringBuffer sb) {
// TODO Auto-generated method stub
sb.append(".com");
}
public static void change(String s) {
// TODO Auto-generated method stub
s += ".com";
}
}
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。
下面是冒泡排序和选择排序的代码演示:
package com.geekds.sort;
public class Bubble_Select_Sort {
/**
* 冒泡排序:轻的上浮,沉的下降
* 两个相邻位置比较,如果前面的元素比后面的大,就换位置
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {124,1543,5461,32,64654,233,234325};
bubbleSort(arr);
//selectSort(arr);
print(arr);
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j + 1]) {
/*int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;*/
swap(arr, j, j + 1);
}
}
}
}
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
/*int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;*/
swap(arr, i ,j);
}
}
}
}
public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
}
/*
* 换位操作
* 1,返回值类型:void
* 2,参数列表:int[] arr, int i, int j
*/
//如果只在本类中用,就把他定义成私有的
private static void swap(int[] arr,int i,int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
前提:数组元素有序
示例:
package com.geekds.sort;
public class Binary_Search {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {12,34,56,78,90,100};
System.out.println(halfSearch(arr,78));
System.out.println(halfSearch(arr,12));
System.out.println(halfSearch(arr,101));
}
/*
* 二分查找
* 返回值类型:int
* 参数列表:int[] arr, int value
*/
public static int halfSearch(int[] arr, int value) {
int min = 0;
int max = arr.length - 1;
int mid = (min + max) >>> 1;
while(arr[mid] != value){ //当中间值不等于要找的值,就开始循环查找
if(arr[mid] < value) { //当中间值小于要找的值
min = mid + 1; //最小的索引改变
}else if (arr[mid] > value) {//当中间值大于要找的值
max = mid - 1; //最大的索引改变
}
mid = (max + min) >>>1;//无论最大还是最小索引改变,中间索引都会随之改变
if(min > max) { //如果最小索引大于了最大索引,就没有查找的可能性
return -1;
}
}
return mid;
}
}
示例:
package com.geekdsarrays;
import java.util.Arrays;
public class Arrays_Test {
/**
* Arrays类的toString()方法,sort()方法,binarySearch()方法
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {234,432,234,6432,345,234,235,3452345};
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.binarySearch(arr, 234));//元素有重复的,不确定找的是哪一个
System.out.println(Arrays.binarySearch(arr, 6432));
System.out.println(Arrays.binarySearch(arr, 3455));//找不到元素时,返回的值是负的插入点减一
}
}
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
常用的操作之一:用于基本数据类型与字符串之间的转换。
package com.geekds.wrap_class;
public class Package_Class {
/**
* 将基本数据类型封装成包装类的好处在于可以再类中定义更多的功能方法操作该数据
* 常用的操作:用于基本数据类型和字符串之间的转换
* 8中基本数据类型:byte,short,int,long,float,double,char,boolean
* 对应的包装类:Byte,Short,Integer,Long,Float,Double,Character,Boolean
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1993;
System.out.println(Integer.toBinaryString(i));
System.out.println(Integer.toHexString(i));
System.out.println(Integer.toOctalString(i));
System.out.println(Integer.toString(i));
}
}
构造方法
package com.geekds.wrap_class;
public class Integer_Test {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
//Integer的构造方法可以传int型或都是数字的string型
Integer i = new Integer("2342ksdf");//数字格式异常,这里面不是纯数字字符串,所以转换出错
System.out.println(i);
}
}
详情看代码:
package com.geekds.wrap_class;
public class Int_String {
/**
* int和String互转
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int__String();//int和String互转的方法
//8中基本数据类型只有Character没有parseXxx方法
//字符串到字符的转换用toCharArray()即可。
//String s = "geekds";
//char c = Character.parseXXX
}
private static void int__String() {
int i = 2016;
//int转成String型,推荐用方式1和方式2
//方式1,用字符串拼接
String s1 = i + "";
System.out.println(s1);
//调用String的valueOf方法
String s2 = String.valueOf(i);
System.out.println(s2);
//方式3,用Integer的toString方法
String s3 = Integer.toString(i);
System.out.println(s3);
//String转int,推荐用方式2
//方式1
String s4 = "2017";
Integer i2 = new Integer(s4);
int i3 = i2.intValue();//将Integer转换为int
System.out.println(i3);
//方式2,使用Integer的parseInt()方法
int i4 = Integer.parseInt(s4);
System.out.println(i4);
}
}
package com.geekds.wrap_class;
public class JDK5_int_Integer {
/**
* 自动装箱:把基本数据类型转换为包装类类型
* 自动拆箱:反之
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 3003;
Integer i1 = new Integer(i);//装箱
int i2 = i1.intValue(); //拆箱
Integer i3 = 3006; //自动装箱,把基本数据类型转换为对象
int i4 = i3 + 6003; //自动拆箱,把对象i3转换为基本数据类型后,再与6003相加
//Integer i5 = null; 底层用i5调用的intValue()方法,现在i5为null,null调用方法会出现空指针异常
//int i6 = i5 + 7007;
//System.out.println(i6);
}
}
下面是Integer的面试题
package com.geekds.wrap_class;
public class Integer_InterviewQuestion {
/**
* -128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取
如果超过了byte取值范围就会再新创建对象
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer i1 = new Integer(97);
Integer i2 = new Integer(97);
System.out.println(i1 == i2); //false
System.out.println(i1.equals(i2)); //true
Integer i3 = new Integer(197);
Integer i4 = new Integer(197);
System.out.println(i3 == i4); //false
System.out.println(i3.equals(i4)); //true
Integer i5 = 127;
Integer i6 = 127;
System.out.println(i5 == i6); //true
System.out.println(i5.equals(i6)); //true
Integer i7 = 128;
Integer i8 = 128;
System.out.println(i7 == i8);
System.out.println(i7.equals(i8)); //true
}
}
黑马程序员——Java基础---StringBuffer、Arrays、包装类
标签:
原文地址:http://blog.csdn.net/u010941185/article/details/51737910